Bu meydan okuma olarak, sizin için bir tercüman yazacak 2 Q (olarak transkripsiyonu TwoMega ), gevşek dayalı bir dil brainfuck sonsuz boyutlu depolama alanına sahip.
Dil
2 Ω halde üç parça içerir:
Bant bit sonsuz listesi, tüm bu 0 durumuna getirilir bir en soldaki elemanı, ancak en sağdaki elemanı vardır.
Hafıza Pointer bant bir elemanın bir endeksidir negatif olmayan bir tam sayıdır. Daha yüksek bir bellek işaretçisi sağda bir bant hücresini ifade eder; 0'lık bir bellek işaretçisi en soldaki öğeye karşılık gelir. Bellek işaretçisi 0 olarak başlatılır.
Hypercube bir kavramsal olarak, ∞ Hypercube genişliği sadece 2 hücreleri, her boyutta bağlı, ancak boyutların sonsuz sayısı anlamına 0 olarak başlatıldı biraz içeren her hangi hücrelerin boyutlu bir "kutu", hücreleri sayılamaz .
Bir indeks hiperküp içine (bit sınırlı bir listesi sonlu boyutlu bir hiperküp atıfta için kullanılabilir, aynı şekilde) hiperküp bir hücreye karşılık gelir bit sonsuz listesidir. Bant sonsuz bir bit listesi olduğundan, tüm bant her zaman Hypercube öğesinin bir öğesini ifade eder; bu öğeye yönlendirme denir .
2 Ω 7 farklı karakterlere anlam verir:
<
bellek işaretçisini 1 oranında azaltır. 0'ın altına düşürmek tanımsız bir davranıştır, bu yüzden işlemeniz gerekmez.>
bellek işaretçisini 1 artırır.!
referansta biraz çevirir..
başvurudaki biti verir.^
kasetteki bellek işaretçisi tarafından gösterilen hücredeki biti, başvurudaki bitin tersi ile değiştirir.[x]
başvurudakix
bit 1 olduğu sürece kodu çalıştırır .
Meydan okuma
Göreviniz, dizeyi girdi olarak alan ve bu girdiyi 2 Ω program olarak yürüten bir program yazmaktır .
Bu kod golfBöylece, en kısa geçerli yanıt (bayt olarak ölçülür) kazanır.
notlar
- Programın yalnızca karakterlerden oluşacağını
<>!.^[]
ve[]
düzgün şekilde yuvalanacağını varsayabilirsiniz . - Yorumcunuz yalnızca sistemdeki kullanılabilir bellekle sınırlı olmalıdır. Örnek programları makul bir sürede çalıştırabilmelidir.
Örnek Programlar
Baskı 1:
!.
Baskı 010:
.!.!.
Sonsuza kadar 0 yazdır:
![!.!]
Sonsuza kadar 0 veya !
önceden eklenmişse sonsuza kadar 1 yazdırın :
[.]![!.!]
cat
program yazma davetiniz : girdi alma talimatı yok gibi görünüyor.
.
- tek bir sıfır yazdırır ve sonra var; !^!.
- tek bir baskı alır ve çıkar. Daha fazlası olsa iyi olurdu. Şu anda, onları doğrulamak için gönderimleri anlamalıdır (ve dolayısıyla onları oy verin!)
[0,0,0,0,0,0,0...]
(yani !
, programın başında a'nın varlığı ) ile verilir.
[.]![!.!]
sonsuza kadar o hücrenin değerini yazdırmak için
1
banttaki s sayısı her zaman sonlu olduğundan, depolama hücrelerinin sayısı aslında sayılamaz . Aslında, erişilebilir Hypercube temelde sonsuz 1D dizi olduğunu gösterir doğal sayılar ve bant durumları (bir geriye doğru ikili sayı olarak bant içeriği yorumlama) arasında oldukça basit bir bijection, orada bit saygısız bir tam sayı gösterici değerinde , beyin sıkışmasında olduğu gibi içeri / azalan yerine.