NUMAH LITTERS OV KITTEHS ON TEH NETZ
Нечестно, что 1% пользователей владеют 75% вопросов о lolcode. #OccupyMatsMug
~ user2296177
Я согласен. Без дальнейших церемоний, вот версия LOLCODE из 99 бутылок пива на стене:
OBTW
PRINT TEH LOLCODE VERSHUN OV N BOTTLEZ OV BER ON TEH WALL.
TLDR
HAI 1.3
HOW IZ I COUNTDOWN YR NUMAH
I HAS A NAUW ITZ A NUMBR
I HAS A LEZZ ITZ A NUMBR
IM IN YR LOOPZ NERFIN YR COWNTR TIL BOTH SAEM COWNTR AN DIFF OF 1 AN NUMAH
NAUW R SUM OF NUMAH AN COWNTR
LEZZ R DIFF OF NAUW AN 1
VISIBLE SMOOSH NAUW AN " LITTERS OV KITTEHS ON TEH NETZ" MKAY
VISIBLE SMOOSH NAUW AN " LITTERS OV KITTEHS" MKAY
VISIBLE "WAN FALLS DOWN AN BREAKZ PAH"
VISIBLE SMOOSH LEZZ AN " LITTERS OV KITTEHS ON TEH NETZ" MKAY
VISIBLE ""
IM OUTTA YR LOOPZ
VISIBLE "1 LITTER OV KITTEHS ON TEH NETZ"
VISIBLE "1 LITTER OV KITTEHS"
VISIBLE "WAN FALLS DOWN AN BREAKZ PAH"
VISIBLE "NO MOAR LITTERs OV KITTEHS ON TEH NETZ"
IF U SAY SO
I IZ COUNTDOWN YR 99 MKAY
KTHXBYE
Отказ от ответственности: при написании этой программы никакие фактические котята не пострадали.
Число итераций сохраняется в переменной NUMAH
. Я знаю, что NUMBR
- более подходящее имя, но это уже заявлено как тип.
Вышеприведенное скомпилировано с использованием последней lci , используя 1.3 спецификация (благодаря Pimgd для ссылки). Поскольку спецификация 1.3 не содержит всех признаков языка, см. 1.2 .
Я не думаю, что у LOLCODE есть шаблоны или подобные, поэтому получение всего вывода на экране немного утомительно.
Вывод:
99 LITTERS OV KITTEHS ON TEH NETZ
99 LITTERS OV KITTEHS
WAN FALLS DOWN AN BREAKZ PAH
98 LITTERS OV KITTEHS ON TEH NETZ
и др.
1 LITTER OV KITTEHS ON TEH NETZ
1 LITTER OV KITTEHS
WAN FALLS DOWN AN BREAKZ PAH
NO MOAR LITTERs OV KITTEHS ON TEH NETZ
Является ли этот идиоматический LOLCODE?
1 ответ
Переменная капитализация
IT IZ PRETTY GUD LOLCODE
HOWEVEZ ME ДУМАЕТ, ЧТО ТЕЛ LOLCODEZ R EZYR 2 ЧИТАЕТ ЕСЛИ TEH VARZ R нижний регистр
ZIS BECUZ ALL CAPS HARD TOO READ
(все орфографические «ошибки», сделанные моей кошкой, которые помогли мне в этой части этого обзора)
Более серьезно, это проблема, что нет хороших синтаксических индикаторов LOLCODE. Быть «стильным» и хранить все прописные буквы - это выбор, который вы можете сделать, но лично я предпочитаю использовать имена переменных в нижнем регистре или camelCase, сохраняя при этом язык строит все кепки. Подобно SQL, это позволяет вам видеть, какие части кода являются переменными, а какие - языковыми конструкциями.
Для сравнения:
I HAS A NAUW ITZ A NUMBR
I HAS A LEZZ ITZ A NUMBR
IM IN YR LOOPZ NERFIN YR COWNTR TIL BOTH SAEM COWNTR AN DIFF OF 1 AN NUMAH
NAUW R SUM OF NUMAH AN COWNTR
LEZZ R DIFF OF NAUW AN 1
VISIBLE SMOOSH NAUW AN " LITTERS OV KITTEHS ON TEH NETZ" MKAY
VISIBLE SMOOSH NAUW AN " LITTERS OV KITTEHS" MKAY
VISIBLE "WAN FALLS DOWN AN BREAKZ PAH"
VISIBLE SMOOSH LEZZ AN " LITTERS OV KITTEHS ON TEH NETZ" MKAY
VISIBLE ""
IM OUTTA YR LOOPZ
с ...
I HAS A nauw ITZ A NUMBR
I HAS A lezz ITZ A NUMBR
IM IN YR LOOPZ NERFIN YR cowntr TIL BOTH SAEM cowntr AN DIFF OF 1 AN numah
nauw R SUM OF numah AN cowntr
lezz R DIFF OF nauw AN 1
VISIBLE SMOOSH nauw AN " LITTERS OV KITTEHS ON TEH NETZ" MKAY
VISIBLE SMOOSH nauw AN " LITTERS OV KITTEHS" MKAY
VISIBLE "WAN FALLS DOWN AN BREAKZ PAH"
VISIBLE SMOOSH lezz AN " LITTERS OV KITTEHS ON TEH NETZ" MKAY
VISIBLE ""
IM OUTTA YR LOOPZ
Именование переменных
Что касается NUMAH
, рассмотрели ли вы использование NUMBAH
? Подобное значение, но использует более распространенное неправильное представление.
Работа со спецификацией
IM IN YR LOOPZ NERFIN YR COWNTR TIL BOTH SAEM COWNTR AN DIFF OF 1 AN NUMAH
NAUW R SUM OF NUMAH AN COWNTR
Эта конструкция неочевидна. Вы должны были обойти spec, чтобы сделать то, что вы хотели сделать, и я думаю, что это требует объяснения. Добавить комментарий через BTW
:
IM IN YR LOOPZ NERFIN YR COWNTR TIL BOTH SAEM COWNTR AN DIFF OF 1 AN NUMAH
NAUW R SUM OF NUMAH AN COWNTR BTW workaround loop counters starting at 0
Правильность в угловых случаях
Ваша функция не проверяет, превышено ли значение, превышающее 0. Это означает, что он ложно заставляет KITTEH разорвать лапу, когда это не было необходимо.
Добавить предложение охраны в верхней части функции; вы можете выполнить раннее возвращение через GTFO
.
DIFFRINT numbah AN BIGGR OF numbah AN 0
O RLY? YA RLY
GTFO
OIC
Определение программы
OBTW
PRINT TEH LOLCODE VERSHUN OV N BOTTLEZ OV BER ON TEH WALL.
TLDR
HAI 1.3
Помимо странной фразы (этот код печатает версию lolcode /и бутылки пива на стене?), здесь что-то еще не так: ваш комментарий перед HAI 1.3
. Поэтому любой интерпретатор, загружающий ваш файл, может не знать, какую версию вы используете. Поместите свой номер версии вверху.
Возможные альтернативные диалекты
VISIBLE "NO MOAR LITTERs OV KITTEHS ON TEH NETZ"
Сделали ли вы опечатку здесь, это альтернативный диалект на китти, который использует строчные буквы для определенных множественных чисел? Я не уверен.
Наконец, я думаю, что эта версия 99 LITTERS OV KITTEHS ON TEH NETZ не является подлинной, так как все знают, что когда KITTEHS падают, они будут в порядке. Эта версия печальна, так как все KITTEHS просто ломают лапы. Правильный LOLCODE использует кошек, а не abuse .