Ausführbares Haiku, das ein Haiku ausgibt [geschlossen]

37

Puzzle:

Schreiben Sie ein kurzes, dreizeiliges Programm, das:

  • hat 5/7/5 Silben pro Zeile beim Vorlesen
  • gibt beim Laufen ein Haiku aus.

Ein Beispiel für ein Programm mit der richtigen Struktur, aber ohne Haiku-Ausgabe ist (Python):

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

(Der Kommentar ist ein bisschen wie eine Ausrede.)

Dies liest sich laut wie folgt:

für x im Bereich drei

EXTERMINATE HUMANS!

Ich bin ein Dalek.

Jede Sprache ist akzeptabel. Zum Vorlesen können Symbole !@#$%^&*()_+wie " Waka Waka Bang Splat" ignoriert oder ausgesprochen werden . (Ich bin mir sicher, dass es einen Perl-Eintrag geben wird wie !***(!:, )(*@@@#, )_(*)!.)

Zusätzliche Punkte, wenn entweder der Code oder die Ausgabe besonders lustig ist oder besonders zen.


Bearbeiten: Wenn Ihre Sprache Boilerplate erfordert, bevor es etwas Interessantes ( #include <iostream>?) Tun kann, dann bin ich glücklich, das Boilerplate zu ignorieren.


Ich habe Paul Richters Common-Lisp-Haiku angenommen, weil es mich gut fünf Minuten lang zum Lachen brachte.

Lobende Erwähnung für Timwis kreative Regelbiegung ( Compiler- Ausgabe ?!) und für die äußerst einprägsame Linie"Static void. I long for you."

Jetzt endet diese Frage;

Viele weitere Haikus warten auf Sie.

Poste weiter!

Li-aung Yip
quelle
Ich würde Ihnen dringend empfehlen, die Verwendung von katzenähnlichen Sprachen zu verhindern ...
MrZander
1
"Dalek Simulator" besteht aus 6 Silben (oder vielleicht "# Dalek Simulator" aus 7 Silben?) - sollte es nicht 5 Silben für die dritte Zeile sein?
Paul R
@PaulR: Du hast recht. Bearbeitet auf 5 Silben. ;)
Li-aung Yip
1
Bonus auf eine Piet-Lösung?
Ugoren
1
@ugoren: Wenn Sie ein Piet-Programm wie ein Haiku aussehen lassen, bin ich mir ziemlich sicher, dass es den Hauptpreis gewinnen würde. ;)
Li-aung Yip

Antworten:

46

Common Lisp

Klammern schweigen!

Programm:

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

Gelesen als:

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

Ausgabe:

((THIS IS LISP HAIKU) (TRULY THIS IS LISP HAIKU) (THIS IS LISP HAIKU))
Paul Richter
quelle
Das hat mich gut fünf Minuten durcheinander gebracht. Gut gemacht!
Li-aung Yip
78

C #

Programm:

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

Lesen:

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

Compiler- Ausgabe:

#warning: 'Lonesome'        (read: hash warning lonesome)
Empty character literal     (read: empty character lit’ral)
Newline in constant
Timwi
quelle
14
Compiler- Ausgabe ?! Kreative Interpretation der Regeln - ich mag es. Es ist auch seltsam Zen ...
Li-aung Yip
2
Das ist Compilerpoesie ... +1!
Cristian Lupascu
6
Ich wünschte, ich könnte dies mehr als einmal befürworten.
Gareth
@ Gareth dito !!
Gaffi
1
Ich habe buchstäblich über die Poesie der Einsamkeit des Compilers gelacht. Bin ich traurig Newline in Konstante.
Alpha
48

Piet, 867 Farbblöcke ausführend

Hauptpreis, sagst du? Dies hat eine Codelgröße von 2.

ein Haiku, das sich selbst druckt

Ausgabe:

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

Diese Herausforderung hat Spaß gemacht! Ich habe einen Piet-Anweisungscodierer geschrieben, der Anweisungen aufnimmt und sie in ein Piet-Skript übersetzt. Es ist nur eine kurze Arbeit von dort, Code zu generieren, um eine bestimmte Zeichenfolge zu drucken. Ich habe ein wenig (aber effektives) Aufwand in das Golfen des Piet-Codes gesteckt, während ich nur Single-Codel-Anweisungen verwende.

Ich habe dann eine Pixelschrift gemacht. Für jedes Pixel in einem Zeichen vergrößere ich es in 4 Codels: 2 schwarze und 2 ausgeführte. Der erste gefundene Codel wird nicht ausgeführt. Wenn also ein Segment eines Zeichens beispielsweise n Pixel aufweist, entspricht dies 2 * n * -1 Befehlen.

Die Linien an den Seiten kehren den Richtungszeiger um und verschieben ihn um 2 Pixel nach unten, um ihn in die nächste Zeile zu bringen. Somit werden die Anweisungen in jeder zweiten Zeile umgekehrt.

Sobald ich Code hatte, um "in Text eingebetteten Text" zu erzeugen, macht es Spaß. Wahrscheinlich habe ich 20 Haiku geschrieben, aber irgendwann habe ich mich niedergelassen. Durch Ändern der Schriftart; Durch Hinzufügen / Entfernen von Serifen, Abrunden von Ecken, Ändern von Höhe / Breite usw. konnte ich die Gesamtzahl der nicht weißen Pixel im Bild so ändern, dass der Piet-Code genau in den Bildtext passt.

Bonus! Sie können Ihr eigenes quinelike Haiku bilden! http://pastebin.com/zxc9V3UX

boothby
quelle
Kann ich das irgendwo online testen? Wenn es funktioniert, ist es definitiv eine +1 wert.
Gareth
Ich habe eine hier gefunden , aber das Programm gab keine Ausgabe :-(
Gareth
@Gareth, Piet ist ziemlich berüchtigt für seine miesen Redakteure / Interpreten, und ich war nicht in der Lage, npiets Online-Editor dazu zu bringen, für irgendetwas Output zu produzieren. Das gepostete Skript funktioniert auf PietIDE .
Stand
1
Leider ist das in Chrome auf meinem Mac völlig kaputt. Ich werde sehen, ob ich eines herunterladen kann, das morgen funktioniert.
Gareth
1
Ich habe gehört, dass du Haiku magst, also habe ich ein Haiku in dein Bild eines Haiku eingefügt, damit du ein Haiku bekommst, wenn du Haiku hast.
Li-aung Yip
23

Perl

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

So lesen Sie es vor:

dollar underscore
equals repeating myself
print nis like line noise.

Ausgabe:

Repeating myself
is like Repeating myself.
Repeating myself.
Timwi
quelle
5
Ist es nicht ein Problem, den Dollar-Unterstrich in der ersten Zeile vorzulesen und ihn dann (zusammen mit einigen anderen Zeichen) in der dritten Zeile zu überspringen?
Dspyz
Ja, es ist wirklich :)
Timwi
19

INTERCAL

INTERCAL hat begrenzte Ausgabefähigkeiten, aber "begrenzte Fähigkeiten" haben mich nie davon abgehalten, ein INTERCAL-Programm zu schreiben!

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

Bitte lesen Sie dies wie folgt vor:

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

(Beachten Sie, dass mein Kesselschild am Ende des Programms steht und nicht am Anfang.)

Das Programm erzeugt die Ausgabe:

XVIII

MMMCCCI

CCXIV

Was, wenn es laut ausgesprochen wird:

Ex vee eye eye eye,
Em em em cee cee cee eye,
Cee cee ex eye vee.
Brot-Box
quelle
1
Ich denke, Sie brauchen eine Therapie.
Chris Kitching
13

CoffeeScript

Mit fester Zunge präsentiere ich CoffeeScript:

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

Ausgesprochen:

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

Wenn Ihr Timing stimmt (!), Könnte Ihre Ausgabe zB 1337181872717 sein, ausgesprochen:

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

In Anbetracht der Tatsache, dass mein erster Lauf in diesem Fall eine Mikrosekunde von einer gültigen Haiku-Antwort entfernt war, denke ich, dass dies Zen genug ist, um sich zu qualifizieren!

NB: Ich würde mich freuen, genügend Zen-Alternativen für meine ersten beiden (zugegebenermaßen schwachen) Zeilen zu hören.

Johno
quelle
+1 für "wenn dein Timing stimmt" und "eins drei drei sieben"
klatschen
10

J

Programm:

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

Gelesen (Substitution von Verbnamen):

Prime Integers Four
Square Square Square Integers 3
Factorial Eight

Ausgabe (Zahlen laut vorlesen):

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

Python

Code:

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

Wie man liest:

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

Ausgabe:

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

Arbeitsbeispiel: http://ideone.com/hDniW

Cristian Lupascu
quelle
7

Logo

Hier ist ein Haiku-Verfahren, das auch ein Quine-Verfahren ist (einfach aufgrund der Introspektionsfähigkeit des Logos)

to better_yourself
  printout "better_yourself
end ; as you began

Lesen als

Um sich selbst zu
verbessern, drucken
Sie das Zitat selbst besser aus. Beenden Sie, wie Sie begonnen haben

Geoff Reedy
quelle
1
Ich las "Logo" und dachte "Das wird eine Schildkröte beinhalten, die ein Haiku schreibt, nicht wahr ?!" +1 obwohl es keinen PEN UP oder PEN DOWN gab. :)
Li-aung Yip
4

Rubin

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

Gelesen als:

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

Es fließt leider nicht sehr gut. In meiner Verteidigung, es ist 00.50 Uhr ...

duckinator
quelle
3

JavaScript (funktioniert nicht in Firefox)

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

Funktioniert mit Ausnahme der Mozilla
Javascript Engine und zeigt die
Rechtschreibung nach dem Ausführen an

Konrad Borowski
quelle
3

Python

(Lesen Sie nur die erste Ebene der Klammern (nicht die zweite)).

Code und wie man liest:

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_

Leistung, wahrscheinlich grundlegendstes Haiku der Welt:

oh oh oh oh oh
oh oh oh oh oh oh oh
oh oh oh oh oh
daniero
quelle
Sie könnten wahrscheinlich ersetzen Sie einfach True == Falsemit , True is Falseum den Programmcode zu machen mehr wie , wie Sie es lesen würde.
@LegoStormtroopr hat zugestimmt. Edit: Ich hatte diesen vergessen. So dumm die Ausgabe auch ist, ich finde es seltsam befriedigend, sie mit meiner ernstesten "peotry voice" laut vorzulesen.
Daniero
Zumindest in Python 3, what = thenkönnte auch witn ersetzt werden what is then.
MaxiMouse
3

Python (2 Einträge)

Eintrag 1: Ein Haiku in der Zeit

Sie müssen dies in einer Datei speichern und im selben Verzeichnis ausführen. Dieses Haiku druckt sich sehr langsam auf dem Bildschirm aus, ein Gedicht in Worten und Zeit.

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

Eintrag 2: Ein Haiku ohne Symbolik

Dies ist ähnlich wie oben, war jedoch ein Versuch, ein Python-Haiku zu schreiben, das nur Schlüsselwörter und minimale Klammern oder Ersetzungen von Symbolen verwendete (z. B. =ausgesprochen als "ist").

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

quelle
2

Tcl

Hier ist ein selbstdokumentierendes, selbstausgebendes Beispiel:

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

Vim

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

gelesen als

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

Schreibt:

a-1
a-1-
-7

gelesen als:

a negative one
a minus one negative
negative seven
Zerstörbare Zitrone
quelle
0

Python 3

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

Gelesen als:

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

Drucke:

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

Gelesen als:

print value dot dot
ellipses, sep equals blank
reverse solidus
Zerstörbare Zitrone
quelle