Итерационные циклы имеют вид:
IM IN YR <label> <operation> YR <variable> [TIL|WILE <expression>]
<code block>
IM OUTTA YR <label>
Где может быть UPPIN (увеличение на единицу), NERFIN (уменьшение на единицу) или любая унарная функция.Эта операция / функция применяется к , который является временным и локальным для цикла.TIL оценивает выражение как TROOF: если оно оценивается как FAIL, цикл продолжается еще раз, если нет, то выполнение цикла останавливается и продолжается после соответствующего IM OUTTA YR
Question
Моя схватка со спецификацией - это сочетание:
- отсутствие инициализатора переменной цикла
- тот факт, что он является временным и локальным для цикла
Насколько я понимаю, это означает, что это имеет , чтобы начинаться с 0.
Хотя это в основном нормально для большинства применений UPPIN
, для большинства (моих) предполагаемых применений NERFIN
он полностью отключен.Мое наиболее распространенное использование переменной цикла с уменьшением в других языках - это идиома и строковые операции "repeat n times ( n не повторное использование)", которые не были бы хорошимиидея в LOLCODE в любом случае.
Можно ли использовать NERFIN
, чтобы получить декремент цикла от n до 1 или 0 таким способом, который менее многословен, чем эквиваленты с UPPIN
илибезоперационные формы зацикливания?
Сравнение альтернатив
Печать 5 4 3 2 1 с вариантом UPPIN
:
IM IN YR LOOPZ UPPIN YR COWNTR TIL BOTH SAEM COWNTR AN 5
VISIBLE DIFF OF 5 AN COWNTR
IM OUTTA YR LOOPZ
Плюсы: краткий
Минусы: фактическая переменная цикла недоступна напрямую.
С безоперационным вариантом:
I HAS A COWNTR ITZ 5
IM IN YR LOOPZ
VISIBLE COWNTR
COWNTR R DIFF OF COWNTR AN 1
BOTH SAEM COWNTR AN 0, O RLY?
YA RLY, GTFO, OIC
IM OUTTA YR LOOPZ
Плюсы: переменная цикла являетсяпрямо доступны.
Минусы: больше.
Лучшее, что я могу получить с NERFIN
:
IM IN YR LOOPZ NERFIN YR COWNTR TIL BOTH SAEM COWNTR AN -5
VISIBLE SUM OF 5 AN COWNTR
IM OUTTA YR LOOPZ
Плюсы: err ... используетNERFIN
?
Минусы: переменная цикла не доступна напрямую;менее читабельный (хах!), чем вариант UPPIN
;нет усиления многословия.
вопрос TLDR, повторяется
Можно ли использовать NERFIN
, чтобы получить уменьшение цикла от n до 1 или 0 таким образом, чтобыменее многословно, чем эквиваленты с UPPIN
или безоперационными формами зацикливания?
Я использую интерпретатор lci на уровне спецификации языка 1.2.