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.