Numeron
ヌメロンの解の探索プログラム (Ruby版, 3桁Only)
- 解として可能性のある数値を自動計算
- Shuffle可能
- 次に出すべき1手を計算してくれるAnalyzer
- シミュレーター付き(要実装)
Androidアプリ ... https://play.google.com/store/apps/details?id=com.jpn.gemstone.numer0n.android
iPhoneアプリ ... https://itunes.apple.com/jp/app/numer0n-numeron/id512484171?mt=8
インストール
ruby 1.9以上が必要です
$ gem install numeron
Solverの使い方
irbで実行します
> require 'numeron'
true
> Numeron::Solver.new.run
Attack number: 123 # <= callした数値を入力
Eat number: 0 # <= callした結果 eatの数を入力
Bite number: 0 # <= callした結果 biteの数を入力
... thinking
possibilities: 210 # <= 計算した結果、答えとして可能性がある数値の個数
Analyzer Answer: 372 # <= Analyzerがおすすめの答えとして選んだ数
Possibilitiy list random: 798 # <= 答えの可能性の一覧からランダムで選んだ数
finish? [yes|no] # <= yes or yで終了, noで続行
Simulatorの使い方
コンピューターが何手で解にたどり着くかのシミュレーションをすることができます。
require 'numeron'
simulator = Numeron::Simulator.new
# 最初にコールする番号
first_attack = '123'
# シミュレーションする答えのリスト
answers = ['403', '256']
result = simulator.run(answers, first_attack) do |calculator|
# ここにシミュレーションしたいコードを書く
# calculatorはNumeron::Calculatorオブジェクト
end
p result
詳細は https://github.com/kengos/numeron/blob/master/examples/simulator_example.rb を参照
Numeron::Calculator
ヌメロンの解の可能性として考えられるものを計算する部分。
基本
calc = Numeron::Calculator.new
calc.input('123', 0, 1) # callした番号, Eatの数, Biteの数
p calc.possibilities # 答えの可能性の一覧がでてくる
# 続いて以下のように245をcallして 2Eat, 0Biteだった場合 11個に絞りこまれる
calc.input('245', 2, 0)
p calc.possibilities
# => ["240", "246", "247", "248", "249", "205", "265", "275", "285", "295", "345"]
Shuffle対応(ほとんどテストはしていない)
calc = Numeron::Calculator.new
calc.input('123', 0, 3)
calc.shuffle # シャッフルされた
p calc.possibilities.size
# => 6
calc = Numeron::Calculator.new
calc.input('123', 1, 1)
p calc.possibilities.size
# => 42
calc.shuffle
p calc.possibilities.size
# => 126
以下の2つの変数を用いている
@mays
@mays[0]が左側の数値の可能性リスト(初期値0-9)
@mays[1]が真ん中の数値の可能性リスト(初期値0-9)
@mays[2]が右側の数値の可能性リスト(初期値0-9)
@possibilities
解の可能性リスト
Numeron::Analyzer
案がなかったので、以下3つの分析方法を適当に実装。
計算量はまったく考慮していない
0e1bを最悪ケースとして、このケースが出た場合に、最も可能性リストが少なくなる数値を計算する機能
0e1b, 1e0bを最悪ケースとして、これらのケースが出た場合に、最も可能性リストの平均値が少なくなる数値を計算する機能
可能性リスト中から、最も可能性リストが少なくなる数値を計算する機能
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request