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!


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))

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

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


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.

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.

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.


+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)

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


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ś


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 ...


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


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

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

2

Tcl

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

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

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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.