Виконане хайку, яке видає хайку [закрито]


37

Головоломка:

Напишіть коротку трирядкову програму, яка:

  • при читанні вголос має 5/7/5 складів на рядок
  • виводить хайку під час запуску.

Прикладом програми, що має правильну структуру, але не хайку, є (Python):

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

(Коментар - трохи коп.)

Це читається вголос як:

для х у діапазоні три

друкувати ВИНАХОДНІ ЛЮДИНИ!

Я далек.

Будь-яка мова є прийнятною. Для читання вголос подібні символи !@#$%^&*()_+можна ігнорувати, якщо хочете, або вимовляти вголос, визнаючи щось на зразок Waka Waka Bang Splat . (Я впевнений, що там буде запис Perl !***(!:, )(*@@@#, )_(*)!.)

Додаткові бали, якщо або код, або вихід особливо смішний, або особливо дзен.


Редагувати: Якщо для вашої мови потрібна панель котла, перш ніж вона зможе зробити щось цікаве ( #include <iostream>?), Тоді я радий ігнорувати панель котлів.


Я прийняв звичайний хайку Пола Ріхтера на Липпі на тій підставі, що це змусило мене сміятися добрі п’ять хвилин.

Почесна згадка за творче згинання Тимві ( виведення компілятора ?!) та надзвичайно пам'ятну лінію"Static void. I long for you."

Тепер це питання закінчується;

Ще багато хайкусів чекають.

Продовжуйте публікувати!


Я настійно пропоную вам не допустити використання котячих мов ...
MrZander

1
"Dalek Simulator" - це 6 складів (а може, "# Dalek Simulator" - це 7 складів?) - в будь-якому випадку, чи не повинно бути 5 складів для третього рядка?
Пол Р

@PaulR: Ти маєш рацію. Відредаговано на щось, що становить 5 складів. ;)
Лі-Аун Іп

1
Бонус до рішення Piet?
угорен

1
@ugoren: Якщо ви зможете зробити програму Piet схожою на хайку, я впевнений, що виграв би Гран-приз. ;)
Лі-Аун Іп

Відповіді:


46

Звичайний Лисп

Батьки мовчать!

Програма:

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

Читати як:

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

Вихід:

((THIS IS LISP HAIKU) (TRULY THIS IS LISP HAIKU) (THIS IS LISP HAIKU))

Це розламало мене на добрі п’ять хвилин. Молодці!
Li-aung Yip

78

C #

Програма:

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

Прочитайте:

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

Вихід компілятора :

#warning: 'Lonesome'        (read: hash warning lonesome)
Empty character literal     (read: empty character lit’ral)
Newline in constant

14
Вихід компілятора ?! Творче тлумачення правил - мені це подобається. Це також дивно дзен ...
Li-aung Yip

2
Це поезія укладача ... +1!
Крістіан Лупаску

6
Я б хотів, щоб я міг підтримати це не раз.
Гарет

@Gareth Ditto !!
Гаффі

1
Я буквально голосно сміявся над поезією самотності укладача. Чи я судився? Новий рядок у константі.
Альфа

48

Піт, 867 виконання кольорових блоків

Великий приз, ви кажете? Це розмір коделі 2.

a haiku that prints itself

Вихід:

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

Цей виклик був веселим! Я написав кодер інструкцій Piet, який приймає інструкції та переводить їх у сценарій Piet. Звідти це коротка робота над створенням коду для друку заданого рядка. Я вкладаю невелику (але ефективну) кількість зусиль у гольф-код Piet, використовуючи лише інструкції з одним кодом.

Потім я зробив піксельний шрифт. На кожен піксель символу я розбиваю його на 4 коделі: 2 чорних та 2 виконаних. Перший кодер, що зустрічається, не виконується, тому, якщо сегмент символу має n пікселів, наприклад, що відповідає 2 * n * -1 інструкціям.

Лінії вниз по сторонах повертають вказівник напрямку і переміщують його вниз на 2 пікселі, переводячи його в наступний ряд. Таким чином, інструкції змінюються на кожному другому рядку.

Після того, як у мене був код, щоб створити "текст, вбудований у текст", це стає веселим. Я, певно, написав 20 хайку по дорозі, але я врешті влаштувався. Налаштування шрифту; додаючи / видаляючи серіфи, округлюючи кути, змінюючи висоту / ширину тощо, я зміг змінити загальну кількість небілих пікселів у зображенні таким чином, щоб код Piet точно вписався в текст зображення.

Бонус! Ви можете зробити свій власний квініковий хайку! http://pastebin.com/zxc9V3UX


Чи є десь в Інтернеті, я можу це перевірити? Якщо це працює, напевно варто +1.
Гарет

Я знайшов тут один , але програма не дала результатів :-(
Гарет

@Gareth, Piet досить відомий своїми паршивими редакторами / перекладачами, і мені не вдалося змусити інтернет-редактора npiet створити вихід для нічого. Опублікований сценарій працює на PietIDE .
стенд

1
На жаль, ця версія повністю захищена в Chrome на моєму Mac. Я побачу, чи зможу я завантажити завантажений завтра.
Гарет

1
Я чув, як ти любиш хайку, тому я помістив хайку на твою картинку хайку, щоб ти отримав хайку, коли хайку.
Лі-Аун Іп

23

Perl

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

Як це прочитати вголос:

dollar underscore
equals repeating myself
print nis like line noise.

Вихід:

Repeating myself
is like Repeating myself.
Repeating myself.

5
Хіба це не коп, щоб прочитати вголос підкреслення долара в першому рядку, а потім пропустити його (разом із ще кількома іншими символами) на третьому рядку?
dspyz

Так, це дійсно :)
Тімві

19

ІНТЕРКАЛ

INTERCAL має обмежені можливості виводу, але "обмежені можливості" ніколи не заважали мені писати програму INTERCAL!

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

Будь ласка, прочитайте це [як]:

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

(Зверніть увагу, що моя котел знаходиться в кінці програми, а не на початку.)

Програма виробляє вихід:

XVIII

MMMCCCI

CCXIV

Що, коли говорити вголос, йде:

Ex vee eye eye eye,
Em em em cee cee cee eye,
Cee cee ex eye vee.

1
Я думаю, що вам потрібна терапія.
Кріс Кітчінг

13

CoffeeScript

З твердим язиком у щоці я представляю CoffeeScript:

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

Вимовлено:

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

Якщо ваш час встановлено правильно (!), Результат може бути, наприклад, 1337181872717, вимовляється:

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

Зважаючи на те, що мій перший пробіг у цьому був однією мікросекундою з дійсної відповіді хайку, я думаю, що це достатньо дзен, щоб кваліфікуватись!

NB: Я був би радий почути достатньо дзен-альтернатив для моїх перших двох (правда, слабких) рядків.


+1 для "якщо ваш термін правильний" та "одна три три сім"
плескайте

10

J

Програма:

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

Прочитайте (замінюючи імена дієслів):

Prime Integers Four
Square Square Square Integers 3
Factorial Eight

Вихід (читання цифр вголос):

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

8

Пітон

Код:

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

Як читати:

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

Вихід:

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

Робочий зразок: http://ideone.com/hDniW


7

логотип

Ось процедура Haiku, яка також є процедурою quine (легко через можливість самоаналізу логотипу)

to better_yourself
  printout "better_yourself
end ; as you began

Читати як

Щоб краще себе
роздрукувати, краще виведіть цитату
Кінець, як ви почали


1
Я прочитав "Логотип" і подумав: "Це стосується черепахи, яка пише хайку, чи не так ?!" +1, навіть якщо не було PEN UP або PEN DOWN. :)
Li-aung Yip

4

Рубін

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

Читати як:

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

На жаль, це не дуже добре тече. На свій захист, то є 12:50 Амер ...


3

JavaScript (не працює у Firefox)

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

працює за винятком
двигуна JavaScript JavaScript і показує
правопис після запуску


3

Пітон

(Читайте лише дужки першого рівня (не другого)).

Код і як читати:

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_

Вихід, мабуть, найосновніший хайку у світі:

oh oh oh oh oh
oh oh oh oh oh oh oh
oh oh oh oh oh

Ви могли б просто замінити True == Falseз , True is Falseщоб зробити програмний код більш подобається , як ви б читати.

@LegoStormtroopr погодився. Редагувати: Я забув про це. Наскільки дурним, як результат, я вважаю, що дивно задоволення читати це вголос своїм найсерйознішим "голосом".
daniero

Принаймні, в Python 3 what = thenтакож можна було б замінити вин what is then.
MaxiMouse

3

Python (2 записи)

Запис 1: Хайку в часі

Вам потрібно зберегти це у файлі та запустити його з тієї самої директорії. Цей хайку дуже повільно виводить себе на екран, вірш словами та часом.

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

Запис 2: Хайку без символіки

Це схоже на вищезазначене, але це була спроба написати хайку Python, який використовував лише ключові слова та мінімальні дужки або підстановку символів (наприклад, =вимовляється як "є").

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

2

Tcl

Ось приклад самодокументації, самовиведення:

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

0

Вим

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

читати як

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

Пише:

a-1
a-1-
-7

читати як:

a negative one
a minus one negative
negative seven

0

Пітон 3

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

Читати як:

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

Друкує:

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

Читати як:

print value dot dot
ellipses, sep equals blank
reverse solidus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.