ตัวแปลง TinyBF เป็น Brainf ***


9

เรามีตัวแปลง Brainf ให้เป็น TinyBF แต่ไม่ใช่วิธีอื่น ๆ ดังนั้นนี่คือหนึ่ง

กฎ:

  • ล่ามของคุณจะต้องใช้โปรแกรม TinyBF ที่ถูกต้องในหนึ่งบรรทัดและจะต้องส่งออกโปรแกรม BrainF *** ที่สอดคล้องกันในหนึ่งบรรทัดโดยมีตัวเลือกช่องว่างต่อท้าย / ขึ้นบรรทัดใหม่ ไม่อนุญาตให้มีช่องว่างนำหน้า
  • อินพุตอาจมีหรือไม่มีอักขระที่ไม่ใช่อักขระ TinyBF สี่ตัวใด ๆ ถ้าเป็นเช่นนั้นคุณจะต้องพิมพ์อักขระเหล่านี้ทั้งหมดในจุดเดียวกัน
  • คำตอบจะได้รับการยอมรับในวันที่ 1 เมษายน (ไม่ล้อเล่น) ขึ้นอยู่กับเกณฑ์ที่คลุมเครือบางอย่างที่ฉันจะใช้ (jk;) ฉันจะยอมรับโปรแกรมที่สั้นที่สุดที่ไม่ได้โกงตามกฎต่อไปนี้)
  • ไม่มีวิธีแก้ปัญหา 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

ไม่เพราะ TinyBF ไม่มีคำสั่ง IO
HyperNeutrino

มันไม่ถูกต้อง ==เป็นของ .brainfuck
Dennis

คำตอบ:


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 ที่พบที่นี่ ลองมันออนไลน์ การปรับปรุงที่ถูกสร้างขึ้นโดยใช้เทคนิคจาก@ คำตอบของ ต้องการอินพุตสตริงที่ยกมา


สิ่งนี้ใช้ได้กับกรณีทดสอบทั้งหมดของฉัน! ทำได้ดีมาก
HyperNeutrino

คุณสามารถบันทึก 5 r+=b.get(c,c+c)[a]*(c!='=')ไบต์ด้วย คุณสามารถสร้างห่วงสำหรับหนึ่งบรรทัดเพื่อประหยัดอีก 3 คุณสามารถอินไลน์คำสั่งเพื่อบันทึก 4 เพิ่มเติม การอินไลน์input()เป็นอีก 4
Morgan Thrapp

นอกจากนี้คุณจำเป็นต้องใช้อย่างใดอย่างหนึ่งraw_inputหรือสลับไปหลาม 3 printและใช้โทษไบต์สำหรับ ตอนนี้ฉันได้รับSyntaxError: invalid syntaxแล้ว
Morgan Thrapp

@Mergo ฉันตามคำตอบของคุณ แต่ฉันคิดว่ามันไม่เป็นไรเพราะการแก้ไขมีความหนักหน่วงแจ้งให้เราทราบหากคุณต้องการให้ฉันลบมันออก
Dica

@MorganThrapp ข้อมูลจะถูกยกมาดังนั้นจึงใช้งานได้สำหรับ 2 การอนุญาตให้ป้อนสตริงที่ยกมาได้รับอนุญาตต่อโพสต์เมตาที่ฉันไม่สามารถหาได้ตอนนี้เพราะฉันอยู่บนมือถือ
Mego

2

Python 3, 97 ไบต์

สคริปต์นี้ใช้คำตอบของ @ Mego

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

3
ฉันคิดว่านี่คล้ายกับคำตอบของ Mego มากเกินไปและควรได้รับการแนะนำว่าเป็นการเพิ่มประสิทธิภาพในการแสดงความคิดเห็น
mbomb007

แม้ว่านี่จะสั้นกว่านี้ แต่ฉันยอมรับคำตอบของ Mego เพราะคำตอบของคุณคล้ายกับ Mego มากเกินไปดูเหมือนว่าเป็นการเพิ่มประสิทธิภาพแทนที่จะเป็นคำตอบที่ชัดเจน
HyperNeutrino
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.