TinyBF - Brainf *** dönüştürücü


9

Brainf *** - TinyBF dönüştürücümüz var, ancak tam tersi değil, işte bir tane.

Kurallar:

  • Tercümanınız bir satırda geçerli bir TinyBF programı almalı ve isteğe bağlı sondaki boşluk / satırsonu ile ilgili BrainF *** programını bir satırda çıkarmalıdır. Öncü boşluklara izin verilmez
  • Giriş, dört TinyBF karakterinden herhangi biri olmayan karakterler içerebilir veya içermeyebilir. Öyleyse, tüm bu karakterleri aynı noktalara yazdırmalısınız.
  • Kullanacağım bazı belirsiz kriterlere dayanarak 1 Nisan'da (şaka değil) bir cevap kabul edilecektir (jk;) Aşağıdaki kurallara göre hile yapmayan en kısa programı kabul edeceğim)
  • 0 bayt veya 1 bayt çözüm yok, çünkü sadece bu amaçla bir programlama dili yaparsanız (veya varsa) eğlenceyi mahveder)

Test Durumları


Giriş 1: +++++>+++++=>=|>>+=>>+|=>|>+=>+|(Hesaplar 5 (bayt 1) + 5 (bayt 2) = 10 (bayt 3))
Çıkış 1:+++++>+++++<[>>+<<-]>[>+<-]

Giriş 2: +++>++++Hi+++:P+=>=|>|>+>+=>>&&+|=>>|=>>=+!!>>=+|>>>+|(Hesaplar 3 (bayt 1) * 8 (bayt 2) = 24 (bayt 3)) Çıkış 2:+++>++++Hi+++:P+<[>[>+>+<<&&-]>>[<<+!!>>-]<<<-]


Hiç G / Ç komutları olacak mı?
lirtosiast

Hayır, çünkü TinyBF'de IO komutları yok.
HyperNeutrino

Bu yanlış; ==beyni ..
Dennis

Yanıtlar:


1

Python 2, 106 bayt

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

Burada bulunan TinyBF belirtimini uygular . Çevrimiçi deneyin . @ Dica'nın cevabındaki teknikler kullanılarak iyileştirmeler yapıldı . Alıntılanan dize girişi gerektirir.


Bu tüm test vakalarım için geçerlidir! Aferin.
HyperNeutrino

İle 5 bayt kaydedebilirsiniz r+=b.get(c,c+c)[a]*(c!='='). Ayrıca 3 döngüyü daha kaydetmek için for döngüsünü bir satır yapabilirsiniz. 4 tane daha kaydetmek için dikteyi satır içine alabilirsiniz. İnlining input()başka 4'tür
Morgan Thrapp

Ayrıca, raw_inputPython 3'ü kullanmanız veya geçiş yapmanız ve bayt cezasını almanız gerekir print. Şimdi anladım SyntaxError: invalid syntax.
Morgan Thrapp

@Mergo Cevabımı sizinkine dayandım, ancak tahminler ağır olduğu için iyi olduğunu düşünüyorum, kaldırmamı isterseniz bana bildirin
Dica

@MorganThrapp Girdi alıntı, bu yüzden 2 için çalışır. Alıntı dize giriş alarak şu anda bulamadım bir meta yazı başına izin verilir çünkü ben mobil.
Mego

2

Python 3, 97 bayt

Bu script @ Mego'nun cevabına dayanıyor

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

3
Bunun Mego'nun cevabına çok benzediğini ve bir yorumda optimizasyon olarak önerilmesi gerektiğini düşünüyorum.
mbomb007

Bu daha kısa olmasına rağmen, Mego'nun cevabını kabul ettim çünkü cevabınız Mego'nunkine çok benziyor, farklı bir cevaptan ziyade bir optimizasyon gibi görünüyor.
HyperNeutrino
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.