·由一段聊天记录引来的
发布时间:2011-06-30 07:25:15 文章来源:www.iduyao.cn 采编人员:星星草
·由一段聊天记录引出的·
这几天和一个同学聊了点东西,关于一些function在BF语言下的实现
/*教学部分,熟悉BF语言的可以掠过
BF语言我个人感觉真的是世界上最好学的语言之一,因为你只要三分钟就能学会这个语言的全部,至于如何用BF语言编程,那就看你的脑袋了。
BF语言的全称叫BrainF**k,是一种极小化的计算机语言,它是由Urban Müller在1993年创建的。Müller的目标是建立一种简单的、可以用最小的编译器来实现的、符合图灵完全思想的编程语言。这种语言由八种状态构成,为Amiga机器编写的编译器(第二版)只有240个字节大小。
就象它的名字所暗示的,BF程序很难读懂。尽管如此,BF图灵机一样可以完成任何计算任务。虽然BF的计算方式如此与众不同,但它确实能够正确运行。
这种语言基于一个简单的机器模型,除了指令,这个机器还包括:一个以字节为单位、被初始化为零的数组、一个指向该数组的指针(初始时指向数组的第一个字节)、以及用于输入输出的两个字节流。*
*来自WikiPedia中文版
好了,介绍完毕,下面是基本语法:
'>' 符号表示指针自增一,'<' 符号反之
'+' 符号表示指针所指内容自增一,'-' 符号反之
'.' 表示输出当前指针所指内容,',' 表示输入内容到指针所指处
'[' 表示如果当前指针所指内容为零,跳转至下一个']'后面
']' 表示如果当前指针所指内容非零,跳转至下一个'['后面
如果你看到了这里,那么恭喜你,BF语言你已经学会了*/
好了,下面是聊天内容(经过优化,略去不必要的部分),">>" 表示我说的话, "<<" 表示同学说的话
Conversation.Start:
>> 我觉得比汇编容易
<< 没什么要记的..
<< 但这种代码..
<< 没办法做开发啊
>> 无法维护
Conversation.Pause:
- 这里我要说一下,其实维护问题并不难,BF语言中虽然没有注释,但是事实上多数编译器都直接无视非关键字,也就是说你可以到处写注释,甚至把注释当成代码来写 。
Conversation.Continue:
>> 我发现用这个写程序有个很蛋疼的问题
>> 你必须记得当前在那个地址,以及每个地址当前的值
里面所有的指针都是用相对地址
<< 那指针内容什么的怎么搞
<< 比如你要输出ASCII字符
你怎么去找到这个字符?
>> 用>和<
<< 比如,输出字符“A”的程序是什么
>> 输出字符A,如下
code:
+++ +++ +++ +
[
>+++ +++ +
<-
]
>-----.
end of code
>> 第一行,[0]自增10,作为计数器,然后开始循环,循环中*[1]每次自增7,然后*[0]-1
当*[0] == 0时跳出循环,这个时候*[1] == 70,然后*[1] - 5,输出
所以说,你必须记住当前指针指向哪里,以及所有内存区域中的值
<< code:
+++ +++ +++ + [ > +++ +++ < - ] >+++++ .
end of code
这两种写法一样吗?
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
erlang:创建表
mnesia:create_table(student, [{attributes,{name,number,sex}}]).
怎么老是提示:
{aborted,{bad_type,student,{...
-
100分求助,matlab一维矩阵变成二维矩阵,怎么感觉我写的代码这么绕呢
希望把Input矩阵(一维)变成3行4列的二维矩阵Output;我写了下面...
-
为什么没有易语言版块呢?
为什么没有易语言版块呢?
------解决方案--------------------
易语言,还不常用,交流也不比,所以无....
-
批处理的一个问题
想用批处理更改文件属性
@echo off
arrtib -R /S E:\home\*.*
exit
这样写是错误的吗?
为什么没起作用啊
--...
-
几个关于大型机的问题(新手求救啊~)
1、z/OS 和UNIX系统的相同点和相异点有哪些啊?主目录和用户目录的区别是什么啊?
2、用JCL创建一...
-
急求!如何用正则截取一对标签中的字符当中的日期
<p class="source">
<!--[if !IE]>收藏功能<!...
-
批处理代码放在U盘里,如何复制整个硬盘的时间段文件? qivsran老师的答案,谢谢!
@echo off
md 新文件
setlocal enabledelayedexpa...
-
复制文件不带目录文件夹如何修改代码?同名文件仅复制最新的
@echo off
md %computername%资料 2>nul
Cd /d %computername%资料
F...
-
求C里面 全角半角转换函数
求C里面 全角半角转换函数
------解决方案--------------------
我在别处看了,希望对你有帮助。
...
-
求助:关于qtp10 无法识别 maven自动构建flex3.6 的问题
近日遇到maven自动构建flex3.6的问题。希望大家提出宝贵意见。
问...