Haiku yang dapat dieksekusi yang menghasilkan haiku [ditutup]

37

Membingungkan:

Tulis program pendek tiga baris yang:

  • memiliki 5/7/5 suku kata per baris saat dibaca dengan keras
  • menghasilkan haiku saat dijalankan.

Contoh program yang memiliki struktur yang benar, tetapi keluaran non-haiku, adalah (Python):

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

(Komentar itu sedikit keluar.)

Ini berbunyi keras:

untuk x dalam kisaran tiga

cetak MANUSIA YANG LUAR BIASA!

Saya seorang Dalek.

Bahasa apa pun bisa diterima. Untuk keperluan membaca dengan lantang, simbol seperti !@#$%^&*()_+dapat diabaikan jika Anda mau, atau diucapkan dengan keras, mengakui sesuatu seperti Waka Waka Bang Splat . (Saya yakin akan ada entri Perl seperti !***(!:, )(*@@@#, )_(*)!.)

Poin ekstra jika salah satu kode atau outputnya sangat lucu, atau terutama zen.


Sunting: Jika bahasa Anda memerlukan boilerplate sebelum dapat melakukan sesuatu yang menarik ( #include <iostream>?) Maka saya senang mengabaikan boilerplate.


Saya menerima haiku Common Lisp milik Paul Richter dengan alasan itu membuat saya tertawa selama lima menit.

Sebutan terhormat untuk pembengkokan aturan kreatif Timwi ( keluaran kompiler ?!) dan untuk kalimat yang sangat mengesankan"Static void. I long for you."

Sekarang pertanyaan ini berakhir;

Banyak haikus menunggu.

Lanjutkan memposting!

Li-aung Yip
sumber
Saya sangat menyarankan Anda mencegah penggunaan bahasa seperti kucing ...
MrZander
1
"Dalek Simulator" adalah 6 suku kata (atau mungkin "# Dalek Simulator" adalah 7 suku kata?) - apa pun itu, bukankah seharusnya 5 suku kata untuk baris ketiga?
Paul R
@ PaulR: Anda benar. Diedit ke sesuatu yang terdiri dari 5 suku kata. ;)
Li-aung Yip
1
Bonus untuk solusi Piet?
ugoren
1
@ugoren: Jika Anda dapat membuat program Piet terlihat seperti haiku, saya cukup yakin itu akan memenangkan Hadiah Utama. ;)
Li-aung Yip

Jawaban:

46

Gangguan umum

Kurung diam!

Program:

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

Baca sebagai:

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

Keluaran:

((THIS IS LISP HAIKU) (TRULY THIS IS LISP HAIKU) (THIS IS LISP HAIKU))
Paul Richter
sumber
Ini membuatku lelah selama lima menit. Sudah selesai dilakukan dengan baik!
Li-aung Yip
78

C #

Program:

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

Baca baca:

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

Output kompiler :

#warning: 'Lonesome'        (read: hash warning lonesome)
Empty character literal     (read: empty character lit’ral)
Newline in constant
Timwi
sumber
14
Output kompiler ?! Interpretasi kreatif dari aturan - saya menyukainya. Ini juga anehnya zen ...
Li-aung Yip
2
Ini adalah kompiler puisi ... +1!
Cristian Lupascu
6
Saya berharap saya bisa memperbaiki ini lebih dari satu kali.
Gareth
@ Gareth ditto !!
Gaffi
1
Aku benar-benar tertawa terbahak-bahak pada puisi kesepian kompiler itu. Apakah saya sadis? Baris baru dalam konstanta.
Alpha
48

Piet, 867 mengeksekusi blok warna

Grand Prize, katamu? Ini memiliki ukuran kode 2.

haiku yang mencetak sendiri

Keluaran:

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

Tantangan ini menyenangkan! Saya sudah menulis encoder instruksi Piet yang mengambil instruksi dan menerjemahkannya ke dalam skrip Piet. Ini pekerjaan singkat dari sana untuk menghasilkan kode untuk mencetak string yang diberikan. Saya menaruh sedikit usaha (tapi efektif) dalam bermain golf kode Piet sementara hanya menggunakan instruksi codel tunggal.

Saya kemudian membuat font piksel. Untuk setiap piksel dalam sebuah karakter, saya meledakkannya menjadi 4 codels: 2 hitam, dan 2 dieksekusi. Codel pertama yang ditemukan adalah non-executing, jadi jika segmen karakter memiliki n piksel, misalnya, yang sesuai dengan instruksi 2 * n * -1.

Garis di sisi membalikkan penunjuk arah dan memindahkannya ke bawah dengan 2 piksel, membawanya ke baris berikutnya. Dengan demikian, instruksi dibalik pada setiap baris lainnya.

Setelah saya memiliki kode untuk menghasilkan "teks yang tertanam dalam teks", itu menjadi menyenangkan. Saya mungkin menulis 20 haiku di sepanjang jalan, tetapi akhirnya saya menetap. Dengan mengutak-atik font; menambahkan / menghapus serif, sudut pembulatan, mengubah tinggi / lebar, dll., saya dapat mengubah jumlah total piksel non-putih pada gambar sedemikian rupa sehingga kode Piet cocok tepat ke dalam teks gambar.

Bonus! Anda dapat membuat haiku seperti quinelike Anda sendiri! http://pastebin.com/zxc9V3UX

stan
sumber
Apakah ada tempat online yang bisa saya uji? Jika berhasil pasti bernilai +1.
Gareth
Saya menemukan satu di sini , tetapi program tidak memberikan output :-(
Gareth
@ Gareth, Piet agak terkenal karena editor / penerjemahnya yang jelek, dan saya tidak bisa mendapatkan editor online npiet untuk menghasilkan output untuk apa pun. Skrip yang diposting bekerja di PietIDE .
Stanby
1
Sayangnya, yang satu ini benar-benar kacau di Chrome di Mac saya. Saya akan melihat apakah saya dapat mengunduh yang berfungsi besok.
Gareth
1
Saya mendengar Anda menyukai haiku, jadi saya menempatkan haiku di foto Anda tentang haiku sehingga Anda mendapatkan haiku saat Anda haiku.
Li-aung Yip
23

Perl

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

Cara membacanya dengan lantang:

dollar underscore
equals repeating myself
print nis like line noise.

Keluaran:

Repeating myself
is like Repeating myself.
Repeating myself.
Timwi
sumber
5
Bukankah ini adalah cara untuk membaca dolar dengan menggarisbawahi dengan keras di baris pertama tetapi kemudian melewatkannya (bersama dengan beberapa karakter lain) di baris ketiga?
dspyz
Ya, itu benar-benar :)
Timwi
19

INTERCAL

INTERCAL memiliki kemampuan output terbatas, tetapi "kemampuan terbatas" tidak pernah menghentikan saya untuk menulis program INTERCAL!

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

Harap baca [ini] sebagai:

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

(Perhatikan bahwa boilerplate saya ada di akhir program, bukan di awal.)

Program menghasilkan output:

XVIII

MMMCCCI

CCXIV

Yang, ketika diucapkan dengan keras, berbunyi:

Ex vee eye eye eye,
Em em em cee cee cee eye,
Cee cee ex eye vee.
kotak roti
sumber
1
Saya pikir Anda perlu terapi.
Chris Kitching
13

CoffeeScript

Dengan lidah tegas di pipi, saya menyajikan CoffeeScript:

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

Jelas:

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

Jika waktu Anda tepat (!), Output Anda mungkin mis 1337181872717, diucapkan:

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

Mempertimbangkan menjalankan pertama saya di ini adalah satu mikrodetik dari respon haiku yang valid, saya pikir itu cukup untuk memenuhi syarat zen!

NB: Saya akan senang mendengar alternatif zen cukup untuk dua baris pertama saya (diakui lemah).

Johno
sumber
+1 untuk "jika waktu Anda tepat" dan "satu tiga tiga tujuh"
bertepuk tangan
10

J

Program:

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

Baca (mengganti nama kata kerja):

Prime Integers Four
Square Square Square Integers 3
Factorial Eight

Output (baca angka dengan keras):

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

Python

Kode:

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

Cara membaca:

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

Keluaran:

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

Sampel kerja: http://ideone.com/hDniW

Cristian Lupascu
sumber
7

logo

Berikut ini adalah prosedur Haiku yang juga merupakan prosedur quine (mudah karena kemampuan introspeksi logo)

to better_yourself
  printout "better_yourself
end ; as you began

Baca sebagai

Untuk memperbaiki diri Anda.
Cetak penawaran dengan lebih baik.
Akhiri saat Anda mulai

Geoff Reedy
sumber
1
Saya membaca "Logo" dan berpikir, "Ini akan melibatkan kura-kura yang menulis Haiku, bukan ?!" +1 meskipun tidak ada PENAUPAN atau PENAWARAN. :)
Li-aung Yip
4

Rubi

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

Baca sebagai:

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

Sayangnya, itu tidak mengalir dengan baik. Dalam pembelaanku, ini jam 12:50 ...

duckinator
sumber
3

JavaScript (tidak berfungsi di Firefox)

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

bekerja kecuali untuk
mesin javascript mozilla dan menunjukkan
ejaan setelah berlari

Konrad Borowski
sumber
3

Python

(Hanya baca kurung tingkat pertama (bukan yang kedua)).

Kode dan cara membaca:

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, mungkin haiku paling mendasar di dunia:

oh oh oh oh oh
oh oh oh oh oh oh oh
oh oh oh oh oh
daniero
sumber
Anda mungkin bisa mengganti True == Falsedengan True is Falseuntuk membuat kode program lebih seperti bagaimana Anda membacanya.
@LegoStormtroopr setuju. Sunting: Saya lupa tentang ini. Betapapun bodohnya hasilnya, saya merasa aneh untuk membacanya keras-keras dalam "suara peotry" saya yang paling serius.
daniero
Setidaknya dalam Python 3, what = thenbisa juga diganti dengan what is then.
MaxiMouse
3

Python (2 entri)

Entri 1: Haiku tepat waktu

Anda perlu menyimpan ini dalam file dan menjalankannya dari direktori yang sama. Haiku ini dengan lambat mencetak dirinya sendiri ke layar, sebuah puisi dalam kata-kata dan waktu.

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

Entri 2: A haiku tanpa simbolisme

Ini mirip dengan di atas, tetapi merupakan upaya untuk menulis haiku Python yang hanya menggunakan kata kunci dan tanda kurung minimal atau penggantian simbol (mis. =Diucapkan sebagai "adalah").

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

sumber
2

Tcl

Berikut adalah dokumentasi diri, output-sendiri, contoh:

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

Vim

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

baca sebagai

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

Menulis:

a-1
a-1-
-7

dibaca sebagai:

a negative one
a minus one negative
negative seven
Lemon dirusak
sumber
0

Python 3

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

Baca sebagai:

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

Cetakan:

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

Baca sebagai:

print value dot dot
ellipses, sep equals blank
reverse solidus
Lemon dirusak
sumber