Program musi wypisać najbardziej sparowaną literę. Na przykład, jeśli twój program otrzymał następujący ciąg:
"Sally's friend Bobby searched for seashells."
musi generować dane wyjściowe, L
ponieważ "ll"
występuje dwukrotnie, co jest częstsze niż w przypadku drugiej pary "bb"
.
Zasady:
- Jeśli więcej niż jedna litera ma 1. miejsce na wystąpienia, wypisz je wszystkie w kolejności alfabetycznej (np.
"Sally's friends Jimmy and Bobby rummaged for seashells."
Powinieneś podać zarównoL
ORAZM
[lub"LM"
jeśli chcesz], ponieważ oba występują częściej niż inne pary.) - Litery które trzykrotnie, czterokrotnie itp traktowane jako jedna para (np
"lll"
w"willless"
liczony jako tylko jedną paręL
). - Pary liter muszą być w jednym słowie (np.
"Sally's sociable friends Sammy and Bobby searched for fabulous seashells."
Powinny wypisywać,L
a nieS
dlatego, że pomimo"ss"
większej liczby wystąpień"ll"
są one oddzielone spacjami). - Policz tylko litery z alfabetu angielskiego
- Wielkość liter nie ma znaczenia (np.
"Ss"
Jest taka sama jak"SS"
lub"ss"
i wszystkie są liczone jako jedna paraS
.)
Możesz przeczytać swój wkład z dowolnego miejsca. Najkrótszy kod wygrywa.
'
itp.?['l']
?Odpowiedzi:
Pyth,
2625241615 bajtówWypróbuj online: demonstracja
Wyjaśnienie:
źródło
eC
->s
zapisuje jeden bajt.Bash + GNU coreutils, 133
Przypadki testowe:
źródło
11ss11aa
-> SA)11ss11aa
-> AS :)sort -r
być,sort -rn
jeśli masz 10 lub więcej sparowanych liter.CJam,
2927 bajtówDzięki @Optimizer za grę w golfa z 2 bajtów!
Wypróbuj online w interpretatorze CJam .
Jak to działa
źródło
z~\)-,>
powinien działać tak daleko, jak widzę.Pyth -
23222120 bajtówUżywa podstawienia
.M
wyrażenia regularnego, aby zamienić wszystkie dwa lub więcej alfabetów na wartość tymczasową, i używa aximal, aby uzyskać wszystkie, które mają najwyższe wystąpienie. Dzięki @Jakube za zwrócenie uwagi na nadmiarowość sortowania i oszczędzania bajtu.Pobiera dane wejściowe ze standardowego wejścia i wyjścia takie jak standardowe
['l', 'm']
.Wypróbuj online tutaj .
źródło
C 155
Coś innego, bez wyrażeń regularnych.
źródło
Python 2,
132143 bajtyPrzykładowy przebieg:
źródło
CJam, 37 bajtów
Wypróbuj online
Obawiam się, że bez obsługi wyrażeń regularnych ciężko będzie konkurować z Pyth. To najlepsze, co wymyśliłem przy pierwszym podaniu.
Wyjaśnienie:
źródło
Q (66)
Względnie czytelny do uruchomienia:
źródło
R, 105 bajtów
Odczytuje wiersz tekstu ze STDIN i drukuje rozdzieloną spacjami listę najczęściej sparowanych liter do STDOUT.
Niegolfowane + wyjaśnienie:
Przykłady:
Możesz spróbować online !
źródło
toupper
jeśli zignorujesz wielkość liter i użyjesz perla w swoimgregexpr
. np.cat(substr(names(b<-table(regmatches(s<-readline(),gregexpr("(\\w)\\1+",s,T,T))))[b==max(b)],1,1))
toupper
.Ruby, 60 lat
group_by
tworzy strukturę hash (słownik), w której klucze są wynikiem bloku, a wartościami są listy liter, które dają każdy klucz. W tym przypadku klucze są liczone od ponad 2 serii listu, bez rozróżniania wielkości liter.max
porównuje[key,value]
leksykograficznie każdą krotkę, więc znajduje tylko maksymalny klucz. Następnie[1]
zwraca część listy wartości krotki.źródło
Python 2,
185 159153Pobiera dane wejściowe jako cytowany ciąg.
źródło
C # 160 bajtów
Gdzie
s
jest dane wejściowe:źródło
rs, 146 bajtów
Spróbuj! Proszę! Zajęło mi wieczność, aby tworzyć przyciski nawet z polem wyjściowym na tej stronie ...
To było dość ... szalone. Logika tutaj jest trochę dziwna; Wyślę wyjaśnienie tylko, jeśli ktoś zapyta. (Oczywiście powiedziałem również, że w przypadku odpowiedzi INTERCAL, której wyjaśnienia zażądano ... nigdy nie wyjaśniłem ...;)
źródło
JavaScript
156153źródło
f[s]?f[s]+1:1
->-~f[s]
Count only letters from the English alphabet
f=x=>{x.toUpperCase(f={},a=0,o).replace(/([A-Z])\1+/g,(m,s)=>a<(m=f[s]=-~f[s])?(a=m,o=[s]):a>m?0:o.push(s));alert(o.sort().join'')}
(ostatnie 2 '' to naprawdę backtyki, & # 96Bash + textutils (grep, sed), 111 znaków
Bash + awk (zamiast sed), 97 znaków
aby to przetestować, najpierw przypisz s
źródło
R, 98 bajtów
Bardzo podobny do rozwiązania Alexa, ale używa zastępowania zamiast dopasowania, aby określić kolejne litery. Skanowanie służy do uzyskania danych wejściowych, a także do podziału wyniku podstawienia na spacje.
Kilka testów
źródło