Powinieneś napisać program lub funkcję, która określa język danego słowa.
Zadanie polega na rozpoznaniu 5000 najczęściej używanych słów w 4 językach:
- język angielski
- Niemiecki
- Włoski
- język węgierski
Listy słów można znaleźć w tym repozytorium GitHub.
Możesz popełniać błędy w 40% podanych przypadków testowych . Oznacza to, że można błędnie sklasyfikować 8000 z 20000 wejść.
Detale
- Listy zawierają tylko słowa z małymi literami,
a-z
więc np.won't
Imöchte
nie są uwzględniane. - Kilka słów pojawia się w wielu językach, co oznacza, że Twój kod nie zawsze może poprawnie odgadnąć oczekiwane wyjście.
- Dla wygody możesz pobrać wszystkie przypadki testowe jako jedną listę . W każdym wierszu liczba wskazuje język słowa. (
1
w języku angielskim,2
niemieckim,3
włoskim i4
węgierskim). - Standardowe luki są niedozwolone.
- Korzystanie z list słów jest zabronione dla naszych podobnych danych dostarczanych przez Twój język programowania.
Wejście
- Ciąg zawierający tylko małe litery angielskie (az).
- Końcowy znak nowej linii jest opcjonalny.
Wynik
- Możesz kategoryzować słowa, zapewniając odrębne i spójne (zawsze takie same) wyniki dla każdego języka. (Np. W
1
języku angielskim,2
niemieckim,3
włoskim i4
węgierskim).
To jest golf golfowy, więc wygrywa najkrótszy program lub funkcja.
Powiązany kod golfowy: czy to w ogóle słowo?
Listy słów zostały zaczerpnięte z wiktionary.org i 101languages.net.
code-golf
natural-language
word
classification
randomra
źródło
źródło
all_languages
Plik zawiera dziesiątki aktywowanych słów (Mr
,Gutenberg
etc.) oraz brak słów „” (pusty ciąg znaków) i „]] | -”. Zakładam, że jest w porządku, aby małe i pierwsze skasować małymi literami?Odpowiedzi:
Siatkówka , 51 bajtów
Wymyśliłem wyrażenia regularne i @ MartinBüttner przeprowadził konwersję do / gry w golfa w Retina, więc ... hurra za wysiłek zespołu?
Mapowanie jest
1 -> Italian, 2 -> German, (empty) -> Hungarian, 4 -> English
, z kwotą sklasyfikowaną w każdej kategorii4506 + 1852 + 2092 + 3560 = 12010
.Wypróbuj online! | Zmodyfikowana wersja multilinii
Wyjaśnienie
Po pierwsze, równoważny Python jest mniej więcej taki:
Powiem tylko, że
o$
jest to doskonały wskaźnik języka włoskiego.Wersja Retina jest podobna, z parami linii tworzących etapy wymiany. Na przykład pierwsze dwie linie
zastępuje dopasowania pierwszego wiersza zawartością drugiego wiersza.
Następne trzy linie robią to samo, ale używając trybu anty-grep Retiny - anti-grep (określony za pomocą
A`
) usuwa linię, jeśli pasuje do podanego wyrażenia regularnego, a kolejne dwie linie zastępują pustą linię do pożądanego wyniku.Poniższy wiersz ponownie używa anti-grep, ale nie zastępuje pustego wiersza, dając stałe wyjście dla języka węgierskiego.
Wreszcie dwie ostatnie linie
zastępuje niepustą niecyfrową linię na
4
. Wszystkie substytucje mogą się zdarzyć tylko wtedy, gdy nie aktywowano wcześniejszej substytucji, symulującif/else if
łańcuch.źródło
LabVIEW, 29 operacji pierwotnych LabVIEW i 148,950 bajtów
przełącza między językami i umieszcza iterator w tablicy, jeśli słowo tam jest. Jest to sprawdzane przez wewnętrzną pętlę, wybieranie i-tej linii i wykonywanie
=
. W LabVIEW daje prawdę tylko wtedy, gdy ciągi są dokładnie takie same.Teraz weź pierwszy element tablicy wyjściowej, aby angielski przeszedł resztę.
Dane wyjściowe są na razie
0
w języku angielskim,1
niemieckim,2
włoskim i3
węgierskim.źródło
Java, 3416 bajtów, 62%
to jest moje rozwiązanie, analizuję listę podanych słów i znajduję 60 najczęściej używanych bigramów i trygramów dla każdego języka. Teraz sprawdzam moje n-gramy względem słowa i wybieram język z większością n-gramów w słowie.
i to jest mój testcase
źródło