コインを減らす払い方
2007/07/12
どう書く?orgに、「コインを減らす払い方」という問題があります。
この問題が、総当り方式でも難しいと思いました。
id:ytakenaka:20070703:p2 で、ytakenakaさんが、釣り銭候補のルール書かれているのを前に読んでいたんですが、やはり難しいです。
それなのに、普段コンビニとかでお金を払うとき*1には、それ程意識せずに、小銭が減るように払っています。
なんか奇妙な感覚に落ちいりました。
「人間の脳ってすごいな」ということと同時に、「これをプログラムで表現できない俺の脳ってひどいな」と思っている自分がいました。
問題を解く方向ではなく、普段どうやって払う金額を決めているんだろうか、ということを考えていました。
1次的な目的は、値段の金額を店員に渡すことなので、以下は2次的な目的です。
- お釣りの枚数を減らしたい
- 値段が 92円のとき、102円払うような場合
- 財布の小銭を減らしたい
- 財布に、100円玉があるのに、10円玉を10枚払うような場合
- 両替したい
- 値段が 300円のとき、わざと 1万円札を払って千円札を貰う場合
しかも、1回の支払いで複数の目的を達成したいこともあります。
なんか、ロジックを作れない言い訳を書いてる気分になってきましたが、なんとかCommon Lispのコードまで持っていきたいと思ってます。
*1:セブンイレブンでは、nanacoカードにしましたが