Desafio
Codifique um cookie ASCII de um tipo de acordo com a entrada.
Entrada
- O tipo de biscoito. Essa é uma das três seqüências de caracteres: "Simples", "Chocolate" ou "Nozes". Podem ser argumentos de função, stdin (ou equivalente mais próximo) ou argumentos de arquivo.
Resultado
- Um cookie ASCII. Ver abaixo.
Devemos ser
___
/ \
| |
\___/
para entrada simples,
___
/. .\
| . |
\___/
para entrada de chocolate e, finalmente,
___
/^ \
|^ ^|
\___/
para entrada de porca.
Outra informação
- Este é o meu primeiro desafio, é o mais simples possível. O feedback construtivo é muito apreciado.
- Use qualquer meio para fazê-lo.
- Espaços à direita são bons.
- Este é um desafio de código de golfe, pelo que a entrada mais curta no final de 9 dias (quarta-feira, 12 de agosto de 2015) vence.
Obrigado!
O vencedor é Jakube usando Pyth com 41 bytes. Obrigado a todos que participaram. Agora me encarregarei de apresentar desafios mais complicados.
Respostas:
Pitão,
4241 bytesExperimente on-line: Conjunto regular de entrada / teste
Explicação:
fonte
Ruby, 73
Esta é uma função lambda anônima. Aqui está em um programa de teste:
Ele apenas usa a primeira letra do tipo de cookie (em maiúsculas) e leva o módulo 3 para obter um índice no intervalo
0..2
. Em seguida, ele retorna a cadeia que representa o cookie, com as cadeias apropriadas incorporadas nos lugares certos.fonte
ord
método pode fazer se você o chamar para uma string inteira? Minha primeira idéia foi formatação:->s{" ___\n/%1$s \\\n|%1$s %1$s|\n\\___/"%'^. '[s.ord%3]}
tr
prova ser mais curto:->s{' ___↵/% \↵|% %|↵\___/'.tr ?%,'^. '[s.ord%3]}
s[0] --> s
, nunca me ocorreu tentar. Seu código parece não dar a resposta certa para a caixa de chocolate, pois as lascas de chocolate estão em lugares diferentes das nozes. No entanto, existem algumas idéias úteis lá, examinarei-as mais tarde. Eu não useitr
ou%
antes.tr
sintaxe 's é apenas um personagem não envolvido na arte cookie que eu usei como espaço reservado..)Python 2.7.6, 99 bytes
Esse algoritmo baseia-se no fato de
hash(cookie)%3
fornecer 0 quandocookie = "Plain"
, 1 quandocookie = "Nut
e 2 quandocookie = "Chocolate
. Se alguém souber como diminuir esse código, informe-me nos comentários.fonte
C: 122
Explicação depois de terminar o golfe.
Exemplo de uso:
fonte
CJam,
4948 bytesExperimente online no intérprete CJam .
Como funciona
No final, o CJam imprime automaticamente todos os elementos na pilha.
fonte
Javascript (ES6), 90
Esta é uma função de seta anônima. Ele usa o comprimento da entrada para determinar qual cookie desenhar.
Explicação:
Testar:
fonte
BrainFuck,
481447436 bytesPor que não o BrainFuck ?, o programa provavelmente pode ser mais jogado, mas acho que é bem legal.
fonte
C # Com recuo e quebra de linha
Golfe (225 caracteres)
fonte
String C= Console.ReadLine(),E=
... etc?C # 6, 105 bytes
Então, quase consegui esses sub-100 bytes, mas não faço ideia de onde extrair os últimos bytes: C
fonte
Pitão,
5854535250 bytesEu não acho que isso possa ser jogado mais. Eu estava realmente tentando colocar isso em menos de 50 bytes
fonte
". . . " -> *". "3
JavaScript (ES6), 72 bytes
Tão simples quanto possível ... novas linhas são contadas como 1 byte cada.
Demo
Como é o ES6, esta demonstração só funciona no Firefox e Safari por enquanto.
fonte
Commodore 64 BASIC, 181 bytes
Notas:
Em vez de barras invertidas,
\
os caracteres SHIFT-M foram usados, para barras/
- SHIFT-N e para tubos|
- SHIFT-T. Foi utilizado o SHIFT-Z (sinal de losango do cartão)^
. De fato, os caracteres não importam, pois todos ocupam um byte cada.Como no C64, cada comando (PRINT, INPUT, THEN, etc.) ocupa 2 bytes na memória (ou até mesmo um IIRC), vale a pena tentar o idioma BASIC (no entanto, foram necessários mais bytes do que eu esperava).
O tamanho do programa foi calculado medindo a memória livre antes de digitar o programa (38909 bytes) e depois (38728 bytes), usando o
PRINT FRE(0)+65536
comando, fornecendo 181 bytes de diferença.Código testado e capturas de tela preparadas com esta ferramenta: http://codeazur.com.br/stuff/fc64_final/ (GPL).
Imagens:
fonte
Lua 5.3,
113 bytes112 bytesEle usa grande parte do operador ternário e da concatenação de strings, e eu espremi todo o espaço em branco que não faz parte da saída em si.
fonte
Java
258217 caracteres / bytesGolfe
Original
fonte
LUA 270 caracteres 270 bytes
fonte
cookie
ac
, espaço em branco remover durante ifs, remover os desnecessáriosio.read()
s, a primeira e última linha de um cookie é sempre o mesmo, ....LOLCODE 265 caracteres
Run
fonte