Brainfuck 解释器(二)


  • 0
    administrators

    基本要求与 Brainfuck 解释器(一) 一致,但是禁止使用 evalnew Function,并且,应当能够检测一些边界情况:

    1. 不合法表达式应该抛出异常(比如 [] 未正常对应,或者遇到了意外的字符)
    2. 尝试读取输入,但是已经达到末尾时应该抛出异常
    3. 试图读写错误范围内存时,应该抛出异常(地址小于 0 时)

    你需要实现一个 brainFuck 方法,该方法接收两个参数,第一个参数为 brainFuck 代码,第二个参数为输入内容(字符串),返回值即输出内容。例如:

    brainFuck('++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.', '') // Hello World!
    brainFuck(',[.[-],]', '2333' + String.fromCharCode(0)) // 2333
    brainFuck(',>,<[>[->+>+<<]>>[-<<+>>]<<<-]>>.', String.fromCharCode(2, 3)) //乘法 2 * 3 = 5
    

    (具体例子可以到 Brainfuck 上查看)

    遇到无法解析的情况直接抛出异常即可。


  • 0

    我真不知道怎么屏蔽Function,大佬有啥建议么

    ([]['constructor']['constructor']('str','console["info"](str)'))('hello world')
    
    

登录后回复
 

与 ScriptOJ 的连接断开,我们正在尝试重连,请耐心等待