Dados dois inteiros positivos X e Y, produza qualquer combinação dos três animais da arte ASCII a seguir, de modo que a saída contenha exatamente X vírgulas ( ,
) e períodos Y ( .
), se possível.
Coala: 1 vírgula, 2 períodos
<.,.>
Caranguejo: 2 vírgulas, 2 períodos
,<..>,
Commapillar: 3 ou mais vírgulas, 1 período
<,,,.>
ou
<,,,,.>
ou<,,,,,.>
ou<,,,,,,.>
ou<,,,,,,,.>
etc.
Se nenhuma combinação desses animais puder produzir exatamente X vírgulas e períodos Y, produza um único commaleão que camuflará a falha:
~<.,,>~~
Os animais de saída podem estar em qualquer quantidade e ordem. Eles podem estar separados por uma sequência de caracteres, espaço ou nova linha ou por uma lista em que cada animal é um elemento.
Por exemplo, para X = 7, Y = 5, todas seriam saídas válidas (separadas por linhas vazias):
<.,.> <.,.> <,,,,,.>
<.,.>
<,,,,,.>
<.,.>
,<..>, <.,.> <,,,,.>
<,,,,.>
,<..>,
<.,.>
,<..>, <,,,.> ,<..>,
[",<..>,", ",<..>,", "<,,,.>"] (list syntax depends on language)
Observe que (pelo menos neste exemplo) existem vários conjuntos de animais que podem funcionar. Mas lembre-se de que você só precisa gerar uma solução válida, se houver. O número de animais ou o número de animais distintos não importa.
Para entradas como X = 3, Y = 3 ou X = 1, Y = 5 onde não há solução, a saída será sempre
~<.,,>~~
talvez em uma lista de elemento único.
O código mais curto em bytes vence.
fonte
__int128
e eu estava com preguiça de usar uma biblioteca bignum. Aqui é o despejo CSV: pastebin.com/ght5xkRu a primeira linha e coluna são os valores X e YRespostas:
Ruby, 139 bytes
Função Lambda, recebe x e y como argumentos e retorna uma string
Se existe uma solução, isso pode ser feito com todos os coalas + commapillars ou todos os coalas + caranguejos.
O princípio é usar um mínimo de commapillars. Se o número for ímpar, usamos 1 commapillar. se mesmo usarmos 0 commapillars, a menos que haja mais vírgulas que pontos, nesse caso, usaremos 2.
O número de períodos usados em não-mapilares (caranguejos + coalas) é necessariamente par, e o número de não-mapilares é metade
(number of periods)-(number of commapillars)
. Se houver vírgulas insuficientes para todos os coalas ou demasiadas para todos os caranguejos, nenhuma solução será possível. Caso contrário, retornamos uma solução.Comentado no programa de teste
usa "falha" em vez de camaleão para maior clareza
Saída
fonte
Befunge,
249218 bytesExperimente online!
Agora, isso se baseia no algoritmo da resposta Ruby da Level River St , que forneceu maior margem para o golfe e uma redução significativa no tamanho em comparação à minha solução original.
fonte
C # 6,
321303 bytesLigue
F()
. As outras duas funções são ajudantes. demo repl.itfonte