Ninguém sabe ao certo o que o emoticon >:U
pretende representar, mas muitos estudiosos acreditam que ele se parece com um pato bravo . Vamos assumir que é o caso.
Tarefa
Dado um número inteiro n entre 0 e 3 inclusive, imprima ou retorne
quack
se n = 0,
>:U
se n = 1,
U U
> : U U
> U U
> : U U
UUU
se n = 2, ou
>:U >:U
>:U >:U >:U
>:U >:U >:U >:U
>:U >:U >:U
>:U >:U >:U
>:U >:U >:U
>:U >:U >:U >:U
>:U >:U >:U
>:U>:U>:U
se n = 3.
Você pode assumir que a entrada sempre será válida. Não deve haver espaço à esquerda na saída, mas qualquer quantidade de espaço à direita é boa. Os patos (com a possível exceção de @cobaltduck) não toleram brechas. O menor código em bytes vence.
Respostas:
CJam,
1089085 bytesObserve que alguns caracteres não são imprimíveis. Experimente online!
fundo
As duas primeiras saídas são incompressíveis no CJam.
A compactação da última saída é simples. Depois de eliminar todos os feeds de linha, podemos dividir a sequência resultante nas ocorrências de
>:U
e calcular o comprimento de cada sequência de espaços resultante.Isso resulta na matriz
que podemos armazenar eficientemente convertendo-o da base 22 para a base 269, produzindo os dígitos
Como cada dígito é menor que 256 , podemos armazená-lo como um único byte.
Por fim, compactar a terceira saída fica mais fácil se transpormos linhas e colunas:
Contando mais uma vez os espaços entre caracteres que não são espaços em branco, obtemos a matriz
que se torna
quando transcodificado da base 22 para a base 269.
Como funciona
fonte
:D
entre as duas cordas.Java,
303286 bytesGuardado 17 bytes graças a @VoteToClose!
Na verdade, não era para ser o mais curto, eu apenas pensei que seria divertido tentar em Java.
Cria uma lista de variáveis de sequência que representam sequências comuns, cria uma matriz de todas as saídas e imprime a correta.
Ungolfed:
Esta é a minha primeira resposta neste site. Por favor, diga-me se fiz algo errado.
fonte
D+A
eC+B
aparece com freqüência suficiente para ser jogado mais em 2 novas variáveis. Também tenho a menor sensação de que usando uma matriz com um loop pode ajudar, mas eu ainda não descobri como ainda ...05AB1E ,
162159157 bytesCódigo
Droga, muito tempo, mas é pelo menos uma coisa:
Experimente online!
Explicação
A primeira parte do código existe de
">:U"V
, que defineY
para essa sequência. Depois disso, apenas verificamos se a entrada é igual a 3. Isso é feito naI3Qi
parte. Se igual, imprimimos a pega gigante:N = 3
Começa pela primeira vez, com
ð16×
apenas 16 caracteres de espaço. Depois disso, há um número7166b
. Isso cobre a">:U "
parte, com uma pequena ajuda da Retina :). Eu usei esse script para converter a string em um número binário. Depois disso, chegamos à1ð:0Y:
parte, que substitui todos1
por um caractere de espaço e todos0
porY
, que foi definido como>:U
. Depois disso,D
duplicamos essa string, armazenamos-aX
usandoU
eJ
oin na pilha. Nós pop-lo usando,
, que imprime a seqüência completa com uma nova linha. Todos os outros depois disso são todos baseados no mesmo princípio. A instrução if termina no segundo}
.A conversão completa pode ser encontrada aqui .
N = 2
Agora verificamos se a entrada é igual a 2. Isso é feito na
¹2Qi
parte. Depois disso, se for igual, pressionamos o caractere de espaço 4 vezes usandoð4×
. Depois disso, empurramos a" U U"
corda e a armazenamos usando©
(ideia descaradamente roubada de Jelly: p). Novamente colocamosJ
na pilha e imprimimos isso com uma nova linha. Depois disso, empurramos a"> :"
string, recuperamos o" U U"
uso®
,J
colocamos na pilha eD
duplicamos essa string e imprimimos ambas na mesma linha.Teste curto, o que isso fará
" > "?®,
:?Depois de imprimir a string acima, obtemos a duplicata da segunda linha da face e a imprimimos (já que é a mesma da segunda linha).
A última parte abordada neste caso é:
N = 1
Este é mais fácil de explicar:
N = 0
fonte
Vitsy ,
172171159 bytesOh puxa. Se eu queria algo que demonstrasse o poder dos métodos, entendi.
Experimente Online!
Como isso funciona é chamando vários métodos por si só. A explicação está abaixo:
Esse código é ridículo. Sua forma detalhada é:
fonte
JavaScript (ES6), 163 bytes
Explicação
Usa minha compactação go-to com JavaScript: codificação de comprimento de execução. Os dígitos
1
para9
mapear para muitos espaços,0
mapeiam para a cara de pato bravo e qualquer outro caractere permanece o mesmo.fonte
Japt,
1161051029996 bytesContém um não imprimível. Teste online!
Como funciona
As duas primeiras seqüências de caracteres não são compactadas. O terceiro é compactado simplesmente substituindo cada execução de espaços por seu comprimento e depois
" U3U"
por"z"
. O último é mais complexo:>:U
por1
.191\n
por4
. (4
não é usado em nenhum outro lugar da string.)10
-255
ou0A
-FF
) para o caractere com esse código de char.A sequência resultante tem apenas
2119 bytes, mas a descompressão ocupa outros3129.Após descompactar as strings, simplesmente colocamos o item na posição
U
, na entrada. (A matriz é organizada[0,3,2,1]
porque há um erro que faz a contagem do final da matriz em vez do início.)fonte
Matl ,
283182 bytes101 bytes salvos graças ao @Adnan!
Isso usa números decimais para codificar índices
0
...3
para os quatro caracteres dos casos 2 e 3. Talvez os números decimais possam ser compactados usando a codificação base-64, mas charlatão!Para o caso 3, é usado um truque muito bom sugerido por @Adnan: defina seqüências binárias para codificar cada linha, onde
0
e1
corresponda ao espaço e>:U
respectivamente.Experimente online!
fonte
1
espaços com e0
pela>:U
sequência. Não sei se isso ajudaria.Goma de canela, 76 bytes
Não concorrente desde que o Cinnamon Gum foi criado após esse desafio.
Experimente online.
Explicação
O primeiro byte
l
especifica o modo: nesse caso, ele diz ao Cinnamon Gum para entrar no modo de tabela de pesquisa. O chiclete de canela descomprime o restante da corda (que foi compactadazopfli --deflate
) para isso:Em seguida, ele se divide
;
, coloca cada par de valores-chave (com&
como delimitador) em um dicionário e geradictionary[input]
.fonte
JavaScript ES6,
232223203188 bytesEconomizou
2944 bytes graças a ETHproductions!Teste!
Mostrar snippet de código
fonte
1
e0
s ser feito em um número trinário?r+g+g+g+r
ag+g+g+r
e ajustando a string em conformidade.GML, 265 bytes
Uma porta da excelente resposta de @ kittycat3141, com a sugestão de avançar ainda mais com duas novas variáveis (que chamei de G e H) de @VoteToClose. Também consegui reduzi-lo ainda mais com a sintaxe relativamente flexível da GML.
fonte