Biorąc pod uwagę ciąg znaków zawierający tylko litery, wypisz długość najdłuższego ciągu kolejnych liter alfabetu, które zawiera słowo, w przypadku gdy kolejność nie ma znaczenia. Przykładowy algorytm może sortować słowo, usuwać duplikaty, a następnie wyświetlać długość najdłuższego przebiegu.
Przypadki testowe
watch -> 1
stars -> 3
antidisestablishmentarianism -> 3
backdoor -> 4
a -> 1
tutorials -> 4
Na przykład antidisestablishmentarianism
zawiera literyabdehilmnstr
. Najdłuższe przebiegi to lmn
i rst
oba o długości 3.
Notatki
Jako dane wejściowe możesz wziąć wszystkie małe, wszystkie wielkie lub małe litery, ale wielkość liter nie może zakodować informacji o tym słowie (tzn. Nie możesz wpisać n
wielkich liter, gdyn
jest długość najdłuższego ciągu).
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
rst
- ujednolicaj, sortuj i uzyskaj najdłuższy z rzędu ciąg. Czy możemy przyjmować dane wejściowe jako tablicę znaków?Odpowiedzi:
Galaretka ,
10 9 8 76 bajtówWypróbuj online!
9 używał metody Sok :
ṢQẆẇƇØaṪL
W jaki sposób?
źródło
R ,
4443 bajtówDziała na szeregu małych liter. Edycja: zmieniono z testowania wartości True na pomnożenie przez T / F bajtu.
Wypróbuj online!
Wykonuje kodowanie długości przebiegu dla liter, które są w dostarczonych znakach, a następnie zwraca maksymalną wartość dla prawd.
źródło
APL (Dyalog Classic) ,
109 bajtów-1 bajt dzięki H.PWiz
Wypróbuj online!
⍞
wprowadza ciąg⎕a
jest wielką literą alfabetu angielskiego⎕a∊⍞
wektor boolowski o długości 26 - które litery występują w ciągu?⊆⍨
tworzą wektory kolejnych 1s≢⍉↑
wmieszaj w macierz, transponuj i zwróć jej wysokość - skutecznie znajdź długość najdłuższego wektora 1sźródło
⌈/≢¨
->≢⍉↑
Perl 6 , 41 bajtów
Sprawdź to
Rozszerzony:
Biorąc pod uwagę
'stars'
,.ords.sort.squish Z-0..*
wróci(97,113,113,113)
źródło
Haskell , 35 bajtów
Wypróbuj online!
Haskell , 50 bajtów
Wypróbuj online!
źródło
JavaScript (Node.js) , 51 bajtów
Wielkość ciągu wejściowego nie ma znaczenia.
Wypróbuj online!
W jaki sposób?
Najpierw konwertujemy ciąg wejściowy na maskę bitów napotkanych liter za pomocą:
Przesunięcie bitowe jest przetwarzane za pomocą niejawnego modułu 32.
Przykład:
Następnie „zmniejszamy” przebiegi kolejnych 1 w masce bitowej, wielokrotnie ORAZ ustawiając ją za pomocą przesuniętej w lewo kopii samej siebie, aż wszystkie bity zostaną usunięte:
Liczba kolejnych liter w kolejności alfabetycznej jest liczbą iteracji powyższego procesu. Stąd funkcja rekurencyjna:
źródło
Pyth , 9 bajtów
Przyjmuje się, że wejście jest ciągiem małych liter. Wypróbuj on-line tutaj , lub sprawdzić wszystkie przypadki testowe od razu tutaj .
źródło
y
zamiast.:
.MATL , 10 bajtów
Dane wejściowe są pisane małymi literami.
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wykorzystuje to połączenie podejść @ Sundar (stary) i @ ngn .
Wyjaśnienie
Rozważ dane wejściowe
'tutorial'
jako przykład.źródło
Python 3 , 55 bajtów
Wypróbuj online!
Python 2 , 58 bajtów
Wypróbuj online!
Python 2 , 63 bajty
Wypróbuj online!
źródło
f=lambda s:s and-~f({*s}&{c+1for c in s})or 0
?05AB1E , 6 bajtów
Œ...é
æ
Wypróbuj online!
Również 6 bajtów
Zaoszczędzono 2 bajty, ponownie dzięki Adnanowi : użycie
ASå
zamiast tegoêÇ¥Θ
, eliminując w ten sposób potrzebę zwiększania maksimum na końcu. Zobacz historię zmian, aby porównać zachowanie obu metod.Wypróbuj online!
Jak to działa
Lubię takie wyzwania, które prowadzą do różnych podejść.
źródło
êæAÃ`g
aw drugim - w golfaASåγOZ
.ASå
podstęp.TSQL (Microsoft SQL Server), 206 bajtów
Do wprowadzenia użyj następującej
DECLARE
instrukcji przed kodem:Oczekuje się, że dane wejściowe są identyczne (górna lub dolna nie ma znaczenia, ale mieszane wielkości nie będą działać).
Nie golfowany:
Wyjaśnienie:
Dzieli ciąg na wiersz dla każdego znaku (dostosowany z /programming//a/27623321/1474939 ) w
CTE
cte.Następnie znajduje ciągi kolejnych liter, konwertując na kod ASCII w
Runs
cte.Na koniec wybiera największy przebieg i raportuje z powrotem w instrukcji select.
źródło
C (gcc) ,
5856 bajtówZaoszczędź 2 bajty dzięki @gastropner
Wykorzystuje takie samo podejście jak mój node.js odpowiedź . Wielkość liter wejściowych nie ma znaczenia.
Wypróbuj online!
Skomentował
źródło
1<<*s
otacza, czy jest to standardowe zachowanie?1<<32
powoduje0
wyświetlenie ostrzeżenia o rozmiarze typu danych.C (gcc) , 100 bajtów
Wypróbuj online!
Wyjaśnienie
Wypróbuj online!
źródło
MATL ,
1210 bajtówWypróbuj online!
Wyjaśnienie:
91:
- Utwórz listę cyfr od 1 do 91. 91 to znak „[”, który występuje po „Z”. Skutecznie tworzy to listę wszystkich znaków od „\ x1” do „[”. (Chcemy głównie tych z zakresu [„A'-1:„ Z ”+ 1]), ale reszta nie boli i wymaga mniejszej liczby bajtów.)w
- Implikowane dane wejściowe, wprowadź dane wejściowe na szczyt stosu (załóż „ĆWICZENIA”)X-
- Ustaw różnicę. Pozostawia to tylko znaki, których nie znaleziono w ciągu wejściowym, w ich oryginalnej kolejności („stabilna”). Stos:' !"#$%&'()*+,-./0123456789:;<=>?@BCDEFGHJKMNPQVWXYZ['
d
- Różnica między kolejnymi elementami na tej liście. Stos:[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 2 1 2 1 2 1 5 1 1 1 1 1]
X>
- Uzyskaj maksimum tych różnic, tj. Maksymalną liczbę kolejnych alfabetów brakujących w ustawionej różnicy.q
- Zmniejszenie, aby uzyskać rzeczywistą liczbę znakówStarsze:
12 bajtów
Wypróbuj online!
źródło
K (ngn / k) ,
1715 bajtówWypróbuj online!
-
czy istnieje tylko konwersja znaków na liczby (nie ma znaczenia, czy są one ujemne){
}\
stosuje funkcję aż do konwergencji, zachowując wyniki pośredniex+1
dodaj 1 do każdego numeru wx
^
„bez” - lista po lewej bez elementów, które występują na liście po prawej stroniex^x^x+1
oznaczax
przecięty zx+1
1_
upuść pierwszy element#
liczyćźródło
#1_{x^x^x+1}\-
?Retina 0.8.2 , 54 bajty
Wypróbuj online!Link zawiera przypadki testowe. Wyjaśnienie:
Sortuj litery w kolejności.
Deduplikuj litery.
Duplikuj każdą literę w osobnych wierszach.
Zmniejsz pierwszą z każdej pary.
Jeśli teraz pasuje do poprzedniej postaci, połącz je ponownie.
Policz długości wszystkich przebiegów.
Posortuj je w odwrotnej kolejności numerycznej.
Weź pierwszą (największą).
źródło
J, 16 bajtów
-7 bajtów dzięki FrownyFrog
Wypróbuj online!
wyjaśnienie
źródło
]
zamiast~.@/:~
Alfabet jest już posortowany, więc nie musisz sortować danych wejściowych i przechowywać tylko unikatowe elementy. TIO - 18 bajtówC (gcc) ,
9892 bajtówPodziękowania dla Jonathana Frecha za sugestie.
Tylko wielkie litery.
Wypróbuj online!
źródło
k;
na końcu. Niejawne zwracanie gcc jest efektem ubocznym przypisywania zmiennych, który najwyraźniej jest wykonywany jako ostatni krok w twojej pętli for.Japt
-h
, 9 bajtówCase insenstive, przyjmuje dane wejściowe jako ciąg znaków lub tablicę znaków.
Wypróbuj lub uruchom wiele testów (drugi wiersz służy jako zamiennik
-h
flagi, aby zamiast tego można było użyć flagi do przetwarzania wielu danych wejściowych)Wyjaśnienie
źródło
-1
?Perl 5, 68 bajtów
Wypróbuj online .
Nie golfowany:
źródło
C (gcc) ,
666563 bajtówZakłada, że dane wejściowe zawierają tylko małe litery. Najpierw zapętla się nad łańcuchem i ustawia bity w liczbie całkowitej, zgodnie z którymi widoczne są litery. Następnie zlicza najdłuższą serię 1 bitów w liczbie całkowitej.
Edycja:
a
jest globalna, więc przy pierwszym wywołaniu zostanie zainicjowana na 0. Druga pętla upewnia się, że jest resetowana do 0 przed powrotem. Dlatego możemy uniknąć resetowania go ręcznie.Wypróbuj online!
źródło
Perl 5, 62 + 2 (
-nF
flaga) = 64 bajtyWypróbuj online .
Perl 5, 68 bajtów
Wypróbuj online .
źródło
-pF
i-MList::Util+(max)
dostać się do 56: Wypróbuj online!-MList::Util=max
dodaje 16 bajtów do wyniku.-MList::Util+(max)
-pF
lub podobny. codegolf.meta.stackexchange.com/a/14339/9365SQLite 265
Nie golfowany:
źródło
Brachylog ,
141312 bajtówWypróbuj online!
Na tyle powolny, że nie kończy się na wprowadzeniu „antydestablishmentarianism” na TIO. Relatywnie dużo szybszy dla 1 bajtu:
13 bajtów
Wypróbuj online!
Używać
dos
zamiast⊇p
S jestd
eduplicated so
rteds
ubstring wprowadzania, a nie tylko niektóre permutacji pewnego podzbioru.źródło
Haskell , 87 bajtów
Wypróbuj online!
Oczekuje małych liter
Wyjaśnienie:
źródło
Python 2 , 95 bajtów
Wypróbuj online!
źródło
Pyth - 11 bajtów
Dane wejściowe muszą być ujęte w cudzysłów. Jeśli nie wolno:
Pyth - 12 bajtów
Wyjaśnienie:
źródło
Kotlin , 97 bajtów
Wypróbuj online!
źródło
Java 8, 77 bajtów
Odpowiedź C z Port of Arnauld . Wypróbuj online tutaj .
Nie golfowany:
źródło
> <> , 63 bajty
Odczytuje małe litery ze standardowego wejścia, wypisuje liczbę na standardowe wyjście.
Wypróbuj online!
źródło