小町算解析プログラム
このスレ見て思い立った。
演習1
1〜9の数字を順に使って
任意の数値になる式を探そう、というプログラムを作ろう。
作りかけの上なんかコードきたないけど、とりあえず動作OK。
拡張予定。
- 1.括弧を使えるようにしたい
- 2.結果順にソート
- 3.非整数を除外
2,3は簡単。2は実行時間凄そうだけど、先に非整数を抜いてからソートすればマシかな。
1はなんか面倒だなあ・・・しかも実行時間が半端じゃない・・・と思う。
(x*y)+zみたいな不要な括弧を除外するのはかなりハードなのであきらめよう。
<?php $enzansi=" +-*/"; $kigou[0]=1; for($i=1;$i<=9;$i++) { $kigou[$i]=0; } while($kigou[0]<3) { $var=$enzansi[$kigou[0]]; for($i=1;$i<=9;$i++) { $var.=$i; if ($kigou[$i]>0) { $var.=$enzansi[$kigou[$i]]; } } eval('$result=' . $var . ';'); echo "$var : $result\n"; $kigou[8]++; for ($i=8;$i>=1;$i--) { if ($kigou[$i]==5) { $kigou[$i-1]++; $kigou[$i]=0; } } } ?>
結果のごく一部抜粋
+123*4+56-7-8-9 : 524 +123*4+56-7-8*9 : 469 +123*4+56-7-8/9 : 540.111111111 +123*4+56-7*89 : -75 +123*4+56-7*8+9 : 501 +123*4+56-7*8-9 : 483 +123*4+56-7*8*9 : 44