Wykonywalne haiku, które wyprowadza haiku [zamknięte]

37

Puzzle:

Napisz krótki, trzywierszowy program, który:

  • po przeczytaniu na głos ma 5/7/5 sylab na linię
  • po uruchomieniu uruchamia haiku.

Przykładem programu o poprawnej strukturze, ale niepochodzącym z haiku, jest (Python):

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

(Komentarz jest trochę dziwny).

Brzmi to na głos jako:

dla x w trzecim zakresie

drukuj ZMIEŃ LUDZKIE!

Jestem Dalekiem.

Każdy język jest akceptowalny. W celu czytania na głos, symbole takie !@#$%^&*()_+mogą być ignorowane, jeśli chcesz, lub wymawiane na głos, przyznając coś takiego jak Waka Waka Bang Splat . (Jestem pewien, że będzie taki wpis jak Perl !***(!:, )(*@@@#, )_(*)!.)

Dodatkowe punkty, jeśli kod lub wynik jest szczególnie zabawny lub szczególnie zen.


Edycja: Jeśli Twój język wymaga płyty kotłowej, zanim będzie mógł zrobić coś interesującego ( #include <iostream>?), Chętnie zignoruję płytę kotłową.


Zaakceptowałem haiku Paula Richtera Common Lisp na tej podstawie, że rozśmieszyłem ją przez dobre pięć minut.

Wyróżnienie za kreatywne gięcie reguł przez Timwi ( wyjście kompilatora ?!) i za niezapomnianą linię"Static void. I long for you."

Teraz to pytanie się kończy;

Czeka jeszcze wiele haiku.

Kontynuuj publikowanie!

Li-aung Yip
źródło
Zdecydowanie
zalecam
1
„Dalek Simulator” to 6 sylab (a może „# Dalek Simulator” to 7 sylab?) - tak czy inaczej, czy nie powinno to być 5 sylab dla trzeciej linii?
Paul R,
@PaulR: Masz rację. Edytowane do czegoś, co ma 5 sylab. ;)
Li-aung Yip
1
Premia do rozwiązania Piet?
ugoren
1
@ugoren: Jeśli możesz sprawić, by program Piet wyglądał jak haiku, jestem prawie pewien, że wygrałby nagrodę główną. ;)
Li-aung Yip

Odpowiedzi:

46

Common Lisp

Nawiasy milczą!

Program:

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

Czytaj jako:

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

Wydajność:

((THIS IS LISP HAIKU) (TRULY THIS IS LISP HAIKU) (THIS IS LISP HAIKU))
Paul Richter
źródło
To załamało mnie na dobre pięć minut. Dobra robota!
Li-aung Yip
78

DO#

Program:

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

Czytać:

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

Dane wyjściowe kompilatora :

#warning: 'Lonesome'        (read: hash warning lonesome)
Empty character literal     (read: empty character lit’ral)
Newline in constant
Timwi
źródło
14
Dane wyjściowe kompilatora ?! Kreatywna interpretacja zasad - podoba mi się. Dziwnie też zen ...
Li-aung Yip
2
To jest poezja kompilatora ... +1!
Cristian Lupascu,
6
Chciałbym móc to głosować więcej niż raz.
Gareth,
@Gareth ditto !!
Gaffi
1
Dosłownie śmiałem się głośno z poezji samotności kompilatora. Czy jestem smutny? Nowa linia w stałej.
Alfa
48

Piet, 867 wykonujący bloki kolorów

Wielka Nagroda, mówisz? Ma rozmiar kodu 2.

haiku, które drukuje się

Wydajność:

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

To wyzwanie było fajne! Napisałem koder instrukcji Piet, który pobiera instrukcje i tłumaczy je na skrypt Piet. Od tego momentu wygenerowanie kodu do wydrukowania danego ciągu jest krótkie. Włożyłem niewielki (ale skuteczny) wysiłek w grę w golfa w kodzie Piet, używając tylko instrukcji jednokodowych.

Potem zrobiłem czcionkę pikselową. Dla każdego piksela w znaku wysadzam go w 4 kodele: 2 czarne i 2 wykonane. Pierwszy napotkany kodel nie jest wykonywany, więc jeśli segment znaku ma na przykład n pikseli, co odpowiada 2 * n * -1 instrukcjom.

Linie w dół po bokach odwracają wskaźnik kierunku i przesuwają go w dół o 2 piksele, przenosząc go do następnego rzędu. Zatem instrukcje są odwracane w każdym innym wierszu.

Kiedy miałem kod do tworzenia „tekstu osadzonego w tekście”, robi się fajnie. Po drodze prawdopodobnie napisałem 20 haiku, ale ostatecznie się ustabilizowałem. Poprawiając czcionkę; dodając / usuwając szeryfy, zaokrąglając rogi, zmieniając wysokość / szerokość itp., byłem w stanie zmienić całkowitą liczbę niebiałych pikseli na obrazie, tak aby kod Piet dokładnie pasował do tekstu obrazu.

Premia! Możesz stworzyć swoje własne haiku! http://pastebin.com/zxc9V3UX

boothby
źródło
Czy jest gdziekolwiek w Internecie mogę to przetestować? Jeśli to działa, zdecydowanie jest warte +1.
Gareth
Znalazłem tutaj jeden , ale program nie dał żadnych wyników :-(
Gareth
@Gareth, Piet jest raczej znany ze swoich kiepskich redaktorów / tłumaczy, a ja nie byłem w stanie zmusić internetowego edytora npiet do tworzenia wyników dla czegokolwiek. Wysłany skrypt działa na PietIDE .
stoisko do
1
Niestety ten komputer jest całkowicie zniszczony w Chrome na moim komputerze Mac. Zobaczę, czy mogę pobrać taki, który działa jutro.
Gareth
1
Słyszałem, że lubisz haiku, więc umieściłem haiku na twoim zdjęciu haiku, abyś dostał haiku, gdy będziesz haiku.
Li-aung Yip
23

Perl

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

Jak odczytać na głos:

dollar underscore
equals repeating myself
print nis like line noise.

Wydajność:

Repeating myself
is like Repeating myself.
Repeating myself.
Timwi
źródło
5
Czy to nie jest gliniarz, który czyta głośno podkreślenie dolara w pierwszym wierszu, ale następnie pomija go (wraz z kilkoma innymi znakami) w trzecim wierszu?
dspyz
Tak, to naprawdę :)
Timwi
19

INTERCAL

INTERCAL ma ograniczone możliwości wyjściowe, ale „ograniczone możliwości” nigdy nie powstrzymały mnie przed napisaniem programu INTERCAL!

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

Proszę przeczytać [out] to jako:

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

(Zauważ, że moja płyta jest na końcu programu, a nie na początku.)

Program generuje dane wyjściowe:

XVIII

MMMCCCI

CCXIV

Które, gdy wypowiedziane na głos, brzmi:

Ex vee eye eye eye,
Em em em cee cee cee eye,
Cee cee ex eye vee.
chlebak
źródło
1
Myślę, że potrzebujesz terapii.
Chris Kitching
13

CoffeeScript

Trzymając język mocno w policzek, przedstawiam CoffeeScript:

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

Wyraźny:

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

Jeśli masz odpowiednie ustawienie czasu (!), Wynikiem może być np. 1337181872717, wymawiane:

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

Biorąc pod uwagę, że mój pierwszy bieg w tym momencie to jedna mikrosekunda od prawidłowej odpowiedzi haiku, myślę, że to wystarczy zen, aby się zakwalifikować!

NB: Z przyjemnością usłyszę wystarczająco zenowe alternatywy dla moich pierwszych dwóch (co prawda słabych) linii.

Johno
źródło
+1 za „jeśli twój czas jest właściwy” i „jeden trzy trzy siedem”
klaszcz
10

jot

Program:

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

Przeczytaj (zastępując nazwy czasowników):

Prime Integers Four
Square Square Square Integers 3
Factorial Eight

Wyjście (głośne odczytywanie liczb):

2 3 5 7
0 1 256                          (Read: Zero One Two-Fifty-Six)
40320                            (Read: Forty Three-Twenty)
komandos
źródło
8

Pyton

Kod:

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

Jak to czytac:

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

Wydajność:

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

Próbka robocza: http://ideone.com/hDniW

Cristian Lupascu
źródło
7

logo

Oto procedura Haiku, która jest również procedurą quine (łatwa dzięki możliwości introspekcji logo)

to better_yourself
  printout "better_yourself
end ; as you began

Czytaj jako

Aby poprawić siebie
Wydrukuj ofertę lepiej siebie
Zakończ jak zacząłeś

Geoff Reedy
źródło
1
Przeczytałem „Logo” i pomyślałem „To będzie wymagało żółwia piszącego Haiku, prawda ?!” +1, mimo że nie było PEN UP ani PEN DOWN. :)
Li-aung Yip
4

Rubin

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

Czytaj jako:

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

Niestety nie płynie zbyt dobrze. W mojej obronie jest 12:50 ...

duckinator
źródło
3

JavaScript (nie działa w przeglądarce Firefox)

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

działa z wyjątkiem
silnika Mozilla JavaScript i pokazuje
pisownię po uruchomieniu

Konrad Borowski
źródło
3

Pyton

(Czytaj tylko pierwszy poziom nawiasów (nie drugi)).

Kod i jak czytać:

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_

Wyjście, prawdopodobnie najbardziej podstawowe haiku na świecie:

oh oh oh oh oh
oh oh oh oh oh oh oh
oh oh oh oh oh
daniero
źródło
Można chyba tylko wymienić True == Falsesię True is Falseaby kod programu raczej jak chcesz ją przeczytać.
@LegoStormtroopr zgodził się. Edycja: Zapomniałem o tym. Choć jest to głupie, wydaje mi się, że dziwnie satysfakcjonujące jest czytanie go głośno moim najpoważniejszym „głosem peotry”.
daniero
Przynajmniej w Pythonie 3 what = thenmożna go również zastąpić witn what is then.
MaxiMouse
3

Python (2 wpisy)

Wpis 1: Haiku w czasie

Musisz zapisać to w pliku i uruchomić z tego samego katalogu. To haiku bardzo powoli drukuje się na ekranie, wiersz słów i czasu.

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

Wpis 2: Haiku bez symboliki

Jest to podobne do powyższego, ale była próbą napisania haiku w języku Python, w którym zastosowano tylko słowa kluczowe i minimalne nawiasy kwadratowe lub podstawienia symboli (np. =Wymawiane jako „jest”).

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

źródło
2

Tcl

Oto samodokumentujący się, samowystarczalny przykład:

catch {me as I make}
proc unknown args {puts [read $args]}
[open [info script]]
Gość
źródło
0

Wigor

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

czytać jako

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

Pisze:

a-1
a-1-
-7

czytać jako:

a negative one
a minus one negative
negative seven
Zniszczalna cytryna
źródło
0

Python 3

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

Czytaj jako:

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

Wydruki:

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

Czytaj jako:

print value dot dot
ellipses, sep equals blank
reverse solidus
Zniszczalna cytryna
źródło