TinyBF至Brainf ***转换器


9

我们有一个Brainf ***到TinyBF转换器,但是没有相反的方法,所以这是一个。

规则:

  • 您的解释器必须在一行上使用有效的TinyBF程序,并且必须在一行上输出相应的BrainF ***程序,并带有可选的尾随空白/换行符。不允许前导空格
  • 输入内容可能包含也可能不包含不是四个TinyBF字符中的任何一个的字符。如果是这样,则必须在相同位置打印所有这些字符。
  • 根据我将使用的一些晦涩标准(jk;),我将在4月1日接受答案(不是在开玩笑),我将接受不遵循以下规则作弊的最短程序)
  • 没有0字节或1字节的解决方案,因为如果您为此目的而编写(或存在)编程语言,那么它会破坏乐趣。)

测试用例


输入1:(+++++>+++++=>=|>>+=>>+|=>|>+=>+|计算5(字节1)+ 5(字节2)= 10(字节3))
输出1:+++++>+++++<[>>+<<-]>[>+<-]

输入2:(+++>++++Hi+++:P+=>=|>|>+>+=>>&&+|=>>|=>>=+!!>>=+|>>>+|计算3(字节1)* 8(字节2)= 24(字节3))输出2:+++>++++Hi+++:P+<[>[>+>+<<&&-]>>[<<+!!>>-]<<<-]


会不会有I / O命令?
lirtosiast 2016年

否,因为TinyBF没有IO命令。
HyperNeutrino

那是不对的。==是疯子的.
丹尼斯

Answers:


1

Python 2,106字节

a=0
r=''
for c in input():a=[a,~a][c=='='];r+={'+':'+-','>':'><','|':'[]'}.get(c,c)[a%-2]*(c!='=')
print r

实现此处的TinyBF规范。在线尝试。使用@Dica的答案中的技术进行了改进。需要带引号的字符串输入。


这适用于我所有的测试用例!做得好。
HyperNeutrino

您可以使用保存5个字节r+=b.get(c,c+c)[a]*(c!='=')。您也可以使for循环一行以节省3条。您可以内联字典,再保存4个。内联input()是另一个4
摩根Thrapp

另外,您需要使用raw_input或切换到Python 3并为进行字节惩罚print。现在我明白了SyntaxError: invalid syntax
Morgan Thrapp '16

@Mergo我根据您的回答给出了答案,但我想这是可以的,因为所做的修改很繁重,如果您要我删除它,请告诉我
Dica

@MorganThrapp输入是带引号的,因此它适用于2。由于我在移动设备上,我现在无法找到每个元帖子,因此可以使用带引号的字符串输入。
Mego 2016年

2

Python 3,97个字节

该脚本基于@Mego的答案

a=0
for c in input():a-=c=='=';print({'+':'+-','>':'><','|':'[]'}.get(c,c)[a%-2]*(c!='='),end='')

3
我认为这与Mego的答案太相似,应该在评论中建议它是一种优化。
mbomb007 '16

尽管这很短,但我接受了Mego的答案,因为您的答案与Mego的答案太相似了,这似乎是一种优化,而不是一个独特的答案。
HyperNeutrino
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.