RLE Brainfuck方言

RLE Brainfuck

BF-RLE に関連する)

Brainfuckの架空のRLE(ランレングス符号化)方言は、8つのコマンドのシンボルを受け入れます数字も受け入れます。数字は、コマンドの連続した繰り返しの数を表すために使用され、ソースコードのランレングス符号化を可能にする。

8> is equal to
>>>>>>>>.

長さは常にコマンドの左側にあります。

あなたの仕事は、入力文字列(RLE
Brainfuckフラグメント)を通常のBrainfuckプログラムに翻訳する最短のプログラム/関数を書くことです。

例えば:

入力:

10+[>+>3+>7+>10+4<-]3>2+.>+.7+2.3+.2<2+.>15+.>.3+.6-.8-.2<+.<.

Ouptut:

++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>++.>+.+++++++..+++.<<++.>+++++++++++++++.>.+++.------.--------.<<+.<.

各言語のバイト数で最短のコードが勝ちます。

ベストアンサー

Python
2
, 62 61 bytes

lambda s:eval(re.sub('(d*)(.)',r'+1*1*1*"2"',s))
import re

2 –
お試しください!

The regex substitution expands 3<2+- into the
string:

+1*3*1*"<"+1*2*1*"+"+1**1*"-"

それは eval されます。 ( 1 が空の場合、 1 **
1 = 1
が得られます)最初の + は、最初の数字、およびその他の
+ は文字列連結です。これはより明白な

lambda s:re.sub('(d+)(.)',lambda m:int(m.group(1))*m.group(2),s)
import re

14バイト。通常、 " 2"
は常に機能するとは限りませんが、ありがたいことに脳波コマンドではありません


xnor saved a byte, supplying the
1*1*1 trick. Previously I had 1L in the
regex, and defined L=1 as a lambda argument, which is
also pretty cool: 3L is a long int literal and
L is a variable.

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です