Wenn Sie ein spanisches Verb in seiner Infinitivform eingeben, geben Sie das Verb aus, das in allen 6 Formen des indikativen Imperfekts konjugiert ist.
Um einen Infinitiv im Imperfekt zu konjugieren, entfernen Sie die Endung des Infinitivs (-ar, -er, -ir und manchmal -ir) und fügen Sie die unten aufgeführten unvollständigen Endungen hinzu. Es gibt drei unregelmäßige Verben im Imperfekt, die ebenfalls unten aufgeführt sind.
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
Verwenden Sie für diese Herausforderung Großbuchstaben anstelle von Buchstaben mit Akzenten (á wird A, é wird E und í wird I). Dies liegt nur daran, dass akzentuierte Buchstaben in UTF-8 2 Byte lang sind. In anderen Codierungen können sie jedoch unterschiedlich sein, und ich möchte mich lieber nicht mit all dem befassen und stattdessen in druckbarem ASCII bleiben.
Infinitive Verben bestehen mit Ausnahme des Verbs ir immer aus drei oder mehr Zeichen , enthalten niemals Buchstaben mit Akzent, mit Ausnahme von Verben, die mit -ir enden, und enden immer mit -ar, -er, -ir, oder -ír. Reflexive Verben müssen nicht behandelt werden.
Die Ausgabe kann entweder in Form einer durch Leerzeichen / Kommas getrennten Zeichenfolge (das Drucken jeder Konjugation auf STDOUT in einer eigenen Zeile ist in Ordnung) oder eines Arrays / einer Liste / usw. erfolgen.
Da es sich um Code-Golf , der kürzeste Code in Bytes gewinnt.
Testfälle:
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
quelle
Antworten:
Retina ,
10082 BytesProbieren Sie es online aus. Leider ist es aufgrund der Verwendung von
$_
nicht möglich, den Code so zu ändern, dass alle Tests gleichzeitig ausgeführt werden. Daher müssen Sie die einzelnen Verben kopieren. Ich arbeite an einer neuen Funktion, die dies jedoch ermöglichen wird.Erläuterung
Wir beginnen mit dem Umdrehen aller Enden, die nicht
ar
in sindI
, vorausgesetzt, die Eingabe ist nicht das unregelmäßige Verbir
. Das kümmert sich um die-er
,-ir
,-ír
Konjugationen, verunstaltet die unregelmäßigen Verbenser
undver
(aber kürzt sie in den Prozess) und Blätter nurir
und-ar
mit einem nachgestelltenr
.Wenn das Wort immer noch auf endet
r
, ersetzen wir es durch einb
. Wir haben jetzt alle Standardkonjugationen sowie das unregelmäßige Verb behandeltir
.Dies behebt das unregelmäßige Verb,
ver
dasvI
in der ersten Stufe verwandelt wurde .Dies behebt das unregelmäßige Verb,
ser
dassI
in der ersten Stufe verwandelt wurde . Jetzt haben wir alle möglichen Stiele korrekt modifiziert. Alles, was Sie tun müssen, ist, alle möglichen Endungen anzuhängen und dann in einigen Fällen den Akzent für den Plural der ersten Person festzulegen.Zuerst hängen wir
a
an den Stiel an, denn das ist immer Teil aller Endungen.Dabei wird das selten zu sehende verwendet,
$_
das die gesamte Zeichenfolge in die Ersetzung einfügt (unabhängig davon, was abgeglichen wurde). Dies ist eigentlich sehr nützlich, wenn man Strings dupliziert, so wie sie sind$`
und$'
die auch ziemlich unterschätzt werden.Vor dieser Phase haben wir die erste Person, die Singular in der Saite ist. Wir hängen nun die anderen Konjugationen an, indem wir das Ende der Zeichenkette mit
$
den anderen Formen abgleichen und diese aufbauen , indem wir die entsprechenden Suffixe an den Singular der ersten Person anhängen.Schließlich legen wir den Akzent für die erste Person im Plural fest, falls zutreffend. Dies muss nur für einen Vokal durchgeführt werden, zwei Zeichen vor dem, es
-amos
sei denn, das Zeichen dazwischen istI
. Also passen wir ein solches Zeichen an und verwenden dann eine Transliterationsstufe, um Klein- in Großbuchstaben umzuwandeln. Dieser nutzt die neuen Charakterklassenl
undL
die ich gestern nur hinzugefügt. Sie erweiterna-z
undA-Z
jeweils so , dass neue Funktion 4 Bytes hier spart.quelle
Python 3,
154232 BytesDie fehlenden Großbuchstaben in unregelmäßigen Verben wurden korrigiert.
Ungolfed
quelle
Milchstraße 1.6.2 , 281 Bytes
Nun , das hat eine Weile gedauert! Sieht so aus, als müsste ich ein paar Builtins hinzufügen, hehe ...
Verwendung
Beispiele
quelle
Ruby,
151149Normalerweise wähle ich aus Gründen der Lesbarkeit eine neue Zeile anstelle eines Semikolons. Da es jedoch keine Semikolons gibt, handelt es sich um einen Einzeiler.
Ein Merkmal ist die Verwendung von Platzhaltern
31@
für die betonten Vokale, die von denamos
Endungen abhängen . So wird der richtige Stamm gebildet, und dann wird der Platzhalter durch einen voneia
oderEIA
nach Bedarf ersetztEs gibt hier ein paar Verwendungen von negativen Array-Indizes. Somit
n[-2]
bezieht sich auf die zweite bis letzte Zeichen des Eingangs, undn[0..-3]
bezieht sich auf die Eingabe mit der letzten 2 Zeichen entfernt (der Infinitivform STEM).Ungolfed im Testprogramm
quelle