CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

Nクイーン問題

LSIC-86も言語仕様的には何の遜色もないのですが、使い慣れてるせいもあってMSC6.0でのコーディングが楽でほぼそれに移行しています。
浮動小数点処理を使用しなければ例外処理やライブラリも軽くなるので出来上がりサイズもかなり小さくなり、組込み用ファームウェアにも充分使えそうです
 
今回やってみたのはC言語の例題でよくでてくるNクイーンパズルの解法です。
N×Nのチェスの盤上にN個のクイーンをお互いに取れないように配置するパズルで
ここでは関数を再帰的に呼び出して解の探索をしています。
 
 
イメージ 1
 
N=10で 配置のバリエーションは理論どおり724通りになりますが、Nの増加によって解の数が爆発的に増大することがわかっているのでこんなところです。
 
表示位置や文字色の制御のためエスケープシーケンスによる表示属性を制御する関数群をざっくり作りライブラリ化しました。たとえば表示文字色の変更はこんな関数。
 
イメージ 2
 
今時エスケープシーケンスなんてと思いきや、ターミナルソフトがちゃんと対応していました。
「Q」の文字はこれで赤くしています