/ / Erro no loop while aninhado para golfscript - golfscript

Erro no loop while aninhado para golfscript - golfscript

São aninhados enquanto loops quebrados em golfscript ou eu não sei como usá-los?

Eu quero iterar Q de 5 para 0, e para cada iteração, iterar Z de 10 para 0. Os loops simples funcionam bem separadamente, e eles parecem auto-contidos (não confiando na pilha entre as operações):

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

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

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

Mas se eu colocar o loop Z dentro do loop Q, obtenho resultados estranhos:

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"

Com base na impressão Z para fora duas vezes, parece que existe apenas um bloco condicional atual e qualquer execução de "while" substitui-o.

De qualquer forma, como eu conseguiria esse feito no golfscript?

Respostas:

2 para resposta № 1

Parece que o intérprete (apenas)infelizmente não manipula aninhado do / while / até loops corretamente.O problema parece surgir apenas quando você tem dois desses loops ao mesmo tempo aninhados, e não quando os loops são tipos diferentes.

Por exemplo:

{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"

Estranhamente eu não notei esse erro antes. Geralmente, usar as construções {}% e {} / será melhor do que usar os ciclos do / while / until se elas forem aplicáveis. Para o seu exemplo, seria melhor usar:

6,-1%{:Q"Q: "+p
11,-1%{:Z"Z: "+p}/
}/