このディレクトリの索引

九九表([
[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 の計算は、九九表をどのように辿れば答えがえられますか?」ならば全然問題がないように思いますが。'(_答え) :-
        九九表を得る(_九九表),
        '21÷7 の計算は、九九表をどのように辿れば答えがえられますか?'(_九九表,_答え).


'21÷7 の計算は、九九表をどのように辿れば答えがえられますか?'(_九九表,_答え) :-
        九九表から7段目を取り出す(_九九表,_7段目),
        '7段目から21を探し列数を得る'(_7段目,_列数).
        '列数がすなわち答えである'(_列数,_答え),!.
'21÷7 の計算は、九九表をどのように辿れば答えがえられますか?'(_九九表,_答え) :-
        九九表から7列目を取り出す(_九九表,_7列目),
        '7列目から21を探し段数を得る'(_7列目,_段数).
        '段数がすなわち答えである'(_列数,_答え).


九九表を得る(_九九表) :-
        九九表(_九九表).

九九表から7段目を取り出す(_九九表,_7段目) :-
        nth1(7,_九九表,_7段目).

九九表から7列目を取り出す(_九九表,_7列目) :-
        転置(_九九表,_転置した九九表),
        nth1(7,_転置した九九表,_7列目).


'7段目から21を探し列数を得る'(_7段目,_列数) :-
        nth1(_列数,_7段目,21).

'7列目から21を探し段数を得る'(_7列目,_段数) :-
        nth1(_段数,_7列目,21).

列数がすなわち答えである(A,A).

段数がすなわち答えである(A,A).