Wyzwanie
Biorąc pod uwagę ciąg wejściowy (lub tablicę) składający się z <
i >
, wypisz ciąg (tablicę lub ciąg) liczb całkowitych, taki, że:
- operatory są poprawne, gdy są stosowane w kolejności między kolejnymi liczbami na wyjściu
- wszystkie liczby całkowite są dodatnie (1 lub więcej)
- suma liczb całkowitych jest tak mała, jak jest to możliwe matematycznie
Dane wejściowe mogą się różnić, aby dopasować „większy niż” i „mniejszy niż” w wybranym języku.
Jako wyjście alternatywne wystarczy podać sumę liczb na wyjściu. Podaj wersję, którą rozwiązujesz w tytule odpowiedzi.
Obowiązują zwykłe wyłączenia i reguły, wygrywa najmniejsze bajty.
Możesz założyć, że ciąg wejściowy nigdy nie doprowadzi do przepełnienia liczb całkowitych w twoim języku, jeśli to pomoże.
Przykłady
>
daje,2 1
które sumy3
>>>
daje,4 3 2 1
które sumy10
><
daje,2 1 2
które sumy5
daje,
1
które sumy1
>>>>>>>>>
daje,10 9 8 7 6 5 4 3 2 1
które sumy55
>><<>><>>>
daje,3 2 1 2 3 2 1 4 3 2 1
które sumy24
><>><>><>
daje,2 1 3 2 1 3 2 1 2 1
które sumy18
<<<<>
daje,1 2 3 4 5 1
które sumy16
<<<<><<>
daje,1 2 3 4 5 1 2 3 1
które sumy22
>><<
daje,3 2 1 2 3
które sumy11
code-golf
sequence
mathematics
simonalexander2005
źródło
źródło
>
i<
?><>
Odpowiedzi:
Galaretka , 19 bajtów
Wypróbuj online!
Wartość każdej liczby wynosi max ( liczba
>
bezpośrednio po jej prawej stronie , liczba<
bezpośrednio po jej lewej stronie ) + 1 .Alternatywnie...
Wypróbuj online!
źródło
> <> ,
4038 bajtówWypróbuj online!
Odpowiedni język. Dla porównania
><>
sama wydajność daje 2,1,2,1.Jak to działa:
źródło
Python 3, 93 bajty
Wypróbuj online!
Nieszyfrowane:
źródło
Haskell , 119 bajtów
Wypróbuj online!
Wyjaśnienie
Chodzi o to, że mamy przebiegi
>
s lub<
s, z których każda mapuje zakresy rosnące i malejące. Dlatego używamygroup
do dzielenia łańcucha na grupy kolejnych znaków. Naszym zadaniem jest połączenie ich we właściwy sposób.Kiedy mamy
<>
, chcemy połączyć ze sobą dwie listy, biorąc na przykład większą wartość końcowąjest podzielony
zmapowane do zakresów
Następnie, kiedy zszywamy, upuszczamy,
3
ponieważ jest mniejszy (3
nie jest większy niż7
).Kiedy to robimy,
><
robimy coś przeciwnego, upuszczamy większą wartość.Rzeczywisty kod osiąga to poprzez utworzenie operatora
%
. Definicja%
jest dość złożona, ale w zasadzie odczytuje od lewej do prawej, śledząc, ile kolejnych znaków jest takich samych. Robi to po lewej stronie miał wartość operatora. Po dotarciu do miejsca, w którym zmieniają się postacie, wykonujemy szycie zgodnie z opisem.źródło
(2%)
?%
with”2
jako pierwszy argument.main
implementacji?Retina 0.8.2 , 36 bajtów
Wypróbuj online! Link zawiera przypadki testowe. Wyjaśnienie:
Wstaw
1
s przed, między i po<
s i>
s.Kilkakrotnie zwiększaj liczby całkowite, aż wszystkie porównania zostaną spełnione.
Zsumuj liczby całkowite i przelicz na dziesiętne.
źródło
Java 10,
198181 bajtówWypróbuj online.
Wyjaśnienie:
źródło
Haskell , 87 bajtów
Wypróbuj online!
Port mojej odpowiedzi na galaretkę.
źródło
Stax , 21 bajtów
Uruchom i debuguj
Działa poprzez kodowanie długości wejścia, a następnie łączenie wygenerowanych zakresów razem. Rozpakowane, niepolowane i skomentowane, wygląda to tak.
Uruchom ten
źródło
Perl 5
-p
, 53 bajtówWypróbuj online!
źródło
Czerwony , 185 bajtów
Po wyjaśnieniu użytkownika202729 ...
Wypróbuj online!
źródło