#cross-platform #science #turing-machine

turing-machine-rs

开源库,用于实现图灵机

2 个不稳定版本

0.2.0 2022 年 1 月 4 日
0.1.0-alpha2022 年 1 月 2 日

模拟 中排名 152

MIT 许可协议

52KB
593

图灵机 RS

一个库,用于用 Rust 编程语言实现任何图灵机,限制最小。

  • 低成本:图灵机 RS 设计用于模拟执行。这就是为什么它不能同时简单、灵活且免费。

  • 灵活:图灵机 RS 与特定类型或仅复制类型无关!相反,该库支持任何实现 Clone + Debug + Display + Eq + PartialEq 特性的结构或对象。

Crates.io MIT licensed Rust 2021 Rust Stable Rust Nightly

文档

概述

图灵机 RS 包含了图灵机的“经典”实现(用于模拟的最小版本)和与任何实现图灵机特质的类型一起工作的“调试”图灵机。

示例

这是一个简单的图灵机示例,它将 nice 替换为 test,并将 test 替换为 nice 单词。

extern crate turing_machine_rs;

use turing_machine_rs::instruction::{Move, State};
use turing_machine_rs::machines::Classic;
use turing_machine_rs::program::{Extend, Program};
use turing_machine_rs::state::Tape;
use turing_machine_rs::TuringMachine;

// For more comfortable coding, use Result<(), String>:
// `?` postfix symbol is better then `.unwrap()` postfix method call.
fn main() -> Result<(), String> {
    let alphabet = vec!['t', 'e', 's', 'n', 'i', 'c', 'e', '_'];
    let mut program = Program::new(alphabet, State(4));
    program.extend([
        (1, 't', 2, 'n', Move::Right),
        (2, 'e', 3, 'i', Move::Right),
        (3, 's', 4, 'c', Move::Right),
        (4, 't', 0, 'e', Move::None),
        // Revers
        (1, 'n', 2, 't', Move::Right),
        (2, 'i', 3, 'e', Move::Right),
        (3, 'c', 4, 's', Move::Right),
        (4, 'e', 0, 't', Move::None),
    ])?;
    let machine = Classic::new(program, '_')?;

    let test = Tape::from("test");
    let nice = machine.translate_nrm(test.clone())?;
    println!(
        "{} {}!",
        String::from_iter(nice.as_vec()),
        String::from_iter(test.as_vec())
    );
    Ok(())
}

但这个库不仅仅是用于最简单的类型:您甚至可以使用其他图灵机作为符号!更多示例可以在这里找到。

获取帮助

首先,阅读 示例文档。如果示例无法回答您的问题,那么您可以尝试阅读文档,然后您可以联系我: [email protected]

贡献

如果您想改进这个crate,只需提交一个issue(您可以使用示例作为模板)。issue必须包含以下标题:问题增强动机(解决问题的原因或实现增强的原因)。添加有用的资源对于文档和示例将非常有用。

见示例。

支持的Rust版本

Turing Machine RS是用最新稳定版(2021,1.57)创建的,但这个库也支持1.56(至少)及更高版本。

许可证

本项目采用MIT许可证

贡献

除非您明确说明,否则您提交的任何有意用于包括在Turing Machine RS中的贡献,都应按MIT许可证许可,没有其他附加条款或条件。

无运行时依赖