golfscript的嵌套while循环出错

golfscript的嵌套while循环出错,golfscript,Golfscript,是嵌套的,而循环在golfscript中被破坏,还是我不知道如何使用它们 我想将Q从5迭代到0,对于每个迭代,将Z从10迭代到0。单个循环单独运行良好,并且它们似乎是自包含的(不依赖于操作之间的堆栈): 但是如果我把Z循环放在Q循环中,我会得到奇怪的结果: 5:Q; {"Q:"Q+ p Q} { 10:Z;{"Z:"Z+ p Z}{Z 1- :Z;}while Q 1- :Q; }while Output: "Q:5" "Z:10" "Z:9" "Z:8" "Z:7" "Z:6" "

是嵌套的,而循环在golfscript中被破坏,还是我不知道如何使用它们

我想将Q从5迭代到0,对于每个迭代,将Z从10迭代到0。单个循环单独运行良好,并且它们似乎是自包含的(不依赖于操作之间的堆栈):

但是如果我把Z循环放在Q循环中,我会得到奇怪的结果:

5:Q;
{"Q:"Q+ p Q}
{
  10:Z;{"Z:"Z+ p Z}{Z 1- :Z;}while

  Q 1- :Q;
}while
Output:

"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打印两次,似乎只有一个当前条件块,任何执行“while”都会覆盖它

在任何情况下,我如何在golfscript中完成这一壮举?

看起来(唯一)解释器不幸地无法正确处理嵌套的do/while/until循环。问题似乎只有在嵌套了两个相同时间的循环时才会出现,而不是在循环类型不同时

例如:

{0do 1}do       #not an infinite loop, but it should be
{0{}while 1}do  #is an infinite loop as expected
{0{"i"p}while 1}{"o"p}while
     #not an infinite loop, outputs "i" instead of continuously outputting "o"
奇怪的是,我以前没有注意到这个错误。通常,如果适用,使用构造{}%和{}/将比使用do/while/until循环更好。例如,最好使用:

6,-1%{:Q"Q: "\+p
 11,-1%{:Z"Z: "\+p}/
}/
可能重复的
6,-1%{:Q"Q: "\+p
 11,-1%{:Z"Z: "\+p}/
}/