ハノイの塔
ハノイの塔でプログラミングするというのは、比較的よく見られますね。
最近ですと、FIzzBuzzでしょうか。
再帰の勉強になるということで、awk版を作成してみました。
#!/usr/bin/awk -f # ハノイの等 BEGIN{ ARGC == 2 ? n = ARGV[1] : n = 3; printf("円盤%d枚を柱1から柱2に移す方法は次の%u手です。\n",n, lshift(1,n) - 1); movedisk(n, 1, 2); } function movedisk(n, a, b){ if(n > 1){ movedisk(n - 1, a, 6 - a - b); } printf("円盤%dを%dから%dに移す\n",n, a, b); if(n > 1){ movedisk(n - 1,6 - a - b ,b); } }
実行してみる
awk -f hanoi.awk 円盤3枚を柱1から柱2に移す方法は次の7手です。 円盤1を1から2に移す 円盤2を1から3に移す 円盤1を2から3に移す 円盤3を1から2に移す 円盤1を3から1に移す 円盤2を3から2に移す 円盤1を1から2に移す
こんなに短いプログラムで出来るなんて驚きですね!!