brainfuck 解释器
2024-08-25 05:24:52
#include <cstdio>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <sstream>
#include <queue>
#include <typeinfo>
#include <fstream>
#include <map>
typedef long long ll;
using namespace std;
//freopen("D.in","r",stdin);
//freopen("D.out","w",stdout);
#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)
#define maxn 100001
#define eps 1e-9
const int inf=0x7fffffff; //无限大
string s;
vector<char> a;
int kiss;
int i;
void dealk()
{
void deal(char c);
int start=i;
while(1)
{
i++;
if(s[i]==']')
{
if(a[kiss]==0)
{
break;
}
else
{
i=start;
continue;
}
}
deal(s[i]);
}
}
void deal(char c)
{
if(c=='+')
a[kiss]++;
if(c=='-')
a[kiss]--;
if(c=='>')
{
kiss++;
if(kiss>=a.size())
a.push_back(0);
}
if(c=='<')
{
kiss--;
if(kiss<0)
{
a.insert(a.begin(),i);
kiss=0;
}
}
if(c=='.')
{
int m=a[kiss];
printf("%c",m);
} if(c==',')
{
char k;
scanf("%c",&k);
s[kiss]=k;
}
if(c=='[')
{
dealk();
}
/*
for(int i=0;i<a.size();i++)
printf("%d",a[i]);
cout<<endl;
*/
} int main()
{
while(cin>>s)
{
a.push_back(0);
int kiss=0;
for(i=0;i<s.size();i++)
{
deal(s[i]);
}
}
return 0;
}
最新文章
- MongoDB在实际项目中的使用
- Reveal使用步骤和 破解Revealapp的试用时间限制
- jQuery Uploadify在ASP.NET MVC中的使用
- nginx学习(二):初识配置文件
- Xcode7免证书真机调试实践
- php验证码的简单例子
- Thread Join()的用法
- python 下的数据结构与算法---1:让一切从无关开始
- NFS(网络文件系统的搭建)
- 完善tab页面定位
- BZOJ:4333: JSOI2012 智者的考验
- Win7下 Python中文正则的奇异表现
- 什么是CSR以及CSR的作用和生成
- 查看CentOS/Linux的版本信息
- 前端框架之Vue(5)-条件渲染
- 洛谷P4054 [JSOI2009]计数问题(二维树状数组)
- Mysql写入中文出错
- SDN 第一次上机作业
- Spring中applicationContext.xml的bean里的id和name属性区别
- Java之数据类型