csharp高级练习题:Esolang口译员#4 - Boolfuck口译员【难度:5级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练

本文介绍了Boolfuck,一种基于Brainfuck的深奥编程语言。Boolfuck的磁带无限且初始指针位于中间,每个单元格只能存储0或1。文章提供了一个高级C#练习,要求编写一个Boolfuck解释器,接受Boolfuck代码字符串和可选用户输入,并返回输出的字符。解释器需要忽略非命令字符,且允许用户输入用于模拟输入流。
摘要由CSDN通过智能技术生成

csharp高级练习题:Esolang口译员#4 - Boolfuck口译员【难度:5级】:

  • 对于这个Kata的其余部分,我建议将"他妈的"视为非亵渎.*

Esolang译员#4 - Boolfuck口译员

关于这个Kata系列

"Esolang Interpreters"是一个Kata系列,起初是由@donaldsebleung撰写的三个独立的独立esolang翻译Kata,它们都有相似的格式,并且都有点相互关联有关.在同伴Codewarrior的影响下,这三个高级别相关的Kata逐渐演变成今天所知的"Esolang Interpreters"系列.

本系列是一个高级习题系列,旨在通过实现各种深奥编程语言/ Esolangs的解释器来挑战聪明而大胆的程序员的思想,主要是[Brainfuck](http:// esolangs.org/wiki/Brainfuck)衍生物但不限于它们,给定某种Esolang的特定规格.也许这个规则的唯一例外是本系列中的第一个Kata,它旨在作为深奥编程语言世界的介绍/品尝者,并为他们编写解释器.

语言

Boolfuck是一个深奥的编程语言(Esolang),基于着名的Brainfuck(也是一个Esolang)根据官方网站于2004年或2005年发明.除了一些关键的区别外,它与Brainfuck非常相似:

  • Boolfuck使用位而不是字节
  • Brainfuck的磁带包含正好30,000个单元格,指针从左边开始; Boolfuck包含一个无限长的磁带,指针从"中间"开始(因为磁带可以无限延伸任一方向)
  • Boolfuck中的每个单元格只能包含值"0"或"1"(即位不是字节),而不是Brainfuck,其中单元格的值包含从"0"到"255"的值.
  • Boolfuck中的输出命令是;NOT.
  • “-`命令确实** 不存在于Boolfuck中,因为”+“或”-"无论如何都会翻转

无论如何,这是一个命令列表及其描述:

  • + - 翻转指针下的位值
  • , - 从输入流中读取一些内容,将其存储在指针下.但是,最终用户使用字符键入信息.字节以小端顺序读取 - 从字符"a"读取的第一位,例如,1,然后是0,0,0,0,1,1,最后是0.如果结束已到达文件,向指针下的位输出零.
  • ; - 将指针下的位输出到输出流.这些位以小端顺序输出,与输入的顺序相同.如果在程序结束时输出的总位数不是8的倍数,则输出的最后一个字符在更重要的一端用零填充.
  • < - 将指针向左移动1位
  • > - 将指针向右移动1位
  • [ - 如果指针下的值是’0,则跳到相应的]`
  • ] - 如果指针下的值是’1,则跳回匹配的[`字符

如果您尚未为Brainfuck编写翻译,我建议您完成此Kata首先.

任务

写一个Boolfuck解释器,最多接受两个参数.第一个(必需的)参数是字符串形式的Boolfuck代码.第二个(可选)参数是** 最终用户** 传入的输入(即实际字符而不是位),如果没有提供,则默认为""".您的解释器应将输出作为字符串返回实际字符​​(而不是位!).

函数boolfuck(code,input ="")

ç
char * boolfuck(char * code,char * in)

char * boolfuck(const char * code,const char * in)

public static String interpret(字符串代码,字符串输入)

let interpret(code:string)(input:string):string

def boolfuck(代码,输入)

去
func Boolfuck(代码,输入字符串)字符串

生锈
fn boolfuck(代码:&str,输入:Vec ) - > Vec 

boolfuck :: String  - > String  - > String

为你预装的是一个函数brainfuckToBoolfuck()/brainfuck_to_boolfuck()/BrainfuckToBoolfuck()它接受1个必需的参数(Brainfuck代码)并返回它的Boolfuck等价物,如果你觉得它有用.

请注意,您的解释器应该忽略任何非命令字符. ** 这将在测试用例中进行测试.**

如有疑问,请随时引用官方网站(顶部链接).

祝你好运:D

Kata在这个系列中

  1. Esolang口译员#1 - Esolangs和我的第一个口译员(MiniStringFuck)简介
  2. Esolang Interpreters#2 - Custom Smallfuck Interpreter
  3. Esolang Interpreters#3 - Custom Paintfuck Interpreter
  4. ** Esolang口译员#4 - Boolfuck口译员**

编程目标:

using System;
public class Boolfuck {
  public static string interpret (string code, string input) {
    return "";
  }
}


测试样例:

namespace Solution {
    using NUnit.Framework;
    using System;
    [TestFixture]
    public class BoolfuckTest {
        [Test]
        public void testEmpty () {
            . (, . (. (""), ""));
        }
        [Test]
        public void testSingleCommands () {
            Assert.AreEqual ("", Boolfuck.interpret ("<", ""));
            Assert.AreEqual ("", Boolfuck.interpret (">", ""));
            Assert.AreEqual ("", Boolfuck.interpret ("+", ""));
            Assert.AreEqual ("", Boolfuck.interpret (".", ""));


最佳答案(多种解法):

点击查看答案

更多关联题目:

csharp进阶练习题:猫和狗的数组矩阵【难度:2级】–景越C# 经典编程题库,不同难度C# 练习题,适合自学C# 的新手进阶训练

免责申明

本博客所有编程题目及答案均收集自互联网,主要用于供网友学习参考,如有侵犯你的权益请联系管理员及时删除,谢谢
题目收集至https://www.codewars.com/
https://www.codewars.com/kata/esolang-interpreters-number-4-boolfuck-interpreter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值