Muitas pessoas aqui provavelmente são leitores ávidos do XKCD. Então, acho que desafiaria vocês a fazer algo que Megan pode fazer facilmente: criar um script que gere milhares de parábolas tranquilizadoras sobre o que os computadores nunca podem fazer.
Seu script
- Pode ser escrito em qualquer idioma
- Deve ter código de golfe
- É necessário incluir uma entrada (no
stdin
idioma equivalente ou no seu idioma) no número de parábolas que ele cuspirá (você pode assumir que isso não excederáMAX_INT
ou equivalente). - Produzirá várias parábolas geradas aleatoriamente .
As parábolas são as seguintes
- Começa com
'Computers will never '
- A seguir, um dos 16 verbos em inglês exclusivos que você pode escolher livremente para otimizar seu programa, mas deve incluir
code-golf
eunderstand
. - Em seguida, um dos 16 substantivos em inglês exclusivos que, novamente, você pode escolher livremente otimizar seu programa, mas deve incluir
a salad
ean octopus
. - A seguir, uma das 16 cláusulas exclusivas em inglês que você pode escolher livremente para otimizar seu programa, mas deve incluir
for fun
eafter lunch
. - Termina com um caractere de nova linha (
\n
ou equivalente)
Assim, por exemplo, se a entrada for 2
, uma saída válida seria
Computers will never code-golf a salad for lunch
Computers will never hug a tree in vain
O tamanho do programa é contado em bytes, não em caracteres (portanto, sem rabiscos unicode). As brechas padrão não são permitidas.
Este é o meu primeiro desafio, por isso, se devo fazer algumas mudanças óbvias, comente.
Edit: Estou pensando em subtrair o tamanho do dicionário a partir da contagem de bytes, para incentivar a 'compactação' do dicionário. Vou ver nas respostas futuras se isso é remotamente viável; se for, você pode contar com um bônus.
Respostas:
CJam,
238232 (ou 209) bytesIsso usa muitos verbos / substantivos / cláusulas de respostas já postadas, mas alguns também são novos. Tenho base convertido os caracteres para raspar alguns bytes extras.
A string convertida base pode ter 24 bytes a mais (para obter uma solução de 209 bytes ; observe que você deve considerar a contagem de caracteres em vez da contagem de bytes, pois todos os caracteres têm um código ASCII inferior a 255, mas o site ainda considera alguns com unicode ), mas queria que a sequência consistisse apenas caracteres ASCII imprimíveis.
Apenas para referência, aqui está a versão de 209 bytes:
Toma o número de linhas para imprimir a partir de STDIN, como:
Saída:
Experimente online aqui
fonte
Aqui está uma abordagem ligeiramente diferente:
Python,
368308297bytesEDIT, eu realmente joguei desta vez. Raspou 60 caracteres.
Aqui está o truque de golfe do qual mais me orgulho:
Eu nem sabia que python poderia fazer isso! Aqui está uma explicação mais simples:
atribui aeb a 0 e 1 e, em seguida, a 1 e 2 e, em seguida, a 2 e 3.
Isso usa a biblioteca de linguística do NodeBox para gerar uma lista de verbos / substantivos / cláusulas e, em seguida, seleciona-os aleatoriamente.
Essa biblioteca não é ótima para gerar palavras aleatórias (daí os 368 bytes), mas o interessante dessa abordagem é que você recebe algumas parábolas tranquilizadoras aleatórias. Aqui está o que eu quero dizer.
Mas, ei, não acho que o programa de outra pessoa gere o ditado: "Os computadores nunca impressionarão um criador de animais por bolo de cinzas".
Aqui está uma versão não destruída (574 bytes):
E, finalmente, mas definitivamente não menos importante, aqui estão algumas das minhas parábolas tranquilizadoras favoritas, que eu prevejo que se tornarão frases realmente populares nos próximos 10 a 15 anos.
e meu favorito pessoal:
fonte
from random import choice as C
pode serfrom random import*;C=choice
for i in ' '*(something)
para que você possa trivialmente salvar dois bytes de remover o espaço entrein
e' '
JavaScript ES6, 331
336bytesMostrar snippet de código
Escolhi palavras que funcionam como verbos e substantivos para encurtar a lista, mas deixe-me saber se isso não é permitido. Experimente acima usando Snippets de pilha (o código foi formatado para usar o ES5) ou em http://jsfiddle.net/5eq4knp3/2/ . Aqui está um exemplo de saída:
fonte
s
para passar pelas outras partes do discurso na lista. Os dois tildes não são operadores bit a bit, e funcionam apenas como uma maneira mais curta de fazerMath.floor()
.r=s=>12
é o mesmo quefunction r(s){return 12}
, apenas mais curto. Veja também os documentos no MDN .~~
é como um tipoMath.floor
(mas se comporta de maneira diferente para números negativos) e=>
é uma definição de função no estilo ES6 com um limitethis
.Python -
390 385383Exemplo aleatório de saída:
fonte
Perl - 366
Aqui está um teste:
fonte
CJam,
353317301 bytesEstou usando a lista de palavras de Falko, para ser justo, para que a única diferença no golfe se deva aos idiomas e não ao conteúdo (eu poderia alterar a lista de palavras se as pessoas começarem a jogar também).
fonte
NetLogo, 396
Também usei a lista de palavras de Falko, com duas exceções (que não alteram a duração do programa).
Dependendo de como você define "programa", é possível remover os cinco e os três primeiros caracteres, obtendo uma pontuação de 388.
fonte