#board-game #game-ai #turing #machine #artificial-intelligence #verifier #solution

bin+lib turing-machine-ai

为图灵机棋盘游戏提供的工具和AI

1个不稳定版本

0.1.0 2023年8月19日

#349 in 游戏

MIT/Apache

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许可证定义的任何有意提交给作品包含的贡献,应按上述方式双许可,不附加任何额外条款或条件。

依赖

~0.4–0.9MB
~20K SLoC