ゴルフスクリプトでループが壊れている間にネストされていますか、それとも使用方法がわかりませんか?
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 が 2 回出力したことに基づいて、現在の条件付きブロックは 1 つしかないように見え、「while」を実行するとそれが上書きされます。
いずれにせよ、golfscript でこの偉業を達成するにはどうすればよいでしょうか?