Cubically , çok özel bir sorun alt kümesi için kısa, golf benzeri cevaplar oluşturabilen oldukça yeni bir ezoterik dildir. Hafızayı 3x3 Rubik küpü şeklinde saklaması benzersizdir, bu da hesaplamaları çoğu dilden çok daha az önemsiz hale getirir. Kübik olarak, programcı, yüzlerde depolanan değerleri değiştirmek için dahili küpü döndürmeli, ardından bu değerleri hesaplamalarında kullanmalıdır. Hesaplamalar, "not defteri" olarak bilinen hayali bir yüz üzerinde depolanan tek bir 32 bit tam sayı üzerinde gerçekleştirilir. Ek olarak, Cubically kullanıcı girişi isteyebilir ve sadece tek bir tamsayı değerinden oluşan bir giriş arabelleğinde saklayabilir.
Küp
Küpün yüzleri U p, D kendi, Sol , Sağ , F ront ve B ack'tur:
UUU
UUU
UUU
LLLFFFRRRBBB
LLLFFFRRRBBB
LLLFFFRRRBBB
DDD
DDD
DDD
Program başladığında, küp, o yüzdeki her kare o yüzün 0 tabanlı dizinine eşit olacak şekilde başlatılır:
000
000
000
111222333444
111222333444
111222333444
555
555
555
Bir yüz döndürüldüğünde, her zaman saat yönünde döndürülür:
Cubically> F1
000
000
111
115222033444
115222033444
115222033444
333
555
555
Bir yüzün değeri, o yüzdeki her karenin toplamı olarak tanımlanır. Örneğin, yukarıdaki küpte, yüzün 0
değeri 3'tür.
Sözdizimi
Komutlar önce bir komutun belleğe yüklenmesi, ardından komutun yürütülmesi için argümanların iletilmesiyle yürütülür. Örneğin, komut F1
komutu F
belleğe yükler , sonra argümanla çağırır 1
. Ayrıca, F13
komutu F
belleğe yükler , sonra argümanla 1
çağırır, sonra argümanla çağırır 3
. Sayı olmayan herhangi bir karakter komut olarak kabul edilir ve herhangi bir sayı bağımsız değişken olarak kabul edilir.
Senin görevin
Göreviniz Cubically'nın dahili bellek küpünü istediğiniz bir dilde uygulamaktır. Kodunuz dilin çok küçük bir alt kümesini yürütebilmelidir.
Komutları
R
- Küpün sağ yüzünü belirtilen sayıda saat yönünde döndürün.L
- Küpün sol yüzünü belirtilen sayıda saat yönünde döndürün.U
- Küpün üst yüzünü belirtilen sayıda saat yönünde döndürün.D
- Küpün alt yüzünü belirtilen sayıda saat yönünde döndürün.F
- Küpün ön yüzünü belirtilen sayıda saat yönünde çevirin.B
- Küpün arka yüzünü belirtilen sayıda saat yönünde döndürün.%
- Verilen yüzdeki değeri çıktılar. Bir yüzün değeri, o yüzdeki tüm karelerin toplamı olarak tanımlanır.
kurallar
- Bu zorluğun yayınlandığı tarihten önce veya sonra oluşturulan herhangi bir dili, bu zorluğu çözebilecek bir program veya işlev yazmak için kullanabilirsiniz.
- Giriş ya STDIN, bir dize ya da bir karakter dizisi olarak aktarılır (seçerseniz, lütfen belirtiniz).
- Çıktı ya STDOUT'a ya da işlevin çıktısı olarak iletilmelidir ve ya bir tamsayı, yalnızca rakam içeren bir dize ya da bir rakam dizisi olmalıdır. Dil ise gerektirir çıkışına bir eğik yeni satır, öyle yapabilirsiniz.
- Giriş her zaman şu biçiminde olacaktır:
([UDLRFB]\d*)*%[0-5]
. Girişte boşluk karakteri olmayacaktır. - İçin giriş
%
her zaman 0 tabanlı bir dizin kullanır.
Bu kod golf , bayt en kısa cevap kazanır.
Test Durumları
%0 -> 0
%1 -> 9
%2 -> 18
%3 -> 27
%4 -> 36
%5 -> 45
R1%2 -> 27
RD3F2%5 -> 32
L1R23F1B5U9D2%3 -> 17
Daha fazla test örneği için TIO yorumlayıcısına göz atın . TIO çalışmıyorsa, bunun yerine Lua yorumlayıcısını kullanabilirsiniz .
4
arasına R
ve D
örnekte RD3F2%5 -> 30
?