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
.
code-golf
math
code-golf
string
number
arithmetic
code-golf
ascii-art
kolmogorov-complexity
code-golf
number-theory
code-golf
math
code-golf
stack-exchange-api
code-golf
ascii-art
code-golf
string
code-golf
number
integer
code-golf
number
arithmetic
code-golf
puzzle-solver
code-challenge
quine
palindrome
polyglot
clismique
źródło
źródło
~
sami? Nie zostawiaj nas wisi.s+
jest to2+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
ales
to pojawia się nawet zanim(
pozornie wciąż przeskakuje3
, nie2
. Jeśli jednak wynik jest taki,1+(3)+4
to efekts
zależy od tego, co nastąpi po nim (porównaj to z+s+
)sc
jest23
is+
jest1+3
? Czys
pomija1
teraz czy2
? Wszystkie przykłady używają pierwszej operacji na operandach1
i2
... taksc
powinno być13
.Odpowiedzi:
JavaScript (ES6), 110 bajtów
Bardzo prosty, ale podział na liczby całkowite dodaje 25 bajtów. Z jakiegoś powodu wyrażenie regularne w JS nie może pasować zarówno do początku łańcucha, jak i do pierwszego znaku, więc dodaje także kilka bajtów.
Jak to działa
)
), który nie jest bezpośrednio przed znakiem(
.c
cyfrę +s
na początku (1s2
->2
) i każdąs
+ cyfrę (3s4
->3
).1/2
->(1/2|0)
).źródło
ss+
wraca6
, kiedy ma zamiar powrócić7
(dwas
pomijają1
i2
, więc+
dodaje3
i4
)./^|,|$/g
będzie pasowało tylko raz na początku, ponieważ oba dopasowania będą miały ten sam indeks.$
nie ma tego samego problemu, ponieważ dopasowanie ma wyższy indeks niż jakiekolwiek inne możliwe dopasowanie.Partia, 332 bajty
Zachowanie
s
sprawia, że jest to bardzo niewygodne. (Możecs
powinien oceniać do13
i-s
do-2
?) Zmienne:s
ciąg wejściowy (jawnie wygaszony, ponieważ set / p nie zmienia zmiennej, jeśli niczego nie wprowadzisz)e
wyrażenie częściowe w normalnej arytmetyki liczb całkowitych (do której możemy przekazaćset/a
jako formęeval
)d
następna cyfra z nieskończonego ciągu cyfrr
prawa strona najnowszego operatora. Nie możemy połączyć tego natychmiast, ponieważ(
musi być na pierwszym miejscu, ale musimy go przechowywać, abys
nie zwiększał. Na szczęście ostatecznie sprawia, że obsługa jest)
nieco łatwiejsza.c
obecny charakter.źródło