O desafio é escrever o código mais elaborado, incorporado na arte ASCII que lê e imprime "DFTBA". Por exemplo, o seguinte lê DFTBA:
oooooooooo. oooooooooooo ooooooooooooo oooooooooo. .o.
`888' `Y8b `888' `8 8' 888 `8 `888' `Y8b .888.
888 888 888 888 888 888 .8"888.
888 888 888oooo8 888 888oooo888' .8' `888.
888 888 888 " 888 888 `88b .88ooo8888.
888 d88' 888 888 888 .88P .8' `888.
o888bood8P' o888o o888o o888bood8P' o88o o8888o
E o seguinte, no bash imprime DFTBA
echo "DFTBA"
O desafio é escrever um que faça as duas coisas.
Condições vencedoras
Respostas válidas (todas as condições, a meu critério)
- Pode ser claramente lido como DFTBA
- Imprimir DFTBA quando executado
- Deve ser funcional sem conexão à Internet
- tem letras de igual altura
- não deve ter mais de 80 colunas
- não deve ter mais de 10 linhas
Pontos (soma mais alta ganha)
- Linhas * colunas / 32
- Legibilidade: 25 para legível, 50 para muito claro
- 1 ponto para cada caractere diferente de espaço em branco usado
Restrições
Eles podem ser usados para alguma coisa, portanto, todas as respostas são assumidas como liberadas para o domínio público. Se você não puder ou optar por não divulgar sua resposta ao domínio público: poste um comentário / resposta à pergunta original dizendo "A resposta criada e / ou compartilhada por mim, pode não ser considerada de domínio público" .
Respostas de domínio não público também são bem-vindas! Apenas certifique-se de especificar :-)
O que é o DFTBA?
Às vezes, significa "Não se esqueça de ser incrível", mas nem sempre ... Longa história ... Essa música relacionada pode ajudar a explicar (ou confundir).
fonte
Respostas:
(Fiz uma redação completa aqui , pois é bastante extenso o modo como cheguei a esses dois resultados)
Brainfuck, faixa ASCII completa de 0 a 255: 80x10 = 800/32 = 25 + 25 + 219 = 269
Existe uma linha no meio desta linha superior que não é muito estreita, mas essa é apenas a exibição aqui no CodeGolf. Se você baixar o arquivo original no link acima e visualizá-lo no Brainfuck Developer ou no Notepad em vez do Wordpad, por exemplo, ele ficará correto assim .
Brainfuck, intervalo ASCII da parte 0 a 127: 80x10 = 800/32 = 25 + 25 + 95 = 145
fonte
\s
regex (espaço em branco), string a array |> unique |> length.Pontuação Piet Incerta (153ish)
Entendo que isso não se encaixa estritamente nas especificações (exigindo arte ASCII), no entanto, o código fonte fornece um DFTBA muito legível. O rastreamento está abaixo.
Piet ignora todas as cores que não significam nada. Como resultado, usei cinza como a "cor do comentário" genérica para delinear e afins. O cinza não é interpretado (como você verá no traço). Eu queria deixar claro quais pixels estavam no programa e quais não estavam.
Eu usei 15 cores, que são 13 sem espaço em branco. Tem 89x32 pixels, embora possa ser mais compactado. Eu usei 4 códigos op (subtrair, dividir, empurrar e outputc). Talvez se usando a pontuação como eu pensaria, 153?
Provavelmente não garante uma pontuação, mas foi um exercício interessante. Como nunca usei Piet antes, nunca fiz tanta programação de tentativa e erro! Eu precisava de npiet extensivamente, e seu rastro. Ainda não consigo descobrir como o movimento do cursor funciona com alguma estabilidade!
Como funciona:
fonte
Malbolge (
7180 x 10) / 32 + 25 + 94 =141,1875144Atualização: adicionado mais espaçamento entre as letras para aumentar a pontuação.
Testado com o intérprete oficial de Malbolge. Obviamente, não é difícil imprimir texto estático usando Malbolge. A codificação usada por Malbolge quase garante que você terá todo o conjunto de caracteres ASCII imprimíveis.
Explicação do código (as pessoas disseram que não o entenderam):
(Para mais informações sobre Malbolge, consulte http://esolangs.org/wiki/Malbolge ).
Primeiro, vamos normalizar o código para as operações fornecidas na página acima:
Observe também que após cada ciclo de instruções, a instrução executada é recodificada e o ponteiro de código e o ponteiro de dados são aumentados em 1.
No início,
C
(código ptr)= D
(dados ptr)= 0
. Isso significa[D] = 'b' (98)
e ai
instrução está selecionada. Então, saltamos para o endereço 99. (C
é definido primeiro como 98 e depois aumentado), o ponteiro de dados agora é 1.Aos 98, há uma série de NOPs (
o
). Estes têm o efeito que todos eles são re-codificado e queC
eD
são incrementados. A próxima instrução real (*
) é encontrada no endereço 140, agoraC=140
e agoraD=42
.*
gira à direita (ou divide por três) no que o ponteiro de dados está apontando e armazena de volta na memória e no acumuladorA
.[42] = 'x' (120), so A <- [42] <- '(' (40)
.Outra linha de NOPs causa
C=154 (p)
eD=62 ( [D]='j' (106) )
.p
é o operador louco . Não vou reproduzir a tabela aqui, mas o que acontece éA = [D] = crazy(A, [D])
.A
ainda é 42,[D]
é 106, o que significacrazy(A, [D]) = 29504
.<
, que é produzido. Ele gera o acumulador, que é 29504, como um caractere ASCII.29504 % 256 = 68
, ou sejaD
, agora temos o D.fonte
Javascript (80 x 10) / 32 + 25? + 94 = 144
Código:
Demonstração: http://jsfiddle.net/4hyyS/3/
Para adicionar alguma explicação:
Primeiro mapeio
Number.prototype.toString
para cada letra minúscula:Isso me permite usar as letras minúsculas com eficiência.
Em seguida, construo a string 'DFTBA' convertendo números em caracteres, por exemplo:
(Eu poderia ter usado
fromCharCode
outoString(36)
para todos os personagens, mas isso seria muito fácil)Para preencher caracteres extras e ofuscar ainda mais o código, usei alguns truques para criar os números:
Etc.
Para caracteres que não são usados no código real, eu os soltei em blocos de comentários
/* ... */
ou seqüências de caracteres" ... "
.Comecei com uma grade de 80 x 10, depois as reduzi às minhas letras, depois ajustei meu código para se ajustar a isso (também fica melhor nessa fonte, a última
|
é apenas o cursor):fonte
Perl (75 x 7) / 32 + 25 + 59 ≈ 107,4
Eu diria o que faz, mas isso arruinaria o obfu, não seria;)
fonte
count_char
passar por isso e esqueci de excluir espaços em branco.C #, (71 * 7) / 32 + 25 + 45 = 85,53
Meus primeiros quebra-cabeças de programação resposta aos ! C # não é realmente muito bom para esses jogos ...
fonte
Python, (69 * 7) / 32 + 25 + 49 = 89
Não é fácil fazê-lo em Python por causa do recuo e espaço em branco. Então, fiz uma de muitas coisas para legitimar o recuo:
A legibilidade ainda pode ser um pouco melhorada ...
fonte
C, (55 * 8) / 32 + 25 + 55 = 93,35
É muito fácil aumentar as letras e usar mais alguns caracteres.
fonte
Java
fonte