Muriel benzeri bir dil ve uygulama oluşturun


9

Muriel , döngü kurmanın tek yolunun bir quine yaratmak ve onu uygulamak olduğu bir dildir. İşiniz bu özellik ile kendi dilinizi oluşturmak ve önceden var olan bir dilde uygulanmasıdır.

Muriel benzeri bir dili aşağıdaki gibi tanımlayacağız:

  1. Muriel'in @komutuna veya python'lara benzer şekilde kendi dilinde kod yürütmek için yerleşik bir komuta sahiptir exec.
  2. Turing tamamlandı.
  3. Yerleşik yürütme komutunu kaldırırsanız, artık Turing tamamlanmıyor demektir.

Muriel, @yerleşik yürütme komutu olarak Muriel'e benzer . Şirin ayrıca Muriel benzeri (yerleşik yürütme komutu x). Python Muriel benzeri değil , çünkü çıkarırsanız hala Turing tamamlandı exec.

İşiniz Muriel benzeri bir programlama dili oluşturmak ve daha sonra dilinizi istediğiniz dilde bir uygulama sağlamaktır. Puanınız, en aza indirmeye çalıştığınız uygulamanın uzunluğudur.

Notlar:

  1. Dahili yürütmenizin tam olarak Muriel gibi çalışması gerekmez. Çocuk programının sonlandırılması, hatalar, kapsam belirleme vb.
  2. Uygulamayı yazdığınız dilin kendisi Muriel benzeri olamaz . (Bu @geçerli bir giriş değildir.) Bu yazıdan önce de var olmalıdır.

Underload bir Muriel benzeri dil?
alephalpha

@JerryJeremiah Düzenlemem daha açık hale getiriyor mu?
PyRulez

@alephalpha Bu wiki "^ olmadan, kalan programın boyutu her zaman azalacak ve sonunda duracaktır." Bu doğruysa, evet, Underload Muriel benzeri.
PyRulez

Hedef dilinizde birden fazla evalkomut varsa ne yaparsınız ? (Örn , Python'lar execve eval) TCness'i kaybetmek için hepsinin kaldırılmasını ister misiniz?
CalculatorFeline

1
@PyRulez Bunun kod golf yerine popülerlik yarışması olması gerektiğini düşünüyorum , aksi takdirde uygulama dili seçimi bukalemun mücadelesini zorlaştıracaktır
Uriel

Yanıtlar:


3

Python 3 ve "Underload'un minimum karakteri ancak karakterleri değiştirilmiş 2019, ters çevrilmiş ve 0üstte olacak şekilde" minimum TC alt kümesi , 156 bayt

c=input()
n=1
t=c
s=[]
while c:
 *c,i=c
 if n:
  if"6">i:n+=int(i)-1
  if n:t=[i]+t
  else:s+=[t];t=[]
 elif"2"==i:n=1
 elif"2">i:s+=s[-1:]
 else:c+=s.pop()

Çevrimiçi deneyin!

Üstbilgideki açıklamalar, altbilgideki yorumlu kod.


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.