8を何個か使って、四則演算、ケタくっつけ(8、88、・・・)で来年の年号の2008を作るのはどうかなと思ってプログラミング。prologで。
///////////////////////
shisoku(A,B,C,F
shisoku(A,B,C,F
shisoku(A,B,C,F
shisoku(A,B,C,F
shisoku(A,B,C,F
hachi(A,B,F):-w
hachi(A,B,B):-n
narabi(A,B):- A>=2,A1 is A-1,narabi(A1,B
narabi(1,8).
m(2,1):-!.
m(N,1).
m(N,X):-N1 is N-1,m(N1,X1),X is X1+1.
wakeru(A,B,C):-
wakeru(A,A1,A2)
///////////////////////
1?-hachi(7,2008
1 ?- hachi(8,2008,X)
X = 88- (8+8)* (8-8* (8+8)) ;
X = 88- (8+8)* (8- (8+8)*8) ;
X = 88+ (8+8)* (8* (8+8)-8) 以下複数解
問題
8が8個で2008を作ってみましょう。使えるのは四則演算とケタくっつけ(8、88、888、・・・)。
というのができるが、手で解くにはこのままでは苦しい。
あと、ソース内の割り算のゼロ割封じのコードがよろしくない。(コードとしてNG)と表記。そこに限らず、小数の扱いが怪しい。
8が8個というのはなにやら「めでたい」感じ。
そして、答えが
(****)×8 でなく
(****)+88 になるのが面白いところ。
工夫すれば問題として立派になるかも。
追加20081227
もう少し練ってみた。これならば、手でも解ける。そして唯一解。
問題:
88 8 8 8 8 88 =2008
左辺(88が2個、8が4個)に書き足して式が成り立つようにしてください。使える記号は+、-、×、÷、(カッコ)です。
もう少し、練った問題を本文の後ろに追加しました。