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 1234567890powtarzaniem 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ędzy1i2)+*->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”1i łączy go z następną cyfrą,2tworząc12)+c->1+23=24ccc->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(spomija1)csc->124(pierwszycconcats1i2, żespomija3i końcowecconcats12do4)+s+->7(Pierwszy+dodaje1i2zrobić3,sprzeskakuje3, a ostateczna+dodaje3się4zrobić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+3pierwszy przykład. I wciąż smnie wkurza. Zastanawiam się, jak się +s()+rozwija. Jeśli tak jest, 1+(2)+4to (pojawia się wcześniej, 2ale sto pojawia się nawet zanim (pozornie wciąż przeskakuje 3, nie 2. Jeśli jednak wynik jest taki, 1+(3)+4to efekt szależy od tego, co nastąpi po nim (porównaj to z +s+)
scjest 23i s+jest 1+3? Czy spomija 1teraz czy 2? Wszystkie przykłady używają pierwszej operacji na operandach 1i 2... tak scpowinno być 13.
~sami? Nie zostawiaj nas wisi.