kübik olarak olarak herhangi bir kodu elle yazmak için çok sıkıcı. Zorluğunuz ASCII metnini Kübik kaynak koduna çevirmektir.
kübik olarak
Bu sadece Cubically hızlı bir halsiz olduğunu; depo daha eksiksiz rehber ve detaylar vardır.
Cubically, bir süre önce yazdığım, kullanmak acı verici olarak tasarlanmış bir esolang. İki adet bellek, 3x3x3 Rubik Küpü ve "not defteri" adı verilen bir kayıt içerir.
Hafıza
Dahili Rubik Küpü şu şekilde başlatılır:
000
000 top face
000
111222333444 left, front, right, and back faces, respectively
111222333444
111222333444
555
555 down face
555
Sağ yüzünde saat yönünde 90 ° dönüş yaptıktan sonra, bellek küpü şöyle görünecektir:
002
002
002
111225333044
111225333044
111225333044
554
554
554
Komutları
Tamsayı olmayan bir karakter varsayılan komutu ayarlar. Varsayılan komut yeniden ayarlanmadan önceki her tamsayı için komut bu tamsayı ile gerçekleştirilir. Örneğin, x524y312
komut yerine olur x
sonra komutu yerine 4, daha sonra, 2 ile, daha sonra 5 ile y
2 daha sonra 1, daha sonra, 3 ile.
Komutları kullanan tamsayılar yüz dizinlerini temsil eder. Yani x0
performans göstereceğini x
UP (0-endeksli) yüzünde. x1
icra ederdix
böylece sol (1-endeksli), kumanda ve.
Herhangi bir komutun 6
gerçekleştirilmesi bu komutu not defteri değerinde gerçekleştirir. 6 üzerinde herhangi bir tamsayı ile herhangi bir komutun gerçekleştirilmesi bir hataya neden olacaktır.
Aşağıda bazı örnek komutlar verilmiştir:
R1
- SAĞ yüzü saat yönünde 90 ° döndürün, böylece iç küp yukarıdaki ikinci örneğe benzeyecektirR11
- SAĞ yüzü saat yönünde iki kez 90 ° döndürün,R2
+0
- UP yüzünün tüm değerlerini not defterine ekleyin+000
- UP yüzünün tüm değerlerini üç kez not defterine ekleyin@6
- varolmayan 6. endeksli yüzü (bellek) bir karakter olarak yazdır%4
- GERİ yüzündeki tüm değerlerin toplamını bir tamsayı olarak yazdırır
Depoda komutların ve sözdiziminin tam bir listesi bulunmaktadır .
Meydan okuma
ASCII metnini girdi olarak alacak ve Cubically programını çıktı olarak yazdıracaksınız.
Örnekler ( buradan ve buradan çalınmış ):
Input -> Output
Hello, World! -> +53@6+1F2L2+0@6L2F2U3R3F1L1+2@66L3F3R1U1B3+0@6:4U1R1+00@6-000@6*0-4+000@6-00@6+2-000000@6-5+4000@6-00@6/0+00@6:0+0/0+00@6
1$2$3$4$5$6$7$8$9$10$ -> B1+2/2%6@4+00/0%6@4+00/1%6@4+21/1%6@4+30/0%6@4+22/1%6@4+22/1%6@4+40/1%6@4+52/1%6@4+42/1%6@4
kurallar
- Programınız 100 testcasının çevirisini içeren bir sözlük içeremez.
- Programınız 180 saniyeden kısa sürede bitmelidir (haftalar süren kaba kuvvet programları yoktur).
- Programınız 180 saniyeden kısa sürede biten geçerli bir Kübik kod çıktısı almalıdır.
- Test sürücüsüyle uğraşmak istemiyorsanız, programınız standart giriş üzerinden giriş alacaktır.
- Programınız, çalıştırıldığında programınızın girdisinden başka bir şey üretmeyen Kübik kod çıktısı almalıdır. ಠ_ಠ
puanlama
Programınızı, yalancı metin uzunluğu olan 100 sahte dizeyle test edeceksiniz. (Bunu sizin için yapacak bir bash betiği sağlanmıştır.) İşte nasıl puan vereceksiniz:
- Çıktı programının uzunluğu o olsun .
- Girdi dizesinin uzunluğu l olsun .
- Izin vermek r değişkeni o / l sonucu olsun .
- Tüm r'lerin ortalamasını bulun : (r 1 + r 2 + r ... + r 100 ) / 100 .
Bu komut dosyasıyla test edin. Talimatlara uygun olarak değiştirmeniz gerekir. Program, çıktının Kübik kod geçerli olup olmadığını denetlemediğini unutmayın. Senaryoyu çalıştıramazsan yardımcı olabilirim. Kübik sohbet odasında bana ping at .
@6
- varolmayan 6. endeksli yüzün (not defteri) toplamını bir karakter olarak yazdır" daha doğru olur mu? Mı %4
da bir miktar? Are +
komutlar toplamı yüzü sonra ... tüm değerleri veya bu ekleme?
@6
/ %6
doğrudan not defteri değerini bir karakter / tamsayı olarak yazdırır. @x
/ %x
(burada x varolan herhangi bir yüzdür), x
-indexed yüzüne tüm değerleri ekler ve toplamı bir karakter / tamsayı olarak yazdırır. +
belirtilen yüzdeki tüm değerleri kayıt defterine ekler.