scratch写的图灵机
大多数人对于scratch不感冒,因为觉得这是孩子玩的。的确,积木的方式不适合专业程序员写代码,然而别小看scratch,怎么说,它也是图灵完备的。而且,过程支持递归,虽然带不了返回值。
虽然计算速度会很慢,但是还是可以设计出一个图灵机。
思路其实也不是那么麻烦,scatch变量是弱类型的,支持list。虽然理论上,即便scratch没有这个list也是图灵完备的,但毕竟要麻烦好多。
我们制作图灵机,则利用list来放图灵机的纸带。图灵机的各种规则当然也要放list上,规则是{x||x为状态}、{x|x为纸带值}、{x||x为状态}、{x|x为纸带值}、{左,右}上的一个五元关系,代表着当前状态、当前纸带值、将来状态、将来纸带值、磁头方向。为了方便,分5个list来装。当然,状态、纸带值都用0开始的整数来表示就已经可以,左右用01表示。
图灵机的运行并不复杂,这里不赘述,忘记怎么运行的请参考https://en.wikipedia.org/wiki/Turing_machine
以下是图灵机:
哈哈,麻雀虽小,五脏俱全。虽然scratch只是孩子玩的东西,它理论上却可以实现所有的可运算,很神奇不是吗?
scratch写的图灵机的更多相关文章
- 10分钟用scratch写一个大鱼吃小鱼的小游戏
第一次给张江小朋友教Scratch课程之前,还在担心一些概念能不能向小朋友解释清楚,可上完课发现,我严重低估了小朋友的聪明程度,发现现在的孩子相比较自己8.9岁的时候,简直聪明太多倍了. 所以总结了半 ...
- 用scratch写了一个win98 界面模拟
scratch模拟win98 玩耍,放在网上了https://kada.163.com/project/4216461-3515165.htm
- E203 CSR rtl实现分析
CSR状态控制寄存器,每个hart都有自己的CSR.对于每个hart,可以配置的状态寄存器是4k.CSR寄存器的功能见:https://www.cnblogs.com/mikewolf2002/p/1 ...
- 【翻译】从头开始写一个时间序列数据库-Writing a Time Series Database from Scratch
本文来自: https://fabxc.org/tsdb/, 如翻译有误,请纠正. 我是从事监控工作的.特别是Prometheus, 一个包含自定义的时间序列库以及集成Kuberntes的监控系统. ...
- Caffe2 手写字符识别(MNIST - Create a CNN from Scratch)[8]
本教程创建一个小的神经网络用于手写字符的识别.我们使用MNIST数据集进行训练和测试.这个数据集的训练集包含60000张来自500个人的手写字符的图像,测试集包含10000张独立于训练集的测试图像.你 ...
- Linux From Scratch(从零开始构建Linux系统,简称LFS)- Version 7.7(一)
一. 准备工作 1. 需要一个Linux宿主系统,例如早先版本的 LFS,Ubuntu/Fedora,SuSE 或者是在你的架构上可以运行的其它发行版 如果想实现Win7与Linux双系统,可参考我的 ...
- 【codevs】2292图灵机游戏
题 Shadow最近知道了图灵机是什么(Shadow:就是一行格子和一个机器头移来移去的呗!),于是他突发奇想,创造了一个新游戏——“图灵机游戏”(Shadow:好听吧?). 游戏规则如下: 在一条长 ...
- 开始制作国产的 scratch
首先分析下API和数据格式: https://api.scratch.mit.edu/proxy/featured GET 23.235.37.162:443 返回数据与对应栏目: commun ...
- Scratch不仅适合小朋友,程序员和大学老师都应该广泛使用!!!
去年接触到了Scratch这个编程工具,它是一种简易图形化编程工具,这个软件的开发团队来自于麻省理工大学称为“终身幼儿园团队”(Lifelong Kindergarten Group). 网址http ...
随机推荐
- DataContractJsonSerializer序列化时间类型时转换为UTC溢出问题
问题描述 如下一个实体类,含有非空时间类型属性,默认是C#的最小时间,在使用DataContractJsonSerializer将该类对象序列化成JSON时,抛出异常信息:System.Runtime ...
- Spring(六):Spring&Struts2&Hibernate搭建的blog项目
经过断断续续的学习.累积,终于基于别人的开源blog项目,变成了自己的第一个相对完整点的blog项目. 计划暂时把这个blog程序暂停------有更多(工作中用到的)东西需要去做,因此学习SSH b ...
- 微信小程序开发-IP地址查询-例子
微信小程序开发 小程序搜索框 IP地址查询 搜索查询 样例 微信小程序 开发 参考 https://mp.weixin.qq.com/debug/wxadoc/dev/component/ ...
- AWS stolen CPU
故事的开头是这样的: 一天我正在吃饭,突然就收到了服务器告警(cpu high load),吓的我饭也没吃好,只吃了三碗就回去处理故障了,我在监控上看到了这样子的图: 看见了吧,吃饭那段时间cpu一下 ...
- ACE入门——ACE构建
ACE(ADAPTIVE Communication Environment),ACE入门的第一课就是要学习怎么在自己的系统上构建ACE. ACE是跨平台的,这是它的一个很重要的特性,ACE支持很多的 ...
- 更换yum源
1. 首先备份 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2. 使用阿里云的 ...
- Linux OpenGL 实践篇-6 光照
经典光照模型 经典光照模型通过单独计算光源成分得到综合光照效果,然后添加到物体表面特定点,这些成分包括:环境光.漫反射光.镜面光. 环境光:是指不是来特定方向的光,在经典光照模型中基本是个常量. 漫反 ...
- 超级好用的前端开发测试Chrome插件-WEB前端助手(FeHelper)
WEB前端助手(FeHelper)插件概述 WEB前端助手:FeHelper是一款chrome浏览器插件.包含一些前端实用的工具,如字符串编解码.代码美化.JSON格式化查看.二维码生成器.编码规范检 ...
- [LeetCode] Reshape the Matrix 重塑矩阵
In MATLAB, there is a very useful function called 'reshape', which can reshape a matrix into a new o ...
- seacms6.5 注入漏洞1
---恢复内容开始--- 需要开启/data/admin/isapi.txt ,当里面的数值为1时,就可以报错注入 存在漏洞的页面:zyapi.php function cj() { global ...