Bu mücadelede, yaptığım basit bir dil için bir tercüman yazacaksınız. Dil, tam olarak bir bayt uzunluğunda olan tek bir akümülatör A'ya dayanmaktadır. Bir programın başında, A = 0'dır. Bunlar dil talimatlarıdır:
!
: Ters çevirme
Bu talimat, akümülatörün her bir ucunu basitçe tersine çevirir. Her sıfır bir olur ve her biri sıfır olur. Basit!
>
: Sağa Kaydır
Bu komut A'daki her biti sağa kaydırır. En soldaki bit sıfır olur ve en sağdaki bit atılır.
<
: Sola kay
Bu komut A'daki her biti sola kaydırır. En sağdaki bit sıfır olur ve en soldaki bit atılır.
@
: Değişen Nybbles
Bu komut, A'nın ilk dört bitini, alt dört bit ile değiştirir. Örneğin, A ise 01101010
ve siz yürütüyorsanız @
, A olacaktır 10100110
:
____________________
| |
0110 1010 1010 0110
|_______|
Tüm talimatlar bu! Basit değil mi?
kurallar
- Programınız başlangıçta bir kez girişi kabul etmelidir . Bu bir kod satırı olacaktır. Bu etkileşimli bir tercüman değil ! Girdiyi yalnızca bir kez kabul edebilirsiniz ve bu satır yürütüldüğünde başa geri dönmeniz gerekmez.
- Programınız sözü geçen girişi değerlendirmelidir. Yukarıda belirtilmeyen her karakter göz ardı edilir.
- Ardından programınız akümülatörün nihai değerini, ondalık olarak yazdıracaktır.
- Geçerli programlama dilleri için olağan kurallar geçerlidir.
- Standart boşluklara izin verilmez.
- Bu kod golf , en küçük bayt sayısı kazanıyor.
Gönderilerinizi test etmek için bazı küçük programlar. Ok koddan önce, beklenen sonuçtan sonra:
!
->255
!>>
->63
!<@
->239
!nop!&6*!
->255
Keyfini çıkarın!
! -> 255
burada bayt başına 8 bit kullanacağız. Soru açık değil.