このディレクトリの索引

九九表([ [1,2,3,3,4,6,7,8,9], [2,4,6,8,10,12,14,16,18], [3,6,9,12,15,18,21,24,27], [4,8,12,16,20,24,28,32,36], [5,10,15,20,25,30,35,40,45], [6,12,18,24,30,36,42,48,54], [7,14,21,28,35,42,49,56,63], [8,16,24,32,40,48,56,64,72], [9,18,27,36,45,54,63,72,81]]). '「21÷7 の計算は、九九表をどのように辿れば答えがえられますか?」ならば全然問題がないように思いますが。'(_答え,_答えは何段目にある) :- 九九表を得る(_九九表), '7を段から辿るか、列から辿るかを決める'(_段経由または列経由), 九九表から7段目または7列目を取り出す(_段経由または列経由,_九九表,_取り出した段または列), '7段目または7列目経由で21を探しその要素位置が答えである'(_段経由または列経由,_取り出した段または列,_答え,_答えは何段目にある). 九九表を得る(_九九表) :- 九九表(_九九表). '7を段から辿るか、列から辿るかを決める'(段経由) :- '発生させた乱数が偶数の時、段経由とする',!. '7を段から辿るか、列から辿るかを決める'(列経由). 九九表から7段目または7列目を取り出す(段経由,_九九表,_取り出した段または列) :- nth1(7,_九九表,_取り出した段または列). 九九表から7段目または7列目を取り出す(列経由,_九九表,_取り出した段または列) :- findall(_列の値,( nth1(_,_九九表,_段), nth1(7,_段,_列の値)), _取り出した段または列). '7段目または7列目経由で21を探しその要素位置が答えである'(段経由,_取り出した段または列,_答え,7) :- nth1(_答え,_取り出した段または列,21). '7段目または7列目経由で21を探しその要素位置が答えである'(列経由,_取り出した段または列,_答え,_何段目) :- nth1(_何段目,_取り出した段または列,21), _答え = _何段目. 乱数の種(7717). '発生させた乱数が偶数の時、段経由とする' :- 乱数の種(_乱数の種), 発生した乱数が偶数である(_乱数の種). 発生した乱数が偶数である(_乱数の種) :- 0 is random(_乱数の種) mod 2.