ブログトップ

電子工作やってみたよ

プログラムコンテストの例題をHP電卓でやって見た

HP電卓を操作しやすくするために、写真のような台を発砲スチロールで作って見ました。
HP電卓の液晶画面は見る角度があまり斜めになると数字以外の記号などが表れて見ずらくなるのですが、
すこし角度を付けてやると見やすくなり且つキー操作もやりやすくなりました。

c0335218_18194215.jpg
さて 本題はこれではありません。
山梨にいる友達から以下のプログラムコンテストのチラシをもらいました。

c0335218_18183228.jpg

コンピュータ言語は C, Java, VBA から選択となっていました。賞金は20万円 
裏にサンプルプの問題が載っていました。

c0335218_18190557.jpg
本番にでる気はありませんが、この問題ならそんなにメモリーも必要とせずHP電卓で解くにはちょうどいいのでないかと思い挑戦してみました。
答えを先に言ってしまうと

きつね蕎麦  286
山菜蕎麦     3
鴨南蛮蕎麦   12

計算は数の大きい方からスキャンしていき答えも大きい方にあったので、計算時間はHP32Sで5分ほどだったと思います。
片手間に農作業をやりながらの製作で一日半かかりました。 こんなに時間かかってはコンテスト参加は無理ですね。
CやVBAなど他の言語で作ればもっと早く出来ると思いますが、やはりHP電卓でやるところに意味があると思います。( なぜなら わたしはHP電卓のファンだから ただそれだけですけど )
最初は連立方程式を作れば解けると思っていたのですが、やはりプログラムで一つづつ値を変えながら試すしか方法が無いようです。
それなりに苦労をした結果を載せてみます。


全プログラムリスト (HP32S を使用)


A01 LBL A
A02 RCL E 全合計目標金額
A03 RCL X  きつね蕎麦の単価
A04 ÷    きつね蕎麦での最大皿数
A05 LP (INTのこと)  整数部のみ取り出す
A06 STO A  きつね蕎麦での全皿数をしまう

B01 LBL B
B02 1
B03 STO -A きつね蕎麦の全皿数を一つ減らす
B04 XEQ C  この状態で山菜蕎麦と鴨南蛮蕎麦の数を計算する
B05 RCL A きつね蕎麦の数を読み込む
B06 PSE 現在計算中のきつね蕎麦の数を表示
B07 GTO B 次の数のきつね蕎麦を計算

C01 LBL C
C02 RCL A きつね蕎麦の数
C03 RCL X きつね蕎麦の単価
C04 X きつね蕎麦の合計金額
C05 RCL E 全合計金額目標
C06 X<>Y 全合計金額目標ときつね蕎麦の合計金額の比較
C07 -   きつね蕎麦の残金
C08 STO F きつね蕎麦の残金
C09 RCL Y 山菜蕎麦の単価
C10 ÷   山菜蕎麦の数
C11 IP (INTのこと) 整数部のみ
C12 STO B 山菜蕎麦の数

R01 LBL R
R02 RCL B 山菜蕎麦の数
R03 RCL Y 山菜蕎麦の単価
R04 ✖   山菜蕎麦の全額
R05 RCL F きつね蕎麦の残金
R06 X<>Y きつね蕎麦の残金ときつね蕎麦の残金の比較
R07 -   山菜蕎麦、きつね蕎麦の残金
R08 STO G
R09 RCL Z 鴨南蛮蕎麦の単価
R10 ÷   鴨南蛮蕎麦の単価で割る
R11 STO C
R12 FP (FRACのこと)少数点以下を取り出す
R13 X=0 ? 鴨南蛮蕎麦の単価で割り切れるか
R14 STOP 割り切れたら終了
R15 1
R16 STO -B 山菜蕎麦を一つ減らす
R17 RCL B  山菜蕎麦の数を読み込む。
R18 X キ 0 ? 山菜蕎麦の残数がゼロでないか
R19 GTO R  ゼロでないなら減らした山菜蕎麦で計算しなおす
R20 RTN   ゼロならばきつね蕎麦の数を減らして計算をやり直す


変数表
A きつね蕎麦の数
B 山菜蕎麦の数
C 鴨南蛮の数
D
E 全合計目標値 ( 200,000 ) 初期値入力しておく
F きつね蕎麦の残金
G きつね蕎麦と山菜蕎麦を取ったあとの残金
L ループ表示カウンター
X きつね蕎麦の単価 ( 650 ) 初期値入力しておく
Y 山菜蕎麦の単価  ( 780 ) 初期値入力しておく
Z 鴨南蛮の単価   ( 980 ) 初期値入力しておく

これで終わりです。


それなりにある程度頑張れば出来るという、このくらいの問題が丁度いいですね。
ちょうどバズルを解く楽しみなんでしょうか。
そうそう 今回この問題が解けた理由がまだありました。
一週間以内に解けなければ一杯おごると約束をしたからです。
私が何か行動を起こすには、適度なプレッシャーが必要みたいです。
べつに解けない方でも良いのですけれどね。


次 現在の畑の状況です。
白菜は一個50円の苗を20個買ってきて植えて19個が大きく育ちました。

c0335218_21164680.jpg


チンゲン菜は 種をまきすぎたので一杯生えすぎました。 間引きながら食べてます。
やはり 種をまくときに計算しておかないといけないのですね。
チンゲン菜 二度目だと思うのですが、なかなか学べないです。

c0335218_21173644.jpg










トラックバックURL : https://telmic.exblog.jp/tb/27914819
トラックバックする(会員専用) [ヘルプ]
Commented by Kusaka at 2017-10-10 07:20 x
私はRasberry Pi+Cで解いてみました。(Raspberry Piとは6千円程度のワンボードコンピューターで64ビット1.2Gで動作します。)完成までは、なんだかんだで3時間以上かかったと思います。
大した計算量ではないようですが、電卓だと5分もかかるんですか。 Raspberry Piだと一瞬でした。
完成したコードを載せたら、文字数制限で投稿できなかったので結果だけ。
以下が実行結果です。
Max combination is
650_menu x 286
780_menu x 3
980_menu x 12
Total = 200000
Commented by telmic-gunma at 2017-10-10 09:05
> Kusakaさん
ありがとうございます。
さすがー ですね。
64bit + 1.2GHz それと Kusakaさんの腕ですね。
HP電卓のCPUは何bitなのでしょう? 4bitはということはないでしょうね。8bitあたりでしょうか。
インタープリタでシコシコと解読しながらやっているのでしょうね。
画面がチカチカと ああいま計算しているなというのが見えてそこがいいのですね。
また何か面白い事あったら教えてください。

高井
名前
URL
削除用パスワード

※このブログはコメント承認制を適用しています。ブログの持ち主が承認するまでコメントは表示されません。

by telmic-gunma | 2017-10-09 21:30 | HP電卓 | Trackback | Comments(2)