Haiku exécutable qui produit un haïku [fermé]

37

Puzzle:

Rédigez un programme court de trois lignes qui:

  • a 5/7/5 syllabes par ligne à la lecture
  • génère un haïku lorsqu’il est exécuté.

Un exemple de programme ayant la structure correcte, mais avec une sortie non-haiku, est (Python):

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

(Le commentaire est un peu une échappatoire.)

Cela se lit à haute voix:

pour x dans la plage trois

print EXTERMINE L'HUMAIN!

Je suis un Dalek.

Toute langue est acceptable. Aux fins de lecture à voix haute, des symboles tels que, par exemple, !@#$%^&*()_+peuvent être ignorés si vous voulez, ou prononcés à voix haute, en admettant quelque chose comme Waka Waka Bang Splat . (Je suis sûr qu'il y aura une entrée Perl comme !***(!:, )(*@@@#, )_(*)!.)

Des points supplémentaires si le code ou la sortie est particulièrement amusant ou particulièrement zen.


Edit: Si votre langue nécessite un passe-partout avant de pouvoir faire quoi que ce soit d’intéressant ( #include <iostream>?), Alors je suis heureux d’ignorer le passe-passe.


J'ai accepté le haïku Common Lisp de Paul Richter au motif que cela me faisait rire pendant cinq bonnes minutes.

Mention honorable pour la méthode créative de pliage des règles de Timwi ( sortie du compilateur ?!) Et pour la ligne extrêmement mémorable"Static void. I long for you."

Maintenant cette question se termine;

Beaucoup plus de haïkus attendent.

Continuer à poster!

Li-aung Yip
la source
Je vous suggère fortement d'empêcher l'utilisation de langues
félines
1
"Dalek Simulator" est de 6 syllabes (ou peut-être "# Dalek Simulator" est de 7 syllabes?) - dans tous les cas, ne devrait-il pas s'agir de 5 syllabes pour la troisième ligne?
Paul R
@PaulR: Vous avez raison. Edité en quelque chose qui est 5 syllabes. ;)
Li-aung Yip
1
Bonus pour une solution Piet?
Ugoren
1
@ugoren: Si vous pouvez faire en sorte que le programme Piet ressemble à un haïku, je suis presque sûr que cela gagnerait le grand prix. ;)
Li-aung Yip

Réponses:

46

Common Lisp

Les parenthèses sont silencieuses!

Programme:

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

Lire comme:

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

Sortie:

((THIS IS LISP HAIKU) (TRULY THIS IS LISP HAIKU) (THIS IS LISP HAIKU))
Paul Richter
la source
Cela m'a fait craquer pendant cinq bonnes minutes. Bien joué!
Li-aung Yip
78

C #

Programme:

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

Lis:

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

Sortie du compilateur :

#warning: 'Lonesome'        (read: hash warning lonesome)
Empty character literal     (read: empty character lit’ral)
Newline in constant
Timwi
la source
14
Sortie du compilateur ?! Interprétation créative des règles - ça me plait. C'est aussi étrangement zen ...
Li-aung Yip
2
Ceci est la poésie du compilateur ... +1!
Cristian Lupascu
6
Je souhaite que je pourrais upvoter cela plus d'une fois.
Gareth
@Gareth idem !!
Gaffi
1
J'ai littéralement ri aux éclats de poésie de la solitude du compilateur. Suis-je sadique? Newline en constante.
Alpha
48

Piet, 867 exécutant des blocs de couleur

Grand prix, vous dites? Cela a une taille de code de 2.

a haiku that prints itself

Sortie:

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

Ce défi était amusant! J'ai écrit un encodeur d'instructions Piet qui prend des instructions et les traduit en script Piet. À partir de là, la tâche est simple: générer du code pour imprimer une chaîne donnée. Je mets un petit effort (mais efficace) pour jouer au code Piet en utilisant uniquement des instructions à code unique.

J'ai ensuite fait une police de pixel. Pour chaque pixel d'un caractère, je le décompose en 4 codes: 2 noirs et 2 exécutés. Le premier code rencontré est non-exécutable, donc si un segment de caractère a n pixels, par exemple, cela correspond à 2 * n * -1 instructions.

Les lignes situées le long des côtés inversent le pointeur de direction et le déplacent de 2 pixels vers le bas pour le placer à la ligne suivante. Ainsi, les instructions sont inversées toutes les deux lignes.

Une fois que j'ai eu le code pour produire du "texte incorporé dans le texte", ça devient amusant. J'ai probablement écrit 20 haïku en cours de route, mais je me suis finalement installé. En peaufinant la police; en ajoutant / supprimant des empattements, en arrondissant les coins, en modifiant la hauteur / la largeur, etc., j'ai pu modifier le nombre total de pixels non blancs dans l'image de sorte que le code Piet s'adapte exactement au texte de l'image.

Prime! Vous pouvez faire votre propre haïku quinelike! http://pastebin.com/zxc9V3UX

boothby
la source
Y a-t-il un endroit en ligne où je peux tester cela Si cela fonctionne, ça vaut certainement un +1.
Gareth
J'en ai trouvé un ici , mais le programme n'a donné aucune sortie :-(
Gareth,
@Gareth, Piet est plutôt connu pour ses éditeurs / interprètes médiocres, et je n’ai pas pu obtenir l’éditeur en ligne de npiet pour produire une sortie pour quoi que ce soit. Le script posté fonctionne sur PietIDE .
stand
1
Malheureusement, celui-ci est totalement bloqué dans Chrome sur mon Mac. Je verrai si je peux en télécharger un qui fonctionne demain.
Gareth
1
Je t'ai entendu comme un haïku, alors j’ai mis un haïku dans ta photo d’un haïku pour que tu obtiennes un haïku lorsque tu es un haïku.
Li-aung Yip
23

Perl

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

Comment le lire à haute voix:

dollar underscore
equals repeating myself
print nis like line noise.

Sortie:

Repeating myself
is like Repeating myself.
Repeating myself.
Timwi
la source
5
N'est-ce pas un flic de lire le soulignement du dollar à haute voix en première ligne, puis de l'ignorer (avec quelques autres personnages) à la troisième ligne?
dspyz
Oui, c'est vraiment :)
Timwi
19

INTERCAL

INTERCAL a des capacités de sortie limitées, mais les "capacités limitées" ne m'ont jamais empêché d'écrire un programme INTERCAL!

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

Veuillez lire ceci comme:

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

(Notez que mon passe-partout est à la fin du programme au lieu du début.)

Le programme produit la sortie:

XVIII

MMMCCCI

CCXIV

Qui, quand on parle à haute voix, va:

Ex vee eye eye eye,
Em em em cee cee cee eye,
Cee cee ex eye vee.
boite à pain
la source
1
Je pense que tu as besoin d'une thérapie.
Chris Kitching
13

CoffeeScript

La langue dans les joues, je présente CoffeeScript:

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

Prononcé:

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

Si votre timing est bon (!), Votre sortie pourrait être par exemple 1337181872717, prononcée:

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

Considérant que ma première course à ce test était à une microseconde d'une réponse de haiku valide, je pense que c'est assez zen pour se qualifier!

NB: Je serais heureux d’entendre des alternatives suffisamment zen pour mes deux premières lignes (certes faibles).

Johno
la source
+1 pour "si votre timing est bon" et "un trois trois sept"
applaudissement le
10

J

Programme:

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

Lire (substituer des noms de verbe):

Prime Integers Four
Square Square Square Integers 3
Factorial Eight

Sortie (lire les chiffres à haute voix):

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

Python

Code:

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

Comment lire:

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

Sortie:

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

Exemple de travail: http://ideone.com/hDniW

Cristian Lupascu
la source
7

logo

Voici une procédure Haiku qui est également une procédure quine (facile en raison de la capacité d'introspection du logo)

to better_yourself
  printout "better_yourself
end ; as you began

Lire comme

Pour mieux vous-même
Imprimer citation mieux vous-même
Fin comme vous avez commencé

Geoff Reedy
la source
1
J'ai lu "Logo" et j'ai pensé "Cela va impliquer une tortue qui écrit un haïku, n'est-ce pas?!" +1 même s'il n'y avait ni PEN UP ni PEN DOWN. :)
Li-aung Yip
4

Rubis

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

Lire comme:

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

Malheureusement, ça ne coule pas très bien. Pour ma défense, il est 12h50 ...

duckinator
la source
3

JavaScript (ne fonctionne pas dans Firefox)

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

fonctionne sauf pour le
moteur JavaScript mozilla et montre l'
orthographe après a couru

Konrad Borowski
la source
3

Python

(Ne lisez que le premier niveau de parenthèses (pas le second)).

Code et comment lire:

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_

Hiku probablement le plus basique au monde:

oh oh oh oh oh
oh oh oh oh oh oh oh
oh oh oh oh oh
Daniero
la source
Vous pourriez probablement simplement remplacer True == Falsepar True is Falsepour que le code du programme ressemble davantage à la façon dont vous le liriez.
@LegoStormtroopr accepté. Edit: J'avais oublié celui-ci. Aussi stupide que la sortie soit, je trouve étrangement satisfaisant de le lire à voix haute dans ma plus grave "voix grave".
daniero
Au moins en Python 3, what = thenpourrait également être remplacé par what is then.
MaxiMouse le
3

Python (2 entrées)

Entrée 1: Un haïku dans le temps

Vous devez enregistrer ceci dans un fichier et l'exécuter à partir du même répertoire. Ce haïku s’imprime très lentement à l’écran, poème en mots et en temps.

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

Entrée 2: Un haïku sans symbolisme

Ceci est similaire à ce qui précède, mais était une tentative d'écrire un haiku Python qui utilisait uniquement des mots-clés et des crochets minimaux ou des substitutions de symboles (par exemple, =prononcé comme "est").

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

la source
2

Tcl

Voici un exemple auto-documenté, auto-éditable:

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

Vim

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

lu comme

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

Écrit:

a-1
a-1-
-7

lire comme:

a negative one
a minus one negative
negative seven
Citron destructible
la source
0

Python 3

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

Lire comme:

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

Impressions:

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

Lire comme:

print value dot dot
ellipses, sep equals blank
reverse solidus
Citron destructible
la source