模拟图灵机XN乘2的过程
一、问题描述
JAVA实现模拟图灵机实现自然数乘2的过程。
二、算法构造
编码规则
:
0→0;
1→10;
, →110;
处理方法
:
- 内态为0,输入为0→内态为0,输出为0,右移;
- 内态为0,输入为1→内态为1,输出为0,右移;
- 内态为1,输入为0→内态为0,输出为1,右移;
- 内态为1,输入为1→内态为10,输出为0,右移;
- 内态为10,输入为0→内态为11,输出为1,右移;
- 内态为11,输入为0→内态为0,输出为1,STOP;
三、流程设计
四、算法实现
TuLing类
/*** @author jitwxs* @date 2021年04月01日 19:46*/
public class TuLing {/**** @author jitwxs* @date 2021/4/1 19:47* @param a 输入的值a* @return java.lang.StringBuffer*/public StringBuffer trans(int a){String string=Integer.toBinaryString(a);StringBuffer str=new StringBuffer(string.replace("1","10"));str.append("1100");System.out.println("二进位码为:"+str);return str;}/*** 对转换后的码进行乘二运算* @author jitwxs* @date 2021/4/1 19:47* @param str 转换为二进位码*/public void deal(StringBuffer str){//inBL为内态变量for(int i = 0, inBL = 0; i<str.length(); i++){if(inBL ==0&&str.charAt(i)=='0'){inBL =0;str.setCharAt(i,'0');System.out.println("内态:0,输入:0,变为:"+str+" 内态:"+ inBL +" 输出:"+str.charAt(i));continue;}if(inBL ==0&&str.charAt(i)=='1'){inBL =1;str.setCharAt(i,'0');System.out.println("内态:0,输入:1,变为:"+str+" 内态:"+ inBL +" 输出:"+str.charAt(i));continue;}if(inBL ==1&&str.charAt(i)=='0'){inBL =0;str.setCharAt(i,'1');System.out.println("内态:1,输入: 0,变为:"+str+" 内态:"+ inBL +" 输出:"+str.charAt(i));continue;}if(inBL ==1&&str.charAt(i)=='1'){inBL =10;str.setCharAt(i,'0');System.out.println("内态:1,输入:1,变为:"+str+" 内态:"+ inBL +" 输出:"+str.charAt(i));continue;}if(inBL ==10&&str.charAt(i)=='0'){inBL =11;str.setCharAt(i,'1');System.out.println("内态:10,输入:0,变为: "+str+" 内态:"+ inBL +" 输出:"+str.charAt(i));continue;}if(inBL ==11&&str.charAt(i)=='0'){inBL =0;str.setCharAt(i,'1');System.out.println("内态:11,输入:0,变为:"+str+" 内态:"+ inBL +" 输出:"+str.charAt(i));break;}}}}
Main
import java.util.Scanner;public class Main {public static void main(String[] args) {TuLing tuLing=new TuLing();Scanner scanner = new Scanner(System.in);System.out.println("请输入一个数:");int number = scanner.nextInt();StringBuffer stringBuffer= tuLing.trans(number);tuLing.deal(stringBuffer);System.out.println("计算后二进位码为:"+stringBuffer);stringBuffer.delete(stringBuffer.length()-2, stringBuffer.length());System.out.println("计算结果:"+Integer.parseInt(stringBuffer.toString().replace("10", "1"), 2));}
}
测试:
测试数据
:5
测试结果
:10
小结
学习了解了StringBuffer类的使用,巩固了类型转换。
模拟图灵机XN乘2的过程相关推荐
- ##模拟图灵机 XN*2的运算
##模拟图灵机 XN*2的运算(文末源代码) 题目要求: 对XN*2图灵机进行模拟,任意给定的十进制数a,转换为收缩扩展二进制的编码,再编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步 ...
- java实现图灵机XN*2并输出中间过程
java实现图灵机XN2并输出中间过程 题目: 对XN2图灵机进行模拟,任意给定的十进制数a,转换为收缩扩展二进制的编码,再编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果. ...
- (C++)模拟图灵机-简单的UN+1和UN*2
问题描述 对于任意给定的一台Turing机和任意给定的字符串w ( w不含空格),编程模拟此Turing机的运行过程,要求输出从开始运行起的每一步骤的结果.(本文模拟的是UN+1和UN*2的图灵机) ...
- 【181130】VC++ 模拟地球太阳月亮运动的过程源代码
源码下载简介 VC++ 模拟地球太阳月亮运动的过程. 源码下载地址:点击下载 备用下载地址:点击下载
- ☀️手把手教你Python+matplotlib模拟锁相放大器的原理以及工作过程☀️《❤️记得收藏❤️》
☀️手把手教你Python+matplotlib模拟锁相放大器的原理以及工作过程☀️<❤️记得收藏❤️> 目录
- 应用Abaqus有限元软件中的cohesive单元模拟压头侵入地层随机断裂过程
应用 Abaqus有限元软件中的 cohesive单元模拟压头侵入地层随机断裂过程. 建立的压头侵入地层的有限元模型如图2所示.其中球形压头直径为1mm,高为3mm,厚度为0.5mm.将其设置为刚体, ...
- 2.4模拟打牌游戏中的发牌过程
摩尔的Java学习笔记2.4 第二周作业: 1.实现将一组整数进行升序排列: 2.用二维数组实现,5个学生4门课程的总分和平均分的统计工作: 3.打印八行八列杨辉三角,开头不打印空格: 4.模拟打牌游 ...
- 模拟蚂蚁森林的能量产生过程
模拟蚂蚁森林的能量产生过程 for i in range(100):print(""" 能量查询请输入能量来源!退出程序请输入0 能量来源如下: 生活缴费.行走捐.共享单 ...
- Java基础实现模拟地下城与勇士(DNF)的装备强化过程
大家好,我是kai_Childe,作为一名java刚入门的小白,本期就以java基础来模拟地下城与勇士(DNF)的装备强化过程,并以此来记录我的学习过程. 文章目录 强化未成功惩罚机制 各等级强化成 ...
最新文章
- jittor和pytorch生成网络对比之cogan
- 强!chrome彻底关闭自动升级新方法实例演示,终于解决了chrome自动升级的烦恼
- 用户画像-参考整理医疗app标签
- java 字符串 面试_Java 字符串面试题
- 使用 json_serializable (flutter packages pub run build_runner build) 问题
- php 字符串分割成两段,php 两个字符串分割合并的简单示例
- 数据湖之iceberg系列(三)iceberg快速入门
- 红帽 安装oracle11g,64位RedHat 5.6下安装Oracle 11g
- y7000怎么刷电池固件_redmi(红米)AC2100,刷老毛子固件
- python编写程序题目_让我们一起来写python程序,做些简单的题目
- PIE SDK地图书签
- Ghost配置2——添加代码高亮
- python中属性与方法_python中属性和方法的动态绑定
- 如何检查CentOS版本– 8种方法
- 计算机知识说明,请说明计算机的工作原理
- 文物摄影中白平衡的正确设置(图)
- 详解PON基础知识:OLT、ONU、ONT和ODN
- C++青少年编程课程体系与教案
- 无法解析的外部符号__imp____iob_func
- 小白用户的福音——win10系统云重装