Bu zorluk, Tekrar ile ilgili iki kişilik bir seride ilktir. İkincisi yakında hazır olacak.
Tekrarlama (Sadece uydurduğu bir şey) olarak adlandırılan bir dille, sonsuz dize orada oluşur 12345678901234567890...
ile, 1234567890
sonsuza tekrarlayarak.
Çıktı sayıları için aşağıdaki sözdizimi kullanılabilir:
+-*/
: Bu, operatörü yinelenen basamak dizesine ekler.- Örnekler:
+
->1+2
=3
( arasına bir ve+
ekler )+
1
2
+*
->1+2*3
=1+6
=7
(Şu anda iki operatör kullanılması dışında yukarıdakiyle aynı)/
->1/2
=0
(Tekrarlama tamsayı bölmesini kullanır)//
->1/2/3
=0/3
=0
(Tekrarlama, birden fazla çıkarma ve bölümle "sol ilişkilendirme" kullanır)
- Her operatör, aksi belirtilmedikçe solunda bir basamak olacak şekilde yerleştirilir
c
(aşağıya bakınız).
- Örnekler:
c
: Dizedeki bir sonraki basamakla birleştirilir.- Örnekler:
c+
->12+3
=15
(c
"devam eder"1
ve bunu oluşturmak için bir sonraki basamakla2
birleştirir12
)+c
->1+23
=24
ccc
->1234
- Örnekler:
()
: Sayıları işlemek için parantez.- Örnekler:
(c+)*
->(12+3)*4
=15*4
=60
(Tekrarlama işlem sırasını kullanır)(c+)/c
->(12+3)/45
=15/45
=0
(cc+c)/
->(123+45)/6
=168/6
=28
- Örnekler:
s
: Bir numara atla (numarayı sonsuz dizeden kaldırır).s+
->2+3
=5
(s
atlar1
)csc
->124
(ilkc
concats1
ve2
,s
atlama3
ve sonc
concats12
için4
)+s+
->7
(ilk+
ekler1
ve2
yapmak3
,s
atlar3
ve son+
ekler3
için4
yapmak7
)cs*(++)
->12*(4+5+6)
=12*15
=180
Yukarıdaki örneklerde, sonsuz dizgide yalnızca sınırlı miktarda rakam kullanılır. Kullanılan basamak sayısı eşittir number of operators, concats and skips + 1
.
Göreviniz, bir Tekrarlama kodu dizisi verildiğinde, sonucu çıktı olarak almaktır.
Giriş ve çıkış örnekleri:
++ -> 6
- -> -1
(-)* -> -3
cscc -> 1245
(cc+c)/ -> 28
cc+c/ -> 130
cs*(++) -> 180
Bu kod golf, bayt çok kısa kod kazanır!
Özellikleri:
- Sonucun asla yukarı çıkmayacağı garantilidir
2^31-1
. - Ayrıca, girişin yalnızca simgelerden oluşacağı garanti edilir
+-*/cs()
. - Boş bir program çıkacaktır
1
.
s+
olduğunu 2+3
ilk örneği olarak. Ve hala s
beni rahatsız ediyor. Nasıl +s()+
genişlediğini merak ediyorum . Eğer 1+(2)+4
daha (
önce gelirse, 2
ama görünüşte hala atlanmadan s
önce gelirse , değil . Ancak sonuç o zaman (
3
2
1+(3)+4
s
+s+
sc
olduğu 23
ve s+
bir 1+3
? Does s
atlamak 1
şimdi ya 2
? Tüm örnekler işlenenlerdeki ilk işlemi kullanır 1
ve 2
... öyle sc
olmalıdır 13
.
~
s? Bizi asılı bırakma.