1个不稳定版本
0.1.0 | 2023年8月19日 |
---|
#349 in 游戏
75KB
1.5K SLoC
图灵机AI
图灵机棋盘游戏的AI!
目前,你可以
- 轻松从其验证器构建游戏。
- 执行所有推理:找出所有可能的验证器组合和代码
- 找到最快速的获胜步骤序列。
示例
以下示例解决了小册子中的第一个游戏
use std::error::Error;
use turing_machine_ai::{
game::Game,
code::Code,
gametree::{Move, State, AfterMoveError, VerifierSolution::*}
};
/// Solve the first puzzle from the booklet.
fn main() -> Result<(), Box<dyn Error>> {
let game = Game::new_from_verifier_numbers([4, 9, 11, 14].iter().copied());
let state = State::new(&game);
let (game_score, next_move) = state.find_best_move();
assert_eq!(game_score.codes_guessed, 1);
assert_eq!(game_score.verifiers_checked, 1);
assert_eq!(next_move, Move::ChooseNewCode(Code::from_digits(1, 1, 1)?));
let (state, _) = state.after_move(next_move)?;
let (game_score, next_move) = state.find_best_move();
assert_eq!(game_score.codes_guessed, 1);
assert_eq!(game_score.verifiers_checked, 1);
assert_eq!(next_move, Move::ChooseVerifier(0.into()));
let (state, _) = state.after_move(next_move)?;
assert!(state.is_awaiting_result());
let (state, _) = state.after_move(Move::VerifierSolution(Cross))?;
assert!(state.is_solved());
assert_eq!(state.solution(), Some(Code::from_digits(2, 4, 1)?));
Ok(())
}
许可证
根据以下之一许可:
- Apache许可证,版本2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确说明,否则你根据Apache-2.0许可证定义的任何有意提交给作品包含的贡献,应按上述方式双许可,不附加任何额外条款或条件。
依赖
~0.4–0.9MB
~20K SLoC