Biorąc pod uwagę listę dodatnich liczb całkowitych, napisz kod, który znajduje długość najdłuższej ciągłej podlisty, która rośnie (nie ściśle). Jest to najdłuższa podlista, tak że każdy element jest większy lub równy ostatniemu.
Na przykład, jeśli dane wejściowe to:
Najdłużej rosnąca lista podrzędna to , więc wypiszesz .
Twoja odpowiedź zostanie oceniona, biorąc jej źródło jako listę bajtów, a następnie znajdując długość najdłużej rosnącej podlisty tej listy. Niższy wynik to gol. Więzi są zrywane na korzyść programów o mniejszej liczbie bajtów ogólnych.
code-challenge
source-layout
Ad Hoc Garf Hunter
źródło
źródło
True
być substytutem,1
ale może być. Powinieneś być w stanie obsłużyć pustą listę (Wyjście to oczywiście 0).[] => 0
,[0] => 1
,[3,2,1] => 1
,[1,2,1,2] => 2
Odpowiedzi:
Pyth , wynik 2 (8 bajtów)
Wypróbuj tutaj!
Punkty kodowe
[108, 101, 102, 83, 73, 84, 46, 58]
. Inne krótsze rozwiązanie,leSI#.:
wyniki 3, ale jego punkty kodowe są[108, 101, 83, 73, 35, 46, 58]
, które są bardzo zbliżone do wyniku 1.Trochę przegrupowania może pomócNevermind, wbudowane podciągi.:
nie mogą być przestawione, więc najniższy wynik musi wynosić 2, jeśli program z niego korzysta.W jaki sposób?
źródło
Haskell , wynik 2,
6664616065 bajtówWypróbuj online! (weryfikuje się).
Nigdy nie myślałem, że mogę uzyskać wynik 2 z Haskellem, a jednak oto jestem!
Funkcja
g
oblicza rekurencyjnie długości wszystkich rosnących podciągów.foldr1 max.g
przyjmuje maksimum tych długości (foldr1 max
jest równoważnemaximum
, ale z niższym wynikiem).źródło
1+a : b
nie są konieczne, więc jest to 62 bajty.1
pustą listę, do której powinien zwrócić0
JavaScript (Node.js) ,
wynik 3,wynik 2,5346 bajtów5150 bajtów-7 bajtów dzięki @Arnauld
+5+4 spacje w zamian za wynik -1Wypróbuj online!
Zakłada niepuste dane wejściowe. 61 bajtów, jeśli należy obsłużyć pustą listę. Jeszcze 2 punkty.
Wypróbuj online!
... lub 58, jeśli zwrot
false
jest dozwolony. Jeszcze 2 punkty.źródło
Łuska , 5 bajtów , wynik = 2
Wypróbuj online!
Jest mało prawdopodobne, aby Husk uzyskał wynik niższy niż 2, ponieważ
ġ
1 ma naprawdę wysoki punkt kodowy i musi być coś przed nim, aby uzyskać maksimum i długość. Próba może być podjęta przy próbie użycia wielu funkcji, ale\n
byłoby to przed dowolnymi funkcjami pomocniczymi, które mają naprawdę niski punkt kodowy, więc cokolwiek po tym stworzyłoby rosnącą sekwencję bajtów o długości co najmniej 2.1: Wydaje się, że najlepszym sposobem użycia operatorów porównania byłoby śledzenie różnych funkcji podziału, takich jak
↕
(span
).Wyjaśnienie
źródło
Siatkówka 0.8.2 , 40 bajtów, wynik 3
Wypróbuj online! Link zawiera się jako kody bajtów jako dane wejściowe. Wyjaśnienie:
Konwertuj na unary.
Podziel na malejące pary.
Usuń cyfry.
Sortuj przecinki w odwrotnej kolejności. (Normalnie bym to napisał,
O^
ale nie mogę tego zrobić tutaj z oczywistych powodów.)Policz najdłuższy bieg przecinków i dodaj jeden, aby dołączyć końcową liczbę.
źródło
Japt
-h
, 6 bajtów, wynik 2Nie sądzę, że możliwy jest wynik 1. Powinien również działać z łańcuchami znaków i tablic znaków.
Spróbuj - dołączony przypadek testowy jest kodem rozwiązania.
Wyjaśnienie
źródło
MATL , wynik 2, 13 bajtów
Dane wejściowe mogą być:
MATL używa kodowania ASCII. Punktami kodowymi powyższego kodu są
Wypróbuj online!
Wyjaśnienie
źródło
Pascal (FPC) , wynik 2
111 bajtów
Wypróbuj online!
Zakłada niepuste dane wejściowe. Liczby są pobierane ze standardowego wejścia oddzielone spacjami.
źródło
Galaretka , 8 bajtów , wynik 2
Prawdopodobnie istnieje jakoś 1 wynik ...
Wypróbuj online!
Kod źródłowy jako lista wartości bajtów:
W jaki sposób?
źródło
Perl 6 , wynik 2, 46 bajtów
Wypróbuj online!
Obsługuje pustą listę. Oryginalny kod to:
Tak więc tylko 5 dodatkowych bajtów, aby zmniejszyć wynik do 2.
Edycja: Ach, wymyśliłem, jak usunąć zadanie , ale potem nie mogę uzyskać tego wyniku poniżej 3 z powodu
)]]
...Wyjaśnienie:
źródło
[[&(*+*)]]
działa jak[+]
? Niesamowite ...Z
iX
. Wypróbuj online!{max 0,|.[[X..] ^$_ xx 2].map({+$_ if [<=] $_})}
05AB1E , wynik 3 (9 bajtów )
Najprawdopodobniej może to być wynik 2.
Punkty kodowe bajtów programu:
[140,1,90,100,80,125,233,9,103]
(dwie listy podrzędne o długości 3:[1,90,100]
i[80,125,233]
)Wypróbuj online.
Wyjaśnienie:
źródło
Java (JDK) , wynik 3, 94 bajty
Wypróbuj online!
Port mojej (z sugestiami Arnaulda) odpowiedzi JS.
etu
inreturn
ihil
inwhile
uniemożliwiają golfa zdobycie 2.for
nie można tutaj użyć, ponieważ:;for
rośniefor
nie można używać na początku korpusu lambda (ograniczenia zakresu). Możliwe jest owijanie go,{}
ale najwyraźniej użyciewhile
bajtów zapisywania.źródło
\u
w niektórych miejscach, ale potem musisz00
PowerShell, wynik 3, 44 bajtów
Skrypt testowy:
Wynik:
Wyjaśnienie:
contiguous sub-list that is increasing (not strictly)
. Następnie skrypt sortuje wydłużenia i bierze ostatnie (maksimum)(...|sort)[-1]
.Powershell 6, wynik 3, 43 bajty
Jak powyżej. Jedna różnica:
sort -b 1
jest skrótemsort -Bottom 1
i oznacza 1 element z końca posortowanej tablicy . Więc nie potrzebujemy indeksu[-1]
.źródło
Stax , wynik 3 (15 bajtów)
Uruchom i debuguj
źródło
Python 2 ,
wynik 5, 87 bajtówwynik 2,1019392101 bajtówWypróbuj online!
Ups! Myślałem, że to był kod-golf pierwszy raz ...
źródło
m=1,o=[1]
części nie kończy się na oszczędzeniu bajtów, gdy obniżymy wynikDyalog APL , wynik 2, 20 bajtów
Wypróbuj online!
źródło
Wolfram Language (Mathematica) , wynik 3, 45 bajtów
Wypróbuj online!
SequenceCases
iOrderedQ
same dają wynik 3, więc wyniku nie można poprawić bez znaczącej zmiany podejścia.źródło
Max[Length/@SequenceCases[#,_?OrderedQ]]&
, ale_?Or
jest to rosnąca podsekwencja długości 4. (Jak jest_?AnyCamelCaseCommand
.)Java (JDK), 126 bajtów, wynik 6
Grał w golfa
Nie golfił
Wejście
źródło
byte
byćint
, ponieważbyte
byłoby ograniczone do 8 bitów?Kotlin, wynik 6, 119 bajtów
Wypróbuj online
Wyjaśnienie
źródło
Kotlin, wynik 4, 67 bajtów
Główną ideą jest: Przekształć każdą liczbę całkowitą na długość ciągłych podsekwencji, która rośnie (nie ściśle). Zwróć maksimum.
a.map{...}
- dla każdej liczby całkowitej w tablicy wykonajif(it<p){i=0}
- jeśli bieżąca liczba całkowita jest mniejsza niż poprzednia liczba całkowita, zresetuj licznikp=it
- zapisz bieżącą liczbę całkowitą w poprzednim(++i)
- licznik przyrostów i zwracana wartość wyrażenia.max()
- zdobądź maximun całej długościźródło
Rubinowy , 64 bajty
Wypróbuj online!
źródło
6
. Ponadto twój kod nie obsługuje pustej listy (gdzie wynik powinien być0
)