二次创作Z01语言

目录

一,字符集

二,编译分词

三,token含义

四,Z01翻译成C++

五,执行翻译后的代码

六,打印Hello World!


一,字符集

假设有门语言叫Z01语言,代码中只有0和1这两种字符。

二,编译分词

预处理剔除所有非0和1的字符之后,采用固定分词方式,从左往右每三个字符构成1个token,所以一共有8种token。

PS:预处理不是重点,本文不涉及,假设输入的都是只有0和1的字符。

三,token含义

token

含义

000

指针加一

001

指针减一

010

指针指向的字节的值加一

011

指针指向的字节的值减一

100

输出指针指向的单元内容(ASCⅡ码)

101

输入内容到指针指向的单元(ASCⅡ码)

110

如果指针指向的单元值为零,向后跳转到对应的]指令的次一指令处

111

如果指针指向的单元值不为零,向前跳转到对应的[指令的次一指令处

聪明的读者或许已经看出来了,我这个只是二次创作,毕竟有趣的灵魂互相抄袭。

四,Z01翻译成C++

string translate(char a, char b, char c)
{
    if (a == '0') {
        if (b == '0') {
            if (c == '0') {
                return "p++";
            }
            else {
                return "p--";
            }
        }
        else {
            if (c == '0') {
                return "*p = *p + 1";
            }
            else {
                return "*p = *p - 1";
            }
        }
    }
    else {
        if (b == '0') {
            if (c == '0') {
                return "cout<<char(*p)";
            }
            else {
                return "*p=getchar()";
            }
        }
        else {
            if (c == '0') {
                return "while(*p){";
            }
            else {
                return "}";
            }                
        }
    }
}


int main()
{
    char a,b,c;
    string s;
    while (cin >> a >> b >> c) {
        s += translate(a,b,c);
        if (a == '1'&&b=='1'&&c=='0')continue;
        s += ";\n";
    }
    cout << s;
    return 0;
}

例如,输入:

010010010010010010010010010010010010010110011000010010010010010001111000100

输出:

*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
while(*p){*p = *p - 1;
p++;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
p--;
};
p++;
cout<<char(*p);

五,执行翻译后的代码

void run()
{
    char arr[1000] = { 0 };
    char* p = arr+500;
    //input code
}

int main()
{
    run();
    return 0;
} 

只要把翻译后的代码粘贴进去就行。

六,打印Hello World!

有了打印一个字符的经验和归0操作,接下来就可以输出任意字符了:

Ascii码分别是72,101,108,108,111,32,87,111,114,108,100,33

代码应该是:

010010010010010010010010010110011000010010010010010010010010001111000100110110011111001111010010010010010010010010010010110011000010010010010010010010010010010001111000010100110110011111001111010010010010010010010010010110011000010010010010010010010010010010010010001111000100110110011111001111010010010010010010010010010110011000010010010010010010010010010010010010001111000100110110011111001111010010010010010010010010010110011000010010010010010010010010010010010010001111000010010010100110110011111001111010010010010010010010010110011000010010010010001111000100110110011111001111010010010010010010010010110011000010010010010010010010010010010010001111000011100110110011111001111010010010010010010010010010110011000010010010010010010010010010010010010001111000010010010100110110011111001111010010010010010010010010010110011000010010010010010010010010010010010010001111000010010010010010010100110110011111001111010010010010010010010010010110011000010010010010010010010010010010010010001111000100110110011111001111010010010010010010010010010010110011000010010010010010010010010010010001111000100110110011111001111010010010010010010010010110011000010010010010001111000010100110110011111001111

翻译结果:

*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
while(*p){*p = *p - 1;
p++;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
p--;
};
p++;
cout<<char(*p);
while(*p){while(*p){*p = *p - 1;
};
p--;
};
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
while(*p){*p = *p - 1;
p++;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
p--;
};
p++;
*p = *p + 1;
cout<<char(*p);
while(*p){while(*p){*p = *p - 1;
};
p--;
};
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
while(*p){*p = *p - 1;
p++;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
p--;
};
p++;
cout<<char(*p);
while(*p){while(*p){*p = *p - 1;
};
p--;
};
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
while(*p){*p = *p - 1;
p++;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
p--;
};
p++;
cout<<char(*p);
while(*p){while(*p){*p = *p - 1;
};
p--;
};
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
while(*p){*p = *p - 1;
p++;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
p--;
};
p++;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
cout<<char(*p);
while(*p){while(*p){*p = *p - 1;
};
p--;
};
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
while(*p){*p = *p - 1;
p++;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
p--;
};
p++;
cout<<char(*p);
while(*p){while(*p){*p = *p - 1;
};
p--;
};
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
while(*p){*p = *p - 1;
p++;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
p--;
};
p++;
*p = *p - 1;
cout<<char(*p);
while(*p){while(*p){*p = *p - 1;
};
p--;
};
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
while(*p){*p = *p - 1;
p++;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
p--;
};
p++;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
cout<<char(*p);
while(*p){while(*p){*p = *p - 1;
};
p--;
};
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
while(*p){*p = *p - 1;
p++;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
p--;
};
p++;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
cout<<char(*p);
while(*p){while(*p){*p = *p - 1;
};
p--;
};
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
while(*p){*p = *p - 1;
p++;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
p--;
};
p++;
cout<<char(*p);
while(*p){while(*p){*p = *p - 1;
};
p--;
};
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
while(*p){*p = *p - 1;
p++;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
p--;
};
p++;
cout<<char(*p);
while(*p){while(*p){*p = *p - 1;
};
p--;
};
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
while(*p){*p = *p - 1;
p++;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
*p = *p + 1;
p--;
};
p++;
*p = *p + 1;
cout<<char(*p);
while(*p){while(*p){*p = *p - 1;
};
p--;
};

运行效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/191306.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用花生壳外网远程ssh访问内网主机 亲测有效

经常会遇到远程访问其他电脑的需求&#xff0c;一般首选向日葵软件&#xff0c;傻瓜式的连接远程桌面控制&#xff0c;非常方便。但是仅限于远程桌面远程协助这种。 对于程序员来说最佳的登录方式是ssh&#xff0c;同时远程桌面连过来的时候分辨率比较低&#xff0c;图形效果相…

上海交通大学生存手册

强烈推荐所有大学生去阅读《上海交通大学生存手册》。虽然它可能有些冗长&#xff0c;但非常重要&#xff0c;因为它道出了大学教育的本质。 如果几年前我能够看到这本书&#xff0c;也许我的大学生活会有所不同。现在我将向正在上大学或者将要上大学的你推荐这本书。 无论你…

Less的函数的介绍

文章目录 前言描述style.less输出后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;Sass和Less &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错误&#xff0c;…

python--获取每张切片的不同PEF区间值的百分比

在全直径数字岩心中&#xff0c;如何获取每张切片的不同PEF区间值的百分比&#xff1f; import os import datetime from PIL import Image import numpy as np import csv import easygui as gclass Table(object):def __init__(self, table_data_path):self.table_data_path…

MySQL进阶_10.锁

文章目录 一、概述二、MySQL并发事务访问相同记录2.1、读-读2.2、写-写2.3、读-写2.4、并发问题的解决方案 三、锁的不同角度分类3.1、 读锁、写锁3.1.1、 锁定读 3.2、表级锁、页级锁、行锁3.2.1、表锁3.2.2、意向锁3.2.2.1、意向锁的作用3.2.2.2、意向锁的互斥性 3.2.3、自增…

正则表达式例题-PTA

PTA-7-55 判断指定字符串是否合法-CSDN博客 7-54 StringBuffer-拼接字符串 题目&#xff1a; 输入3个整数n、begin、end。 将从0到n-1的数字拼接为字符串str。如&#xff0c;n12&#xff0c;则拼接出来的字符串为&#xff1a;01234567891011 最后截取字符串str从begin到end(包…

基恩士软件的基本操作(五,日志记录与使用)

目录 基恩士是如何保存日志的&#xff1f; 如何使用日志功能 查看DM10的值1秒加1的记录日志 设定id与储存位置 软元件设定&#xff08; 日志ID有10个&#xff08;0~10&#xff09;&#xff0c;每一个ID最多添加512个软元件&#xff09; 设定触发 执行日志的梯形图程序 触…

电力感知边缘计算技术网关产品设计方案-硬件方案

网关硬件架构设计图: 1.配置方案 配置差异 A类网关 B类网关 CPU

Less 嵌套规则

文章目录 前言描述style.less输出后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;Sass和Less &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错误&#xff0c;…

P15 C++ 枚举

The ChenPi 前言 今天我们要讲的是 C 中的枚举。 enum 是 enumeration 的缩写&#xff0c;基本上可以说&#xff0c;它就是一个数值集合。如果你想要给枚举一个更实际的定义&#xff0c;它们是给一个值命名的一种方法。 所以我们不用一堆叫做 A、B、C 的整数。我们可以有一个…

【好玩的 Docker 项目】搭建一个完全自由的音乐播放软件 ————Navidrome 随时随地!想听就听!

前言 随着国内版权意识的提高,现在想听一首歌曲,往往我们可能要切换 3-4 个 APP—— 网易云音乐、QQ 音乐、咪咕音乐…… 切换起来很麻烦,有的 APP 就算你买了 VIP 服务,下载的歌曲还是加密的,一旦 VIP 到期后某些歌你还听不了,非常蛋疼。 顺哥博客 最近被朋友推荐入了…

【Amazon】通过直接连接的方式导入 KubeSphere集群至KubeSphere主容器平台

文章目录 一、设置主集群方式一&#xff1a;使用 Web 控制台方式二&#xff1a;使用 Kubectl命令 二、在主集群中设置代理服务地址方式一&#xff1a;使用 Web 控制台方式二&#xff1a;使用 Kubectl命令 三、登录控制台验证四、准备成员集群方式一&#xff1a;使用 Web 控制台…

《已解决: ImportError: Keras requires TensorFlow 2.2 or higher 问题》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…

18. Python 数据处理之 Numpy

目录 1. 简介2. 安装和导入Numpy3. ndarray 对象4. 基本运算5. 索引、切片和迭代6. 条件和布尔数组7. 变换形状8. 操作数组 1. 简介 数据分析的流程概括起来主要是&#xff1a;读写、处理计算、分析建模和可视化4个部分。 Numpy 是Python 进行科学计算&#xff0c;数据分析时…

卷积神经网络经典backbone

特征提取是数据分析和机器学习中的基本概念&#xff0c;是将原始数据转换为更适合分析或建模的格式过程中的关键步骤。特征&#xff0c;也称为变量或属性&#xff0c;是我们用来进行预测、对对象进行分类或从数据中获取见解的数据点的特定特征或属性。 1.AlexNet paper&#…

C/C++ 通过SQLiteSDK增删改查

SQLite&#xff0c;作为一款嵌入式关系型数据库管理系统&#xff0c;一直以其轻量级、零配置以及跨平台等特性而备受青睐。不同于传统的数据库系统&#xff0c;SQLite是一个库&#xff0c;直接与应用程序一同编译和链接&#xff0c;无需单独的数据库服务器进程&#xff0c;实现…

[LaTex]arXiv投稿攻略——jpg/png转pdf

一、将图片复制进ppt&#xff0c;右键单击图片选择设置图片格式&#xff0c;获取图片高度和宽度 二、选择“设计-幻灯片大小-自定义幻灯片大小” 三、设置幻灯片大小为图片大小 四、 选择“最大化” 五、 检查幻灯片大小是否与图像大小一致 六、导出为PDF

Doris单机部署——2.0.1.1版本

目录 一、前期准备工作 1.设置系统最大文件打开句柄数 2.时钟同步 3.关闭每台机器的交换分区 4.下载安装包 二、单节点部署安装Doris (一)安装fe 1.解压改名 2.修改配置文件 3.创建元数据目录 4.启动fe 5.访问fe的webUI (二)安装be 1.进入be目录下&#xff0c;修…

紫光展锐 展讯芯片 展讯处理器解锁BL 各分区结构 ROM 分区列表代表什么 bin img 表示什么意思

是展锐 Android 10.0、Android 9.0 平台 ROM 空间划分情况以及分区格式、分区大小和分区功能的 初步描述。 prodnv 开机后系统中的 productinfo 分区&#xff0c;保 存 adc 校准参数、eng.db 数据库。 Miscdata 保存 ota、recovery 时的一些数据 recovery 存放 recovery.i…

【数据中台】开源项目(1)-LarkMidTable

LarkMidTable 是一站式开源的数据中台&#xff0c;实现中台的 基础建设&#xff0c;数据治理&#xff0c;数据开发&#xff0c;监控告警&#xff0c;数据服务&#xff0c;数据的可视化&#xff0c;实现高效赋能数据前台并提供数据服务的产品。 系统演示地址 &#xff1a; www.l…