Вложены ли циклы, нарушенные в golfscript, или я не знаю, как их использовать?
Я хочу перебирать Q от 5 до 0, и для каждой итерации перебирать Z от 10 до 0.Циклы хорошо работают отдельно, и они кажутся автономными (не полагаясь на стек между операциями):
5:Q;
{"Q:"Q+ p Q}
{
Q 1- :Q;
}while
10:Z;{"Z:"Z+ p Z}{Z 1- :Z;}while
Вывод:
"Q:5"
"Q:4"
"Q:3"
"Q:2"
"Q:1"
"Q:0"
"Z:10"
"Z:9"
"Z:8"
"Z:7"
"Z:6"
"Z:5"
"Z:4"
"Z:3"
"Z:2"
"Z:1"
"Z:0"
Но если я помещу цикл Z внутрьЦикл Q, я получаю странные результаты:
5:Q;
{"Q:"Q+ p Q}
{
10:Z;{"Z:"Z+ p Z}{Z 1- :Z;}while
Q 1- :Q;
}while
Вывод:
"Q:5"
"Z:10"
"Z:9"
"Z:8"
"Z:7"
"Z:6"
"Z:5"
"Z:4"
"Z:3"
"Z:2"
"Z:1"
"Z:0"
"Z:0"
Если дважды распечатать Z, кажется, что существует только один текущий условный блок и любое выполнение«пока» перезаписывает это.
В любом случае, как бы я совершил этот подвиг в сценарии гольфа?