Hiku executável que gera um haiku [fechado]

37

Enigma:

Escreva um programa curto de três linhas que:

  • possui 5/7/5 sílabas por linha quando lida em voz alta
  • produz um haiku quando executado.

Um exemplo de um programa com a estrutura correta, mas com saída não haiku, é (Python):

>>> for x in range(3):
...     print "EXTERMINATE HUMANS"
... # I am a Dalek.
... 
EXTERMINATE HUMANS
EXTERMINATE HUMANS
EXTERMINATE HUMANS

(O comentário é um pouco obscuro.)

É lido em voz alta como:

para x no intervalo três

impressão HUMANOS EXTERMINADOS!

Eu sou um Dalek.

Qualquer idioma é aceitável. Para fins de leitura em voz alta, símbolos como !@#$%^&*()_+podem ser ignorados, se você quiser, ou pronunciados em voz alta, admitindo algo como Waka Waka Bang Splat . (Tenho certeza de que haverá uma entrada Perl como !***(!:, )(*@@@#, )_(*)!.)

Pontos extras se o código ou a saída forem especialmente engraçados ou especialmente zen.


Edit: Se o seu idioma requer clichê antes que ele possa fazer algo interessante ( #include <iostream>?), Fico feliz em ignorar o clichê.


Aceitei o haiku Common Lisp de Paul Richter com o argumento de que me fez rir por uns bons cinco minutos.

Menção honrosa pela flexão criativa de regras de Timwi ( saída do compilador ?!) e pela linha extremamente memorável"Static void. I long for you."

Agora esta pergunta termina;

Muitos outros haikus aguardam.

Continue postando!

Li-aung Yip
fonte
Gostaria de sugerir que você evitar o uso de gato-como línguas ...
MrZander
11
"Dalek Simulator" é 6 sílabas (ou talvez "# Dalek Simulator" seja 7 sílabas?) - de qualquer maneira, não deveriam ser 5 sílabas para a terceira linha?
Paul R
@PaulR: Você está certo. Editado para algo que contém 5 sílabas. ;)
Li-aung Yip
11
Bônus para uma solução Piet?
Ugoren
11
@ugoren: Se você puder fazer com que um programa Piet pareça um haiku, tenho certeza de que ganharia o Grande Prêmio. ;)
Li-aung Yip

Respostas:

46

Lisp comum

Parênteses estão em silêncio!

Programa:

((lambda (&rest foo) 
   (list foo (cons 'truly foo) foo))
 'this 'is 'lisp 'haiku)

Leia como:

lambda and rest foo
list foo cons truly foo foo
this is lisp haiku

Saída:

((THIS IS LISP HAIKU) (TRULY THIS IS LISP HAIKU) (THIS IS LISP HAIKU))
Paul Richter
fonte
Isso me rachou por uns bons cinco minutos. Bem feito!
Li-aung Yip 16/05
78

C #

Programa:

#warning Lonesome
class _{
    static void Eye(long forYou='
        ){ /* My program ends here. */ ;}}

Ler:

Warning: Lonesome class.
Static void. I long for you.
My program ends here.

Saída do compilador :

#warning: 'Lonesome'        (read: hash warning lonesome)
Empty character literal     (read: empty character lit’ral)
Newline in constant
Timwi
fonte
14
Saída do compilador ?! Interpretação criativa das regras - eu gosto. Ele também é estranhamente zen ...
Li-Aung Yip
2
Isso é poesia do compilador ... +1!
Cristian Lupascu
6
Eu gostaria de poder votar isso mais de uma vez.
Gareth
@Gareth ditto !!
Gaffi
11
Eu literalmente ri alto da poesia da solidão do compilador. Estou sádico? Nova linha em constante.
Alpha
48

Piet, 867 executando blocos coloridos

Grande Prêmio, você diz? Isso tem tamanho de codel 2.

um haiku que se imprime

Saída:

SPRING EVER RETURNS
NEVER EXACTLY THE SAME
THIS IS NOT A QUINE

Esse desafio foi divertido! Eu escrevi um codificador de instruções Piet que pega instruções e as traduz em um script Piet. É um trabalho curto a partir daí gerar código para imprimir uma determinada string. Eu dediquei uma pequena (mas eficaz) quantidade de esforço ao jogar golfe no código Piet enquanto usava apenas instruções de codel único.

Eu então fiz uma fonte de pixel. Para cada pixel em um personagem, divido-o em 4 codels: 2 pretos e 2 executados. O primeiro codel encontrado não é de execução, portanto, se um segmento de um caractere tiver n pixels, por exemplo, isso corresponderá a 2 * n * -1 instruções.

As linhas abaixo dos lados invertem o ponteiro de direção e movem-no para baixo em 2 pixels, levando-o para a próxima linha. Assim, as instruções são revertidas em todas as outras linhas.

Depois que eu tive o código para produzir "texto incorporado no texto", ficou divertido. Provavelmente escrevi 20 haiku pelo caminho, mas acabei me estabelecendo. Ajustando a fonte; adicionando / removendo serifas, cantos arredondados, alterando altura / largura etc., pude alterar o número total de pixels não brancos na imagem, de modo que o código Piet se encaixasse exatamente no texto da imagem.

Bônus! Você pode fazer seu próprio haiku quinelike! http://pastebin.com/zxc9V3UX

boothby
fonte
Existe algum lugar online para testar isso? Se funcionar, vale definitivamente um +1.
Gareth
Encontrei um aqui , mas o programa não deu saída :-(
Gareth
@Gareth, Piet é bastante conhecido por seus péssimos editores / intérpretes, e eu não consegui que o editor on-line da npiet produzisse resultados para qualquer coisa. O script publicado funciona no PietIDE .
Boothby
11
Infelizmente, esse é um problema no Chrome no meu Mac. Vou ver se consigo baixar um que funcione amanhã.
Gareth
11
Eu ouvi você gostar de haiku, então eu coloquei um haiku na sua foto de um haiku para você ter um haiku quando você haiku.
Li-aung Yip
23

Perl

$_
= "Repeating myself"
;print"$_\nis like $_.\n$_.\n";

Como ler em voz alta:

dollar underscore
equals repeating myself
print nis like line noise.

Saída:

Repeating myself
is like Repeating myself.
Repeating myself.
Timwi
fonte
5
Não é um policial ler o sublinhado do dólar em voz alta na primeira linha, mas depois pular (junto com alguns outros caracteres) na terceira linha?
dspyz
Sim, é realmente :)
Timwi
19

INTERCAL

O INTERCAL possui recursos limitados de saída, mas "recursos limitados" nunca me impediram de escrever um programa INTERCAL!

DO READ OUT #18
+#3301
+#214
PLEASE GIVE UP

Por favor, leia isto como:

Do read out eighteen,
Three thousand three hundred one,
Two hundred fourteen.

(Observe que meu clichê está no final do programa, e não no começo.)

O programa produz a saída:

XVIII

MMMCCCI

CCXIV

Que, quando falado em voz alta, diz:

Ex vee eye eye eye,
Em em em cee cee cee eye,
Cee cee ex eye vee.
caixa de pão
fonte
11
Eu acho que você precisa de terapia.
precisa
13

CoffeeScript

Com a língua firmemente na bochecha, apresento o CoffeeScript:

here = "my haiku"
were_doomed() unless 1 is 1
alert Date.now()

Pronunciado:

Here is my haiku
We're doomed unless one is one
alert date dot now

Se o tempo estiver correto (!), Sua saída poderá ser, por exemplo, 1337181872717, pronunciada:

one three three seven
one eight one eight seven two
seven one seven

Considerando que minha primeira execução foi um microssegundo de uma resposta válida do haiku, acho que isso é zen o suficiente para se qualificar!

NB: Eu ficaria feliz em ouvir alternativas suficientemente zen para minhas duas primeiras linhas (reconhecidamente fracas).

Johno
fonte
+1 para "se o seu tempo for bom" e "um três três sete"
aplaude
10

J

Programa:

p:i.4
*:*:*:i.3
!8

Leia (substituindo nomes verbais):

Prime Integers Four
Square Square Square Integers 3
Factorial Eight

Saída (ler números em voz alta):

2 3 5 7
0 1 256                          (Read: Zero One Two-Fifty-Six)
40320                            (Read: Forty Three-Twenty)
comando
fonte
8

Python

Código:

for _ in range(1,3):
    print 'Hi ' * 5, 'there ' *  2 * (-1+_) 
print 'I now', 'go ' * 3

Como ler:

for in range one three
print hi five there two one plus
print i now go three

Saída:

Hi Hi Hi Hi Hi  
Hi Hi Hi Hi Hi  there there 
I now go go go 

Exemplo de trabalho: http://ideone.com/hDniW

Cristian Lupascu
fonte
7

logotipo

Aqui está um procedimento Haiku que também é um procedimento quine (fácil por causa da capacidade de introspecção do logotipo)

to better_yourself
  printout "better_yourself
end ; as you began

Leia como

Para melhorar a si mesmo
Imprima a cotação melhor você mesmo
Terminar como você começou

Geoff Reedy
fonte
11
Eu li "Logo" e pensei "Isso vai envolver uma tartaruga escrevendo um Haiku, não é ?!" +1, mesmo que não tenha PEN UP ou PEN DOWN. :)
Li-aung Yip
4

Rubi

"A ruby haiku.
Why, yes, it is."; print open(
__FILE__).read #this now, please.

Leia como:

A ruby haiku.
Why, yes, it is. Print open
file. Read this now, please.

Infelizmente, não flui muito bem. Em minha defesa, são 12:50 da manhã ...

patinador
fonte
3

JavaScript (não funciona no Firefox)

             (function haiku() { with (
console) log ((('' + haiku). // output
replace)     (/[ !-@{-~[-^]+/gim, ' ')); void haiku })()

funciona, exceto o
mecanismo javascript do mozilla , e mostra a
ortografia após a execução

Konrad Borowski
fonte
3

Python

(Leia apenas o primeiro nível de parênteses (não o segundo)).

Código e como ler:

for e in range(3):                      # for e in range three
    if True is False: what = then       # if true is false, what is then?
    print "oh " * (5 + 2 * (e & 1))     # print oh times _seven_

Saída, provavelmente o haiku mais básico do mundo:

oh oh oh oh oh
oh oh oh oh oh oh oh
oh oh oh oh oh
daniero
fonte
Você provavelmente poderia substituir True == Falsepor True is Falsepara tornar o código do programa mais parecido com o que você o leu.
@LegoStormtroopr concordou. Edit: Eu tinha esquecido sobre este. Por mais estúpida que seja a saída, acho estranhamente gratificante ler em voz alta na minha mais grave "voz peotry".
Daniero
Pelo menos no Python 3, what = thentambém pode ser substituído witn what is then.
MaxiMouse em
3

Python (2 entradas)

Entrada 1: Um haiku no tempo

Você precisa salvar isso em um arquivo e executá-lo no mesmo diretório. Este haiku muito lentamente se imprime na tela, um poema em palavras e tempo.

from time import sleep
for line in open(__file__):
  print line; sleep(len(line))

Entrada 2: Um haiku sem simbolismo

Isso é semelhante ao acima, mas foi uma tentativa de escrever um haiku Python que usava apenas palavras-chave e colchetes mínimos ou substituições de símbolos (por exemplo, =pronunciado como "é").

if __file__ is not None:
 for line in open(__file__):
  print not False and line

fonte
2

Tcl

Aqui está um exemplo de auto-documentação e auto-saída:

catch {me as I make}
proc unknown args {puts [read $args]}
[open [info script]]
hóspede
fonte
0

Vim

ia0 <esc><c-x>
YpA-<esc>
px5<c-x><c-x>

leia como

i a zero x
Y p A hyphen escape
p x five x x

Escreve:

a-1
a-1-
-7

leia como:

a negative one
a minus one negative
negative seven
Limão destrutível
fonte
0

Python 3

print(print.__doc__[:15])
print(print.__doc__[13:][:13])
print(print.__doc__[32])

Leia como:

print print doc one five
print print doc one three one three
print print doc three two

Impressões:

print(value, ..
..., sep=' ',
\

Leia como:

print value dot dot
ellipses, sep equals blank
reverse solidus
Limão destrutível
fonte