To wyzwanie jest pierwszym z serii dwóch wyzwań dotyczących powtórzeń. Druga będzie wkrótce dostępna.
W języku o nazwie Repetition (coś, co właśnie wymyśliłem), składa się z nieskończonego ciągu 12345678901234567890...
, z 1234567890
powtarzaniem na zawsze.
Dostępna jest następująca składnia liczb wyjściowych:
+-*/
: Wstawia operator do ciągu powtarzających się cyfr.- Przykłady:
+
->1+2
=3
(+
Wstawia+
między1
i2
)+*
->1+2*3
=1+6
=7
(Taki sam jak powyżej, z tym wyjątkiem, że obecnie używa się dwóch operatorów)/
->1/2
=0
(Powtórzenie używa podziału na liczby całkowite)//
->1/2/3
=0/3
=0
(Powtórzenie używa „lewego skojarzenia” z wieloma odejmowaniami i podziałami)
- Każdy operator jest wstawiany w taki sposób, aby po jego lewej stronie znajdowała się jedna cyfra, chyba że są cyfry
c
(patrz poniżej).
- Przykłady:
c
: Łączy się z następną cyfrą w ciągu.- Przykłady:
c+
->12+3
=15
(c
„kontynuuje”1
i łączy go z następną cyfrą,2
tworząc12
)+c
->1+23
=24
ccc
->1234
- Przykłady:
()
: Wsporniki do przetwarzania liczb.- Przykłady:
(c+)*
->(12+3)*4
=15*4
=60
(Powtórzenie używa kolejności operacji)(c+)/c
->(12+3)/45
=15/45
=0
(cc+c)/
->(123+45)/6
=168/6
=28
- Przykłady:
s
: Pomiń liczbę (usuwa liczbę z nieskończonego ciągu).s+
->2+3
=5
(s
pomija1
)csc
->124
(pierwszyc
concats1
i2
, żes
pomija3
i końcowec
concats12
do4
)+s+
->7
(Pierwszy+
dodaje1
i2
zrobić3
,s
przeskakuje3
, a ostateczna+
dodaje3
się4
zrobić7
)cs*(++)
->12*(4+5+6)
=12*15
=180
W powyższych przykładach użyto tylko skończonej liczby cyfr w nieskończonym ciągu. Liczba użytych cyfr jest równa number of operators, concats and skips + 1
.
Twoim zadaniem jest, jeśli otrzymasz ciąg kodu powtórzenia, wypisz wynik.
Przykładami danych wejściowych i wyjściowych są:
++ -> 6
- -> -1
(-)* -> -3
cscc -> 1245
(cc+c)/ -> 28
cc+c/ -> 130
cs*(++) -> 180
To jest kod golfowy, więc wygrywa najkrótszy kod w bajtach!
Okular:
- Masz gwarancję, że wynik nigdy nie przekroczy poziomu
2^31-1
. - Masz również gwarancję, że dane wejściowe będą składały się wyłącznie z symboli
+-*/cs()
. - Wyjdzie pusty program
1
.
s+
jest to 2+3
pierwszy przykład. I wciąż s
mnie wkurza. Zastanawiam się, jak się +s()+
rozwija. Jeśli tak jest, 1+(2)+4
to (
pojawia się wcześniej, 2
ale s
to pojawia się nawet zanim (
pozornie wciąż przeskakuje 3
, nie 2
. Jeśli jednak wynik jest taki, 1+(3)+4
to efekt s
zależy od tego, co nastąpi po nim (porównaj to z +s+
)
sc
jest 23
i s+
jest 1+3
? Czy s
pomija 1
teraz czy 2
? Wszystkie przykłady używają pierwszej operacji na operandach 1
i 2
... tak sc
powinno być 13
.
~
sami? Nie zostawiaj nas wisi.