在Brainfuck中打印“极客换极客”

几个月前,当我查看一位大学四年级学生的黑客开发者简介时,我发现他的语言活动中有一种语言包括 笨蛋 .这引起了我的兴趣,所以我在谷歌上搜索了一下,但令我惊讶的是,我没有找到一个链接指向brainfuck上一篇关于Geeksforgeks的文章。所以不管怎样,我在网上读到了一些关于它的信息 维基魔杖 & LearnXinYMinutes &在那之后,我在网上解决了我的第一个问题 斯波吉 这给了我0.6分,并提升了我的全球排名 44000 22296 .

null

从那时起,我就想在Geeksforgeks上写一篇关于brainfuck的文章,因为这是学生们查阅任何编程相关文章的第一个网站。

由于它是一种极简主义语言,用它编写代码可能相当长,您必须仔细地跟踪您键入的每个语句、操作和字符。它考验着你作为一名程序员的耐心,绝对令人沮丧(因此得名),但当你得到一个公认的记号时,这是程序员能体验到的最令人满意的感觉之一。

在开始实际代码之前,让我们先看看它的一些特性=>

  • 它是一种深奥的编程语言( 埃索朗 )
  • 它只包含下面列出的8个命令。
    1. > 增加数据指针(指向右边的下一个单元格)。
    2. < 减少数据指针(指向左边的下一个单元格)。
    3. + 增加(增加一个)数据指针处的字节。
    4. 将数据指针处的字节减量(减少一个)。
    5. . 在数据指针处输出字节。
    6. , 接受一个字节的输入,将其值存储在数据指针的字节中。
    7. [ 如果数据指针处的字节为零,则不将指令指针向前移动到下一个命令,而是将其向前跳转到匹配的]命令之后的命令。
    8. ] 如果数据指针处的字节不为零,则不将指令指针向前移动到下一个命令,而是将其跳回匹配[command]后的命令。
  • Brainfuck以8位大小的单元(单元是字节)的形式存储数据。
  • 在经典分布中,单元格数组有30000个单元格,指针从最左边的单元格(单元格0)开始。

为了将我们新学到的brainfuck知识付诸实践,我们将编写一个简单的打印程序 极客换极客 .

方法很简单。首先,我们需要列出要打印的字符类型,并列出它们的ASCII码。然后我们需要将最接近ASCII码的值存储在所需数量的单元格中,这样我们就可以通过增加或减少这些单元格值来获得准确的ASCII码,并打印所需的字符。

Storage of ASCII values in different cells

在进一步向下滚动并查看代码之前,我强烈建议您尝试自己编写代码。你可以在上面测试你的代码 IDE–Le Brainfuck 专门用于编译BrainFuck代码。

// You need to use https://copy.sh/brainfuck/ to run
// this code.
/** Using different cells to store different numeric values
* Cell 1 = 70; Cell 2 = 80; Cell 3 = 30
* These base values can then be incremented or decremented
* to store ASCII values of the characters we need to print */
++++++++++ //Cell 1 = 70(To run the loop 10 times)
[
>+++++++ // Cell 1 = 7*10
>++++++++ // Cell 2 = 8*10
>+++ // Cell 3 = 3*10
<<<- // Setting the pointer back to cell 0 & decrement
] // end of loop
/**Final numeric values in each cell
*Cell 0 = 0; Cell 1 = 70; Cell 2 = 80; Cell 3 = 30*/
// Moving from Cell 0 to Cell 1
>+.--..++++++. // Printing "GEEK"(ASCII 71, 69, 69 75)
// Moving from Cell 1 to Cell 2
>+++. // Printing "S"(ASCII 83)
// Moving from Cell 2 to Cell 3
>++. // Printing " "(ASCII 32)
// Moving the pointer back to Cell 1
<<-----. // Printing "F"(ASCII 70)
//Moving from Cell 1 to Cell 2
>----.+++. // Printing "OR"(ASCII 79, 82)
// Moving from Cell 2 to Cell 3
>. // Printing " "(ASCII 32)
//Moving from Cell 3 to Cell 1
<<+.--..++++++. //Printing "GEEK"(ASCII 71, 69, 69 75)
//Moving from Cell 1 to Cell 2
>+. //Printing "S"(ASCII 83)


Output : GEEKS FOR GEEKS

brainfuck的应用: 1) Brainfuck没有很多实际用途。 2) 它的创建者Urban Müller设计了brainfuck,目的是用尽可能最小的编译器实现它。 3) 深奥的编程语言通常用于测试计算机编程语言设计的边界,如软件艺术或仅仅用于娱乐性编程。

如果你想看更多用brainfuck编写的程序,那就看这个吧 链接 .

练习中的问题: 1) 贝基 2) BFMUL

资料来源: 该死的维基魔杖

本文由 帕拉什尼甘酒店 . 电子邮件ID: npalash25@gmail.com

如果您发现任何不正确的地方,或者您有上述代码的较短版本,或者您想分享有关上述主题的更多信息,请写评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享