Biorąc pod uwagę czasownik hiszpański w jego bezokolicznikowej formie, wypisz czasownik skoniugowany we wszystkich 6 formach niedokonanego znaku.
Aby skoniugować bezokolicznik z niedoskonałym, usuń bezokolicznikowe zakończenie (-ar, -er, -ir, a czasami -ír) i dodaj niedoskonałe zakończenia wymienione poniżej. W niedoskonałym są trzy czasowniki nieregularne, również wymienione poniżej.
Verb ending Replace with...
--------------------------------------------------------
-ar -aba, -abas, -aba, -ábamos, -abais, -aban
-er, -ir, -ír -ía, -ías, -ía, -íamos, -íais, -ían
Irreg. verb Conjugations
--------------------------------------------------------
ser era, eras, era, éramos, erais, eran
ver veía, veías, veía, veíamos, veíais, veían
ir iba, ibas, iba, íbamos, ibais, iban
Do celów tego wyzwania używaj wielkich liter zamiast liter akcentowanych (á staje się A, é staje się E, a í staje się I). Jest tak tylko dlatego, że litery akcentowane mają 2 bajty w UTF-8, ale mogą być inne w innych kodowaniach i wolałbym nie mieć do czynienia z żadnym z nich i pozostać w drukowanym ASCII.
Czasowniki bezokolicznikowe zawsze będą miały co najmniej trzy znaki, z wyjątkiem czasownika ir , nigdy nie będą zawierać liter akcentowanych, z wyjątkiem czasowników kończących się na -ír, i zawsze kończą się na -ar, -er, -ir, lub -ír. Czasowniki zwrotne nie muszą być obsługiwane.
Dane wyjściowe mogą być w postaci łańcucha oddzielonego spacjami / przecinkami (więc drukowanie każdej koniugacji do STDOUT w osobnym wierszu jest w porządku) lub tablicy / listy / itp.
Ponieważ jest to code-golf , wygrywa najkrótszy kod w bajtach.
Przypadki testowe:
In Out
---------------------------------------------------------------
hablar hablaba hablabas hablaba hablAbamos hablabais hablaban
comer comIa comIas comIa comIamos comIais comIan
vivir vivIa vivIas vivIa vivIamos vivIais vivIan
sonreIr sonreIa sonreIas sonreIa sonreIamos sonreIais sonreIan
ser era eras era Eramos erais eran
ver veIa veIas veIa veIamos veIais veIan
ir iba ibas iba Ibamos ibais iban
źródło
Odpowiedzi:
Siatkówka ,
10082 bajtówWypróbuj online. Niestety ze względu na użycie
$_
nie jest możliwe zmodyfikowanie kodu, aby uruchomić wszystkie testy na raz, więc będziesz musiał skopiować poszczególne czasowniki. Pracuję nad nową funkcją, która sprawi, że będzie to możliwe.Wyjaśnienie
Zaczynamy od przekształcenia wszystkich zakończeń, które nie są
ar
wI
, pod warunkiem, że dane wejściowe nie są czasownikiem nieregularnymir
. Który dba o-er
,-ir
,-ír
koniugacje, bałagan nieregularnych czasownikówser
iver
(ale skraca ich w proces), a pozostawia tylkoir
i-ar
z oznaczeniamir
.Jeśli słowo nadal się kończy
r
, zastępujemy je znakiemb
. Omówiliśmy teraz wszystkie standardowe odmiany, jak również czasownik nieregularnyir
.Naprawia to czasownik nieregularny,
ver
który został przekształconyvI
w pierwszym etapie.Naprawia to czasownik nieregularny,
ser
który został przekształconysI
w pierwszym etapie. Teraz poprawnie zmodyfikowaliśmy wszystkie możliwe łodygi. Wystarczy dodać wszystkie możliwe zakończenia, a następnie w niektórych przypadkach naprawić akcent dla liczby pierwszej w liczbie mnogiej.Najpierw dołączamy
a
do rdzenia, ponieważ zawsze jest to część wszystkich zakończeń.Wykorzystuje to rzadko widziane,
$_
które wstawia cały ciąg do podstawienia (niezależnie od tego, co zostało dopasowane). Jest to w rzeczywistości bardzo przydatne przy powielaniu ciągów, które są$`
i$'
są również niedoceniane.Przed tym etapem mamy pierwszą osobę w liczbie pojedynczej. Teraz dołączamy inne koniugacje, dopasowując koniec łańcucha
$
i budując inne formy, dodając odpowiednie sufiksy do pierwszej osoby liczby pojedynczej.Na koniec naprawiamy akcent dla pierwszej osoby liczby mnogiej, jeśli dotyczy. Tę czynność należy wykonać tylko dla samogłoski, czyli dwóch znaków przed znakiem,
-amos
chyba że między nimi jest znakI
. Dopasowujemy więc taki znak, a następnie używamy etapu transliteracji, aby przekonwertować małe na wielkie litery. To sprawia, że korzystanie z nowych klas postacil
iL
które tylko dodanych wczoraj. Rozwijają się odpowiednio doa-z
iA-Z
, dzięki czemu nowa funkcja oszczędza tutaj 4 bajty.źródło
Python 3,
154232 bajtyNaprawiono brakujące litery w czasownikach nieregularnych.
Nie golfił
źródło
Droga Mleczna 1.6.2 , 281 bajtów
Cóż , zajęło to chwilę! Wygląda na to, że muszę dodać trochę wbudowanych elementów, hehe ...
Stosowanie
Przykłady
źródło
Ruby,
151149Zwykle wybieram nowy wiersz zamiast średnika, jeśli to możliwe, ze względu na czytelność, ale ponieważ nie ma średników, jest to jedna linijka.
Cechą jest użycie symboli zastępczych
31@
dla akcentowanych samogłosek, które zależą odamos
zakończeń. W ten sposób powstaje prawidłowy rdzeń, a następnie symbol zastępczy jest zastępowany przez jedeneia
lubEIA
odpowiednioIstnieje kilka zastosowań ujemnych indeksów tablic.
n[-2]
Odnosi się zatem do drugiego do ostatniego znaku wejścia in[0..-3]
odnosi się do wejścia z usuniętymi 2 ostatnimi znakami (rdzeń bezokolicznika).Niegolfowany w programie testowym
źródło