Wejście
- czasownik , ciąg pasujący do wyrażenia regularnego
([a-pr-vyzıöüçğş]*[aeıioöuü][bcçdfgğhj-nprsştvyz]+|([a-pr-vyzıöüçğş]*[aeıioöuü]){2})(mak|mek)
- liczba mnoga , prawda lub fałsz
- osoba , liczba całkowita o wartości 1, 2 lub 3
- czas , liczba całkowita o wartości 1, 2 lub 3
Wynik
Sprzężony forma czasownika tureckiego czasownika , w osobie ST / nd / rd osoby liczby mnogiej, jeżeli liczba mnoga jest TRUE
i pojedynczej, jeśli nie jest w
- Jeśli czas wynosi 1, prosty prezent;
- Jeśli czas jest równy 2, obecny jest;
- Jeśli czas wynosi 3, przyszłość.
Zasady
Czasowniki tureckie są sprzężone w trzech elementach, które są uporządkowane:
- Macierzystych , utworzony poprzez usunięcie
mak
lubmek
z końca nieskończonym; Znakiem napięta , który jest:
Dla prostego prezentu:
- -r jeśli rdzeń kończy się samogłoską;
- -ir zgodnie z zasadami harmonii samogłosek (patrz poniżej), jeśli rdzeń zawiera więcej niż jedną sylabę (tj. samogłoskę) lub pochodzi z jednego z następujących czasowników nieregularnych: almak, bilmek, bulmak, durmak, gelmek, görmek, kalmak, olmak, ölmek, sanmak, vermek, varmak, vurmak ;
- -er zgodnie z zasadami harmonii samogłosek, jeśli rdzeń zawiera jedną sylabę i nie jest wymieniony w czasownikach nieregularnych powyżej.
Dla kontynuacji obecnego, -iyor , gdzie i zmienia się zgodnie z regułami harmonii samogłosek . Pędy, które kończą się samogłoską, upuszczają tę samogłoskę przed dodaniem tego sufiksu, po czym sufiks harmonizuje się z samogłoską następującą po słowie (gwarantowane przez wyrażenie regularne).
- Na przyszłość:
- -ecek zgodnie z zasadami harmonii samogłosek, jeśli trzon kończy się spółgłoską;
- -ekran zgodnie z zasadami harmonii samogłosek, jeśli rdzeń kończy się samogłoską.
Osobisty przyrostek do wskazania wykonawcy działań, w każdym przypadku zgodnie z zasadami harmonii samogłosek :
|Singular|Plural| |---|--------|------| |1st| -im | -iz| |2nd| -sin |-siniz| |3rd| (none) | -ler|
Końcowe k czasu przyszłego staje się ğ przed -im i -iz , więc na przykład
(almak, TRUE, 1, 3)
dałoby sięalacağız
.
Zasady harmonii samogłoskowej
Samogłoski tureckie są podzielone na dwie grupy: back ( a ı o u
) i front ( e i ö ü
), według których w ustach są wymawiane. Sufiksy słowa zmieniają samogłoski zgodnie z samogłoskami rdzenia.
Wszystkie przyrostki wymienione powyżej, które mają i jako samogłoskę, używają zamiast tego:
- -ı jeśli ostatnią samogłoską przed sufiksem jest
ı
luba
(obie samogłoski są z powrotem i nie są zaokrąglone ); - -i jeśli ostatnią samogłoską przed sufiksem jest
i
lube
(obie samogłoski są przednie i nie są zaokrąglone ; zwróć uwagę na różnicę turecką między kropkowanym a bez kropkowym I ); - -u jeśli ostatnią samogłoską przed sufiksem jest
u
lubo
(obie samogłoski są cofnięte i zaokrąglone); lub - -ü, jeśli ostatnią samogłoską przed sufiksem jest
ü
lubö
(obie samogłoski są przednie i zaokrąglone).
Zwróć uwagę na obecny ciągły przyrostek -iyor . i
Harmonizuje, ale o
nie zmienia się. Sufiksy osobiste będą zatem harmonizować z o
.
Wszystkie przyrostki wymienione powyżej, które mają e jako samogłoskę, używają zamiast tego:
- -e jeśli ostatnia samogłoska przed sufiksem jest samogłoską przednią; lub
- -a jeśli ostatnia samogłoska przed sufiksem jest tylną samogłoską.
Czasowniki nieregularne
Czasowniki gitmek , tatmak , ditmek , gütmek i etmek zmieniają finał t
na d
przed końcami rozpoczynającymi się od samogłoski (która obejmuje wszystkie zakończenia w tym wyzwaniu). Każdy czasownik kończący się na -etmek również zmienia na t
a d
i dołącza -er do prostego prezentu (chociaż nie jest tak w przypadku innych czasowników).
Przypadki testowe
gütmek, FALSE, 1, 2 -> güdüyorum
almak, TRUE, 3, 3 -> alacaklar
boğmak, TRUE, 2, 1 -> boğarsınız
ölmek, FALSE, 3, 1 -> ölür
boyamak, TRUE, 1, 2 -> boyuyoruz
affetmek, FALSE, 2, 1 -> affedersin
söylemek, TRUE, 3, 1 -> söylerler
söylemek, FALSE, 3, 2 -> söylüyor
söylemek, FALSE, 1, 3 -> söyleyeceğim
-etmek
reguły?Odpowiedzi:
JavaScript (ES6),
466456451446 bajtówNieoficjalny i komentowany
Przypadki testowe
źródło
d
mutację na wszystkich czasownikach kończących się na -etmek ? Nie znam JavaScriptu, ale z tego, co mogę zebrać, wygląda na to, że jest po prostu połączony z innymi.sed, 583 bajty
Podobnie jak moja odpowiedź na ściśle powiązane pytanie Dactylic Hexameter , tak naprawdę jest to tylko tłumaczenie reguł podanych na wyrażenia regularne.
Stosowanie:
Pobiera dane wejściowe w postaci:
Tak więc przypadki testowe to:
Awaria:
Wyniki dla przypadków testowych:
źródło
sed -E ''
, ponieważ podałeś sed jako język, a nie bash, więc rozważ skrypt jako kod źródłowy sed. Następnie możesz uruchomić go w następujący sposób:printf ...|sed -Ef filename
dodając 1 bajt więcej dla flagi E, oszczędzając w końcu 8 bajtów. Btw, do tej pory nie wiedziałem, że -E jest równoważne -r!