- 522 名前:デフォルトの名無しさん mailto:sage [2010/11/30(火) 07:47:22 ]
- >>519
% Prolog 'ノートを7冊ずつ配ると28冊余り,10冊ずつ配ると最後の一人にわたすノートは他の半分にも達しませんでした。ノートの数と人数を求めなさい。'(_ノートの数,_人数) :- '10冊ずつ配るとひとり少ない人数分だけは完全にあるということです', これを_10冊を完全に配ることのできる人数とすると, '一旦最後ひとり分(7個)も取り崩して', '28冊に加えてからこれを(10-7)個ずつ確実に渡すことのできる人数が_10冊を完全に配ることのできる人数ということになります'(_10冊を完全に配ることのできる人数), 余りが最後の人が受け取る冊数になり、これは10冊の半分未満でないといけません, 人数はそれに1を加えたものであり(_10冊を完全に配ることのできる人数,_人数), 本の冊数は(_人数,_本の冊数). '28冊に加えてからこれを(10-7)個ずつ確実に渡すことのできる人数が_10冊を完全に配ることのできる人数ということになります'(_10冊を完全に配ることのできる人数) :- _10冊を完全に配ることのできる人数 is (28 + 7) // (10 - 7). 余りが最後の人が受け取る冊数になり、これは10冊の半分未満でないといけません :- _最後の人が受け取る冊数 is (28 + 7) mod (10 - 7), _最後の人が受け取る冊数 < 10 // 2. 人数はそれに1を加えたものであり(_10冊を完全に配ることのできる人数,_人数) :- _人数 is _10冊を完全に配ることのできる人数 + 1. 本の冊数は(_人数,_本の冊数) :- _本の冊数 is 7 * _人数 + 28. '10冊ずつ配るとひとり少ない人数分だけは完全にあるということです' :- true. これを_10冊を完全に配ることのできる人数とすると :- true. '一旦最後ひとり分(7個)も取り崩して' :- true.
|

|