Hiku eseguibile che genera un haiku [chiuso]


37

Puzzle:

Scrivi un breve programma su tre righe che:

  • ha 5/7/5 sillabe per riga quando viene letto ad alta voce
  • genera un haiku quando viene eseguito.

Un esempio di un programma con la struttura corretta, ma output non haiku, è (Python):

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

(Il commento è un po 'un cop-out.)

Questo legge ad alta voce come:

per x nell'intervallo tre

stampa EXTERMINATE HUMANS!

Sono un Dalek.

Qualsiasi lingua è accettabile Ai fini della lettura ad alta voce, simboli come !@#$%^&*()_+possono essere ignorati, se lo si desidera, o pronunciati ad alta voce, ammettendo qualcosa come Waka Waka Bang Splat . (Sono sicuro che ci sarà una voce del Perl come !***(!:, )(*@@@#, )_(*)!.)

Punti extra se il codice o l'output sono particolarmente divertenti o soprattutto zen.


Modifica: se la tua lingua richiede un boilerplate prima che possa fare qualcosa di interessante ( #include <iostream>?), Sono felice di ignorare il boilerplate.


Ho accettato il Common Lisp haiku di Paul Richter per il fatto che mi ha fatto ridere per ben cinque minuti.

Menzione d'onore per la piega creativa delle regole di Timwi ( output del compilatore ?!) e per la linea estremamente memorabile"Static void. I long for you."

Ora questa domanda finisce;

Molti altri haikus attendono.

Continua a postare!


Consiglio vivamente di impedire l'uso di linguaggi simili a quelli di un gatto ...
MrZander

1
"Dalek Simulator" è 6 sillabe (o forse "# Dalek Simulator" è 7 sillabe?) - in entrambi i casi, non dovrebbero essere 5 sillabe per la terza riga?
Paul R,

@PaulR: hai ragione. Modificato per qualcosa che è 5 sillabe. ;)
Li-aung Yip

1
Bonus per una soluzione Piet?
ugoren,

1
@ugoren: se riesci a far sembrare un programma Piet un haiku, sono abbastanza sicuro che vincerebbe il Gran Premio. ;)
Li-aung Yip,

Risposte:


46

Lisp comune

Le parentesi tacciono!

Programma:

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

Leggi come:

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

Produzione:

((THIS IS LISP HAIKU) (TRULY THIS IS LISP HAIKU) (THIS IS LISP HAIKU))

Questo mi ha spezzato per ben cinque minuti. Molto bene!
Li-aung Yip,

78

C #

Programma:

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

Leggere:

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

Uscita del compilatore :

#warning: 'Lonesome'        (read: hash warning lonesome)
Empty character literal     (read: empty character lit’ral)
Newline in constant

14
Uscita del compilatore ?! Interpretazione creativa delle regole - Mi piace. È anche stranamente zen ...
Li-aung Yip

2
Questa è la poesia del compilatore ... +1!
Cristian Lupascu,

6
Vorrei poter votare questo più di una volta.
Gareth,

@Gareth idem !!
Gaffi,

1
Ho letteralmente riso forte della poesia della solitudine del compilatore. Sono sadico? Newline in costante.
Alpha,

48

Piet, 867 eseguendo blocchi di colore

Gran Premio, dici? Questo ha una dimensione in codice di 2.

a haiku that prints itself

Produzione:

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

Questa sfida è stata divertente! Ho scritto un codificatore di istruzioni Piet che accetta le istruzioni e le traduce in uno script Piet. Da lì è breve lavoro per generare codice per stampare una determinata stringa. Ho fatto un piccolo (ma efficace) sforzo nel golfare il codice Piet usando solo le istruzioni a codice singolo.

Ho quindi creato un font pixel. Per ogni pixel di un personaggio, lo faccio esplodere in 4 codici: 2 neri e 2 eseguiti. Il primo codice riscontrato non è in esecuzione, quindi se un segmento di un carattere ha n pixel, ad esempio, ciò corrisponde a 2 * n * -1 istruzioni.

Le linee lungo i lati invertono il puntatore di direzione e lo spostano verso il basso di 2 pixel, portandolo alla riga successiva. Pertanto, le istruzioni vengono invertite su ogni altra riga.

Una volta che ho avuto il codice per produrre "testo incorporato nel testo", mi diverto. Probabilmente ho scritto 20 haiku lungo la strada, ma alla fine mi sono sistemato. Modificando il carattere; aggiungendo / rimuovendo serif, arrotondando gli angoli, modificando altezza / larghezza, ecc., sono stato in grado di modificare il numero totale di pixel non bianchi nell'immagine in modo tale che il codice Piet si adattasse esattamente al testo dell'immagine.

Bonus! Puoi creare il tuo haiku chinel simile! http://pastebin.com/zxc9V3UX


C'è un sito online in cui posso provarlo? Se funziona vale sicuramente un +1.
Gareth,

Ne ho trovato uno qui , ma il programma non ha prodotto risultati :-(
Gareth,

@Gareth, Piet è piuttosto noto per i suoi pessimi editor / interpreti, e non sono stato in grado di ottenere l'editor online di npiet per produrre output per qualsiasi cosa. Lo script pubblicato funziona su PietIDE .
stand del

1
Sfortunatamente, questo è totalmente interrotto in Chrome sul mio Mac. Vedrò se posso scaricarne uno che funziona domani.
Gareth,

1
Ti ho sentito come un haiku, quindi ho inserito un haiku nella tua foto di un haiku in modo da ottenere un haiku quando hai l'haiku.
Li-aung Yip,

23

Perl

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

Come leggerlo ad alta voce:

dollar underscore
equals repeating myself
print nis like line noise.

Produzione:

Repeating myself
is like Repeating myself.
Repeating myself.

5
Non è un poliziotto che legge ad alta voce il carattere di sottolineatura del dollaro nella prima riga ma poi lo salta (insieme ad alcuni altri personaggi) sulla terza riga?
dspyz,

Sì, è davvero :)
Timwi

19

INTERCAL

INTERCAL ha capacità di output limitate, ma le "capacità limitate" non mi hanno mai impedito di scrivere un programma INTERCAL!

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

Si prega di leggere [fuori] questo come:

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

(Nota che la mia caldaia è alla fine del programma anziché all'inizio.)

Il programma produce l'output:

XVIII

MMMCCCI

CCXIV

Che, se pronunciato ad alta voce, dice:

Ex vee eye eye eye,
Em em em cee cee cee eye,
Cee cee ex eye vee.

1
Penso che tu abbia bisogno di terapia.
Chris Kitching,

13

CoffeeScript

Con la lingua saldamente nella guancia, presento CoffeeScript:

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

Pronunciate:

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

Se il tempismo è corretto (!), L'output potrebbe essere ad es. 1337181872717, pronunciato:

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

Considerando che la mia prima corsa in questo è stata un microsecondo da una valida risposta di haiku, penso che sia abbastanza zen per qualificarmi!

NB: Sarei felice di sentire alternative sufficientemente zen per le mie prime due righe (certamente deboli).


+1 per "se il tuo tempismo è giusto" e "uno tre tre sette"
applaude il

10

J

Programma:

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

Leggi (sostituendo i nomi dei verbi):

Prime Integers Four
Square Square Square Integers 3
Factorial Eight

Uscita (leggi i numeri ad alta voce):

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

8

Pitone

Codice:

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

Come leggere:

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

Produzione:

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

Esempio di lavoro: http://ideone.com/hDniW


7

logo

Ecco una procedura Haiku che è anche una procedura quine (facile a causa della capacità di introspezione del logo)

to better_yourself
  printout "better_yourself
end ; as you began

Leggi come

Per migliorare te stesso
Stampa preventivo meglio te stesso
Fine come hai iniziato


1
Ho letto "Logo" e ho pensato "Ciò implicherà una tartaruga che scrive un Haiku, non è vero ?!" +1 anche se non è stato visualizzato PEN UP o PEN DOWN. :)
Li-aung Yip,

4

Rubino

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

Leggi come:

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

Purtroppo non scorre molto bene. A mia difesa, sono le 12:50 ...


3

JavaScript (non funziona in Firefox)

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

funziona ad eccezione del
motore javascript di mozilla e mostra l'
ortografia dopo l'esecuzione


3

Pitone

(Leggi solo il primo livello tra parentesi (non il secondo)).

Codice e come leggere:

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_

Output, probabilmente l'haiku più basilare del mondo:

oh oh oh oh oh
oh oh oh oh oh oh oh
oh oh oh oh oh

Probabilmente potresti semplicemente sostituirlo True == Falsecon True is Falseper rendere il codice del programma più simile a come lo avresti letto.

@LegoStormtroopr concordato. Modifica: mi ero dimenticato di questo. Per quanto sia stupido quanto l'output, trovo stranamente soddisfacente leggerlo ad alta voce nella mia più grave "voce pezzata".
daniero,

Almeno in Python 3, what = thenpotrebbe anche essere sostituito con witn what is then.
MaxiMouse,

3

Python (2 voci)

Ingresso 1: un haiku nel tempo

Devi salvarlo in un file ed eseguirlo dalla stessa directory. Questo haiku si stampa molto lentamente sullo schermo, una poesia in parole e tempo.

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

Entrata 2: un haiku senza simbolismo

Questo è simile al precedente, ma era un tentativo di scrivere un haiku Python che utilizzava solo parole chiave e parentesi minime o sostituzioni di simboli (ad esempio =pronunciato come "è").

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

2

Tcl

Ecco un esempio di auto-documentazione, auto-produzione:

catch {me as I make}
proc unknown args {puts [read $args]}
[open [info script]]

0

Vim

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

leggi come

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

scrive:

a-1
a-1-
-7

leggi come:

a negative one
a minus one negative
negative seven

0

Python 3

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

Leggi come:

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

stampe:

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

Leggi come:

print value dot dot
ellipses, sep equals blank
reverse solidus
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.