Исполняемый хайку, который выводит хайку [закрыто]


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: Если вы можете сделать программу Пайет похожей на хайку, я уверен, что это выиграет главный приз. ;)
Ли-Аунг Ип

Ответы:


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

Это потрясло меня на добрых пять минут. Отлично сработано!
Ли-Аунг Ип

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
Вывод компилятора ?! Творческая интерпретация правил - мне это нравится. Это также странно дзен ...
Ли-Аунг Ип

2
Это поэзия компилятора ... +1!
Кристиан Лупаску

6
Хотелось бы, чтобы я высказался об этом не раз.
Гарет

@ Гарет то же самое!
Гаффи

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

48

Пита, 867 исполняющих цветовых блоков

Гран-при, говорите? Это имеет размер кода 2.

хайку, которая печатает сама

Выход:

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

Это было весело! Я написал кодировщик инструкций Piet, который берет инструкции и переводит их в скрипт Piet. Это короткая работа по созданию кода для печати заданной строки. Я приложил небольшое (но эффективное) усилие к игре в гольф кода Пита, используя только инструкции с одним кодом.

Затем я сделал пиксельный шрифт. Для каждого пикселя в символе я делю его на 4 кода: 2 черных и 2 выполненных. Первый кодовый элемент не выполняется, поэтому, если сегмент символа имеет , например, n пикселей, это соответствует 2 * n * -1 инструкциям.

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

Как только у меня появился код для создания «текста, встроенного в текст», это становится забавным. Я, вероятно, написал 20 хайку по пути, но в конце концов решил. Изменяя шрифт; добавляя / удаляя засечки, закругляя углы, изменяя высоту / ширину и т. д., я смог изменить общее количество небелых пикселей в изображении так, чтобы код Пиета точно вписывался в текст изображения.

Бонус! Вы можете сделать свое собственное хайку в стиле quine! http://pastebin.com/zxc9V3UX


Где-нибудь в сети я могу это проверить? Если это работает, это определенно стоит +1.
Гарет

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

@Gareth, Piet довольно печально известен своими паршивыми редакторами / переводчиками, и мне не удалось заставить онлайн-редактор npiet производить вывод для чего-либо. Размещенный скрипт работает на PietIDE .
Boothby

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 ограниченные возможности вывода, но «ограниченные возможности» никогда не мешали мне писать программу 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. :)
Ли-Аунг Ип

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

работает за исключением
движка Mozilla 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 согласился. Изменить: я забыл об этом. Как бы глупо это ни звучало, я нахожу странным удовлетворение, чтобы прочитать это вслух своим самым серьезным «острым голосом».
Даньеро

По крайней мере, в Python 3, what = thenтакже можно заменить witn 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

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