Jakie jest najczęstsze słowo?
Biorąc pod uwagę zdanie, twój program musi przejść przez to, licząc częstotliwości każdego słowa, a następnie wypisać najczęściej używane słowo. Ponieważ zdanie nie ma stałej długości, a zatem może być bardzo długie, kod musi być możliwie jak najkrótszy.
Zasady / wymagania
- Każde zgłoszenie powinno być pełnym programem lub funkcją. Jeśli jest to funkcja, musi być uruchomiona, wystarczy dodać wywołanie funkcji na dole programu. Wszystko inne (np. Nagłówki w C) musi zostać uwzględnione.
- Musi być dostępny bezpłatny tłumacz / kompilator dla twojego języka.
- Jeśli to możliwe, podaj link do strony, na której można przetestować Twój program.
- Twój program nie może nic pisać
STDERR
.
- Twój program powinien pobierać dane wejściowe z
STDIN
(lub najbliższej alternatywy w twoim języku).
- Standardowe luki są zabronione.
- Twój program musi być wielkości liter (
tHe
, The
i the
przyczyniają się do zliczania the
).
- Jeśli nie ma najczęstszego słowa (patrz przypadek testowy nr 3), twój program nie powinien nic wypisywać.
Definicja „słowa”:
Otrzymujesz listę słów, dzieląc tekst wejściowy na spacje. Dane wejściowe nigdy nie będą zawierać innego rodzaju białych znaków niż zwykłe spacje (w szczególności żadnych znaków nowej linii). Jednak ostatnie słowa powinny zawierać tylko znaki alfanumeryczne (az, AZ, 0-9), łączniki (-) i apostrofy ('). Możesz to zrobić, usuwając wszystkie inne znaki lub zastępując je spacją przed wykonaniem podziału słowa. Aby zachować zgodność z poprzednimi wersjami reguł, nie trzeba dołączać apostrofów.
Przypadki testowe
The man walked down the road.
==> the
-----
Slowly, he ate the pie, savoring each delicious bite. He felt like he was truly happy.
==> he
-----
This sentence has no most frequent word.
==>
-----
"That's... that's... that is just terrible!" he said.
==> that's / thats
-----
The old-fashioned man ate an old-fashioned cake.
==> old-fashioned
-----
IPv6 looks great, much better than IPv4, except for the fact that IPv6 has longer addresses.
==> IPv6
-----
This sentence with words has at most two equal most frequent words.
==>
Uwaga: Trzecie i siódme przypadki testowe nie mają danych wyjściowych, możesz wybrać jeden z czwartych.
Punktacja
Programy są oceniane według bajtów. Typowy zestaw znaków to UTF-8, jeśli używasz innego, podaj.
Po zakończeniu wyzwania wygrywa program z najmniejszą liczbą bajtów (nazywa się to golfem kodowym ).
Zgłoszenia
Aby upewnić się, że Twoja odpowiedź się pojawi, zacznij od nagłówka, korzystając z następującego szablonu Markdown:
# Language Name, N bytes
gdzie N
jest rozmiar twojego zgłoszenia. Jeśli poprawić swój wynik, to może zachować stare porachunki w nagłówku, uderzając je przez. Na przykład:
# Ruby, <s>104</s> <s>101</s> 96 bytes
Jeśli chcesz umieścić w nagłówku wiele liczb (np. Ponieważ twój wynik jest sumą dwóch plików lub chcesz osobno wymienić kary za flagi tłumacza), upewnij się, że rzeczywisty wynik jest ostatnią liczbą w nagłówku:
# Perl, 43 + 2 (-p flag) = 45 bytes
Możesz także ustawić nazwę języka jako link, który pojawi się we fragmencie tabeli wyników:
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
Tabela liderów
Oto fragment kodu, który pozwala wygenerować zarówno zwykłą tabelę wyników, jak i przegląd zwycięzców według języka.
/* Configuration */
var QUESTION_ID = 79576; // Obtain this from the url
// It will be like https://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 53406; // This should be the user ID of the challenge author.
/* App */
var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page;
function answersUrl(index) {
return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER;
}
function commentUrl(index, answers) {
return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER;
}
function getAnswers() {
jQuery.ajax({
url: answersUrl(answer_page++),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
answers.push.apply(answers, data.items);
answers_hash = [];
answer_ids = [];
data.items.forEach(function(a) {
a.comments = [];
var id = +a.share_link.match(/\d+/);
answer_ids.push(id);
answers_hash[id] = a;
});
if (!data.has_more) more_answers = false;
comment_page = 1;
getComments();
}
});
}
function getComments() {
jQuery.ajax({
url: commentUrl(comment_page++, answer_ids),
method: "get",
dataType: "jsonp",
crossDomain: true,
success: function (data) {
data.items.forEach(function(c) {
if (c.owner.user_id === OVERRIDE_USER)
answers_hash[c.post_id].comments.push(c);
});
if (data.has_more) getComments();
else if (more_answers) getAnswers();
else process();
}
});
}
getAnswers();
var SCORE_REG = /<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;
var OVERRIDE_REG = /^Override\s*header:\s*/i;
function getAuthorName(a) {
return a.owner.display_name;
}
function process() {
var valid = [];
answers.forEach(function(a) {
var body = a.body;
a.comments.forEach(function(c) {
if(OVERRIDE_REG.test(c.body))
body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>';
});
var match = body.match(SCORE_REG);
if (match)
valid.push({
user: getAuthorName(a),
size: +match[2],
language: match[1],
link: a.share_link,
});
});
valid.sort(function (a, b) {
var aB = a.size,
bB = b.size;
return aB - bB
});
var languages = {};
var place = 1;
var lastSize = null;
var lastPlace = 1;
valid.forEach(function (a) {
if (a.size != lastSize)
lastPlace = place;
lastSize = a.size;
++place;
var answer = jQuery("#answer-template").html();
answer = answer.replace("{{PLACE}}", lastPlace + ".")
.replace("{{NAME}}", a.user)
.replace("{{LANGUAGE}}", a.language)
.replace("{{SIZE}}", a.size)
.replace("{{LINK}}", a.link);
answer = jQuery(answer);
jQuery("#answers").append(answer);
var lang = a.language;
if (/<a/.test(lang)) lang = jQuery(lang).text();
languages[lang] = languages[lang] || {lang: a.language, user: a.user, size: a.size, link: a.link};
});
var langs = [];
for (var lang in languages)
if (languages.hasOwnProperty(lang))
langs.push(languages[lang]);
langs.sort(function (a, b) {
if (a.lang > b.lang) return 1;
if (a.lang < b.lang) return -1;
return 0;
});
for (var i = 0; i < langs.length; ++i)
{
var language = jQuery("#language-template").html();
var lang = langs[i];
language = language.replace("{{LANGUAGE}}", lang.lang)
.replace("{{NAME}}", lang.user)
.replace("{{SIZE}}", lang.size)
.replace("{{LINK}}", lang.link);
language = jQuery(language);
jQuery("#languages").append(language);
}
}
body { text-align: left !important}
#answer-list {
padding: 10px;
width: 290px;
float: left;
}
#language-list {
padding: 10px;
width: 290px;
float: left;
}
table thead {
font-weight: bold;
}
table td {
padding: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b">
<div id="answer-list">
<h2>Leaderboard</h2>
<table class="answer-list">
<thead>
<tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr>
</thead>
<tbody id="answers">
</tbody>
</table>
</div>
<div id="language-list">
<h2>Winners by Language</h2>
<table class="language-list">
<thead>
<tr><td>Language</td><td>User</td><td>Score</td></tr>
</thead>
<tbody id="languages">
</tbody>
</table>
</div>
<table style="display: none">
<tbody id="answer-template">
<tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
</tbody>
</table>
<table style="display: none">
<tbody id="language-template">
<tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr>
</tbody>
</table>
don't d'ont dont a a
? Czy by todont
bylodont
. Jeśli nie,a
. ale większość zgłoszeń tak, i takdont
jest poprawna odpowiedź.ipv6
prawidłowe dane wyjściowe dotyczą ostatniego przypadku testowego?Odpowiedzi:
Pyke,
2625 bajtówWypróbuj tutaj!
Lub
2322 bajty (niekonkurencyjne, dodaj węzeł, w którym zabija stos, jeśli ma wartość false)Wypróbuj tutaj!
Lub z interpunkcją, 23 bajty (myślę, że to konkuruje? Zatwierdzenie było przed edycją)
Wypróbuj tutaj!
Lub 12 bajtów (zdecydowanie niekonkurujących)
Wypróbuj tutaj!
źródło
-
i'
(łącznik i apostrof).Galaretka , 25 bajtów
Wypróbuj online! lub zweryfikuj wszystkie przypadki testowe .
źródło
Pyth -
2330 bajtówMusi istnieć lepszy sposób na dołączanie cyfr i łączników, ale chcę to teraz naprawić.
Pakiet testowy .
źródło
Oktawa,
11594 bajtówRozliczenie sprawy bez najczęstszych słów za pomocą
try
. W tym przypadku nic nie wyprowadza i „robi przerwę”, aż złapiesz wyjątek.Zaoszczędzono 21 (!) Bajtów dzięki sugestii Luisa Mendo (użycie trzeciego wyjścia z,
mode
aby uzyskać najczęstsze słowo).Zasady zmieniły się nieco od czasu opublikowania mojej oryginalnej odpowiedzi. Zajmę się regexem później.
źródło
mode
nac
może? Trzecie wyjście daje wszystkie powiązane wartości, jeśli dobrze pamiętam['\w\d]
to, że musicie zachować apostrofy i cyfry. Chyba że w ASCII występują między wielkimi i małymi literami, w takim przypadku zignoruj mnie, ponieważ nie mam pod ręką tabeli.[~, ~, out] = mode([1 1 2 2 1 2 3 4 5 5])
dajeout = {1 2}
Perl 6, 80 bajtów
Podzielmy odpowiedź na dwie części ...
given
jest instrukcją sterującą (jakif
lubfor
). W Perlu 6 są dozwolone jako postfiksy. (a if 1
lub jak tutajfoo given 3
).given
umieszcza swój temat (prawa strona) w specjalnej zmiennej$_
dla swojej lewej strony.Sam „temat” smallcases (
lc
), dzieli się według word (words
), umieszcza wartości w torbie (ustawionej z liczbą wystąpień), a następnie sortuje według wartości (DESC). Ponieważsort
tylko wie, jak działać na listach TheBag
przekształca sięList
zPair
s tutaj.prosty warunkowy (
?? !!
są używane w Perlu 6 zamiast? :
).Sprawdza tylko, czy lista zawiera więcej niż jeden element.
Dostęp do
$_
można skrócić ... Nie podając zmiennej..a
jest dokładnie jak$_.a
. Jest to zatem skuteczne „czy oba górne elementy mają taką samą liczbę wystąpień” - Jeśli tak, to wypisujemy „” (pusty ciąg znaków).W przeciwnym razie możemy wydrukować klucz górny element'S (Hrabia)
.[0].key
.źródło
value??!!
(Wiem, że to potrójny operator, to po prostu zabawne)05AB1E , 30 bajtów
Kod:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online! .
źródło
I
polecenia wielokrotnie , 05AB1E zajmie tylko tyle, ile będzie potrzebne.JavaScript (ES6), 155 bajtów
Na podstawie odpowiedzi Python na @ Blue.
źródło
Python 3.5,
142137134112117110127 bajtów:( +17 bajtów, ponieważ najwyraźniej nawet jeśli słowa są częstsze niż reszta, ale mają tę samą częstotliwość, nic nie powinno być zwracane ).
Powinien teraz spełniać wszystkie warunki. To założenie zakłada, że wprowadzono co najmniej 1 słowo.
Wypróbuj online! (Ideone)
Ponadto, jeśli chcesz, oto inna wersja mojej funkcji pozbawiona jakichkolwiek wyrażeń regularnych kosztem około 43 bajtów, choć ta i tak nie jest konkurencyjna, więc nie ma to tak naprawdę znaczenia. Po prostu dodam to tutaj, do cholery:
Wypróbuj nową wersję online! (Ideone)
źródło
That's
jest skurczem, podczasthat is
gdythats
tak naprawdę nie jest słowem.Ruby,
9492102 bajtówMuszę iść szybko (odpowiedź FGITW). Zwraca słowo wielkimi literami lub
nil
jeśli nie ma najczęstszego słowa.Teraz zaktualizowane do nowych specyfikacji, tak myślę. Jednak udało mi się trochę pograć w golfa, więc liczba bajtów jest taka sama!
źródło
Gotta go fast
?Pyth, 32 bajty
Zestaw testowy.
źródło
JavaScript (ES6), 99 bajtów
źródło
Sqlserver 2008, 250 bajtów
Wypróbuj online!
Sqlserver 2016, 174 bajty
Nie można obsłużyć danych takich jak ten przykład (liczenie równa się 3 słowom):
źródło
GROUP BY, LEFT JOIN, or PARTITION BY
każdym razie SQL Server ma wbudowaną funkcję SPLIT. Niegolfowane demo może być tak krótkie, jak to możliwe.PostgreSQL,
246, 245 bajtówWydajność:
Wprowadź, jeśli ktoś jest zainteresowany:
Normalnie skorzystałbym
MODE() WITHIN GROUP(...)
i będzie znacznie krótszy, ale będzie to naruszać:EDYTOWAĆ:
Obsługa
'
:SqlFiddleDemo
Wydajność:
źródło
R, 115 bajtów
Jest to funkcja, która akceptuje ciąg znaków i zwraca ciąg znaków, jeśli pojedyncze słowo pojawia się częściej niż inne i
NULL
inaczej. Aby go wywołać, przypisz go do zmiennej.Nie golfowany:
źródło
Siatkówka, 97 bajtów
Zasady ciągle się zmieniają ...
Wypróbuj online!
Zestaw testowy.
źródło
a
się, że będzie to najczęstsze słowo)Python, 132 bajty
Powyższy kod zakłada, że wejście zawiera co najmniej dwa słowa.
źródło
\w
zawiera podkreślenia.PHP, 223 bajty
źródło
Python 2, 218 bajtów
Zakłada więcej niż 2 słowa. Pozbycie się interpunkcji zniszczyło mnie ...
źródło
',-
itp.?sorted
do krotki zamiast ręcznie indeksować tablicę?Matlab (225)
.
Do uruchomienia tego niezbędny jest Przybornik.
Jak to działa, jeden z najpiękniejszych przywilejów wyrażenia regularnego zastępuje w matlabie, to wykonuje tokeny w terenie, wywołując funkcje środowiska zewnętrznego sparametryzowane przez tokeny wychwycone w środowisku wewnętrznym, więc każda sekwencja
"Word_A Word_B .."
jest zastępowana liczbami całkowitymi,"A0 A1 A2 B0 B1 B2 ..."
gdzie pierwsza liczba całkowita jest sygnatura numerica ascii słowa, druga to indeks początkowy, trzecia to indeks końcowy, te dwie ostatnie liczby całkowite nie powtarzają się w całej sekwencji, więc skorzystałem z tej możliwości, aby przetransponować ją do tablicy, a następnie przełączyć ją na tryb wynik w tej tablicy, więc indeksy początkowe / końcowe będą w konsekwencji następować.Edycja: po zmianie niektórych szczegółów program jest nazywany funkcją przez parametr ciągu.
20 bajtów zaoszczędzonych dzięki @StewieGriffin, 30 bajtów dodało wyrzuty do wspólnie uzgodnionych luk.
źródło
05AB1E ,
222120 bajtówWyjaśnienie:
Uwaga: Jeśli nie masz nic
?
przeciwko kończeniu znaków nowej linii w wyjściu, gdy nie powinieneś nic wypisywać, usuń koniec, aby zapisać bajt.Uwaga 2: Program nie będzie działał z jednym słowem, ale wątpię, by to był problem. Jeśli chcesz, aby to naprawić, wymienić
#
sięð¡
za dodatkową bajt.05AB1E używa CP-1252 jako zestawu znaków, a nie UTF-8.
Wypróbuj online!
źródło
Perl,
60565554 bajtówObejmuje +3 za
-p
Jeśli słowo nie może być tylko cyfrą, możesz także upuścić wartość
a
53.źródło
-anE
nie jest liczony? Robi to z drugą odpowiedzią (+2 bajty na-p
flagę) ...E
nie liczą się. Druga odpowiedź zwykle wymaga tylko +1 bajtów-p
, ale jego rozwiązanie ma,'
więc nie można jej traktować jako rozszerzenia-e
lub-E
. Powinien więc liczyć +3 (nie +2), ponieważ powinien liczyć spację i łącznik (ale każda dodatkowa opcja to tylko +1).[\pL\d-]
wygląda na to, że można go zmniejszyć[\w-]
(chyba, że zależy nam na podkreśleniach), ale każda wersja zgłosi sięthat
zamiastthat's
lubthats
do testu 4. W przeciwnym razie musisz dodać 4 bajty, aby wstawić\x27
do tej klasy znaków (chyba że masz lepszy sposób dodawania apostrof).PowerShell (v4), 117 bajtów
Pierwsza część jest dość łatwa:
$input
to ~ = standardoweGroup
według częstotliwości (~ = kolekcja Pythona. Licznik),Sort
aby umieścić najczęstsze słowa na końcu.Obsługa, jeśli nie ma najczęstszego słowa:
Użyj golfa bool-as-array-index fake-ternary-operator golf
(0,1)[truthyvalue]
, zagnieżdżony, aby wybrać „”, $ z lub $ y jako wynik, a następnie weź nazwę .Name.źródło
Lua,
232199175 bajtówźródło
if not w[x]then w[x]=0 end w[x]=w[x]+1 end
->w[x]=(w[x]or0)+1
if m==v then o=''end
->o=m==v and '' or o
Perl 5,
969284 + 2 (-p
flaga) = 86 bajtówZa pomocą:
źródło
-p
flaga powinna powołać się na karę 3 bajtów. Reguły są z grubsza: każda flaga wiersza polecenia ma +1 bajt, ponieważ tyle dodatkowych bajtów potrzebujesz, aby rozszerzyć-e'code'
linię poleceń w wolnym stylu. Zwykle-p
jest to tylko +1 bajt. Ale tutaj masz kod,'
więc nie można go uruchomić po prostu z wiersza poleceń bez ucieczki. Więc nie łącząc z-e
a-
a przestrzeń przedp
są ekstra i musi być liczony zbyt-p
flaga), jeśli wywołujesz go w wierszu poleceń jakoperl -pe'…'
(udostępnionym przez usunięcie tego,'
co zaznaczono w pierwszych komentarzach)Python, 158 bajtów
Pobiera swój wkład w następujący sposób:
Czy należy spełnić wszystkie wymagania, chociaż nie powiedzie się to przy pustych ciągach, czy należy je sprawdzić? Przepraszam za opóźnienie.
Porady / opinie / porady czarnej magii dotyczące oszczędzania bajtów są zawsze mile widziane
źródło
That
jako wystąpień tego słowa,that
ponieważ pierwsze zaczyna sięT
od dużej litery, a drugie zaczyna się od małejt
. Ponadto NIE usuwa to wszystkich innych znaków interpunkcyjnych oprócz łączników (-
) i, opcjonalnie, apostrofów ('
), w wyniku czego NIE zadziałałoby to w przypadku czwartego przypadku testowego podanego w pytaniu.This sentence has no most frequent word.
) jako przykładu, twoja funkcja generuje wynik[('This', 1)]
, kiedy zamiast tego nie wypisuje nic. Mógłbym mówić o kolejnych problemach, więc polecam naprawienie ich jak najszybciej.\w
zawiera podkreślenia.Tcl 8.6, 196 bajtów
(Niestety, nie mogę wymyślić, jak to zrobić, aby był mniejszy niż to ...)
Wyjaśnienie
Używa kilku niejasnych idiomów Tcl do robienia rzeczy.
[join [read stdin] " "]
- łańcuch wejściowy → lista słów oddzielonych spacjamilmap ...
- iterować po każdym elemencie tej listy. (Krótszy niżforeach
i faktycznie identyczny, ponieważ wynik jest odrzucany).[regsub ... [string tolower ...]]
- Przekształć ciąg na małe litery i usuń wszystkie znaki oprócz znaków słów i łącznika.[dict incr d ...]
- Utwórz / zmodyfikuj słownik / słowo → licznik histogramu.set y ...
- Posortuj wartości słownika, wybierz największą i zwróć wszystkie odpowiadające jej pary (klucz, wartość).if...
- Muszą być dokładnie dwa elementy: jedna para (klucz, wartość), w przeciwnym razie nie ma nic do wydrukowania.puts...
- Wydrukuj klucz z pary klucz-wartość, jeśli istnieje. (Żadne słowo nie ma spacji.)Możesz grać z nim za pomocą CodeChef .
źródło
Rexx,
109128122 bajtówDość drukowane ...
źródło
bash,
153146131154149137bajtówOperacja:
deklaruj tablicę asocjacyjną F liczb całkowitych (deklaruj -iA F)
f jest funkcją, która przy danym parametrze słownym $ 1 zwiększa liczbę częstotliwości dla tego słowa (T = ++ F [$ 1]) i porównuje do maksymalnej liczby dotychczas (M).
Jeśli jest równy, mamy remis, więc nie będziemy uważać tego słowa za najczęściej (I =)
Jeśli do tej pory było więcej niż maksymalna liczba (M), ustaw jak dotąd maksymalną liczbę na liczbę tego słowa (M = $ T) i zapamiętaj to słowo (I = 1 $)
Funkcja zakończenia f
Czytaj wiersz (czytaj L) Twórz małe litery (L = $ {L ,,}) Usuń dowolny znak oprócz az, 0-9, myślnik (-) i spacji (L = $ {L // [^ - a-z0- 9]}) Utwórz sekwencję instrukcji bash, która wywołuje f dla każdego słowa (printf -vA "f% s;" $ L). Jest to zapisywane w zmiennej A. eval A i wydrukuj wynik (eval $ a; echo $ I)
Wydajność:
Błąd: NAPRAWIONO Mam błąd, który nie jest ujawniany w tych przypadkach testowych. Jeśli wejście jest
wtedy mój kod nie powinien nic wyświetlać.
Mam poprawkę, ale wydaje mi się, że trafiłem w błąd bash ... Otrzymuję bardzo dziwne zachowanie, jeśli M nie jest deklarowane jako liczba całkowita: ++ F [1 $] == M (po kilku powtórzonych słowach) zwiększa oba F [1 $ ] oraz m!!- mój błąd.źródło
Python 3,
7698100 bajtówWypróbuj online
Zwraca najczęściej używane słowo jako małe litery. Nie obejmuje apostrofów, ponieważ „apostrofy nie muszą być uwzględnione”.
statistics.mode
wymaga Python 3.4Niestety, żadne wyjście do nie
stderr
jest dozwolone, bo byłoby znacznie krótsze.źródło
STDERR
, chyba że ten program nie generuje żadnych błędów?i- test i-
R, 96 bajtów
19 bajtów krótszych niż istniejąca odpowiedź R , z nieco innym podejściem.
Odczytuje ze standardowego wejścia, więc dane wejściowe są automatycznie oddzielane spacjami. Konwertujemy na małe litery i używamy
gsub
do usunięcia wszystkich znaków nie alfanumerycznych (plus-
i'
). Liczymy wystąpienia każdego słowa za pomocątable
i zapisujemy wynik wt
. Następnie sprawdzamy, czy jest więcej niż 1 maksimum wt
(sprawdzając, czy istnieje więcej niż jeden element, który jest równymax(t)
. Jeśli tak, zwracamy pusty ciąg''
. Jeśli nie, zwracamy słowo odpowiadające maksimum wt
.źródło