Erläuterung
Hallo! Für diejenigen unter Ihnen, die kein Spanisch sprechen, wird ein Verb basierend auf der Person konjugiert, die die Aktion ausführt. Hier ist eine Tabelle:
English Spanish
I Yo
You Tú
He Él
She Ella
You (formal) Usted
We all Nosotros
You all Vosotros
They (masculine, plural) Ellos
They (feminine, plural) Ellas
You (plural) Ustedes
In Spanisch, alle Verben enden mit ar
, er
oder ir
. Hier ist eine weitere hilfreiche Tabelle:
Ar Er Ir
Yo o o o
Tú as es es
Él a e e
Ella a e e
Usted a e e
Nosotros amos emos imos
Vosotros áis éis ís
Ellos an en en
Ellas an en en
Ustedes an en en
Wenn Sie ein Pronomen und ein Verb haben, drucken Sie das mit dem Pronomen in der Gegenwart konjugierte Verb. Mach dir keine Sorgen über Stammwechsel und seltsame Verben.
Beispiele
Input Output
Yo escribir Escribo
Tu enseñar Enseñas
Ella querer Quere (It should be quiere but ignore stem changes)
Wenn Ihre Sprache das Drucken mit Akzenten nicht unterstützt, können Sie diese weglassen. Andernfalls sollten keine weiteren Zeichen erforderlich sein, um á anstelle von a in Ihrem Code zu verwenden.
Weitere Wörter zum Testen finden Sie hier: http://spanish.speak7.com/spanish_vocabulary_verbs.htm . Beachten Sie, dass der Wettbewerber ein Wettbewerber sein sollte.
Herausforderung: Stammveränderungen
Im Spanischen haben einige Verben Stammänderungen. Nehmen wir querer
zum Beispiel das Verb . In allen Formen außer Nosotros und Vosotrose
ändert sich die erste zu ie
. Also yo quiero
, aber nosotros queremos
. Wenn Ihr Programm Stammänderungen berücksichtigen kann, können Sie die doppelte Länge jedes von Ihnen unterstützten Wortes von Ihrer endgültigen Punktzahl abziehen. Wenn Sie beispielsweise die Änderung i
-> und nur unterstützen , können Sie die doppelte Länge von oder 12 von Ihrer Punktzahl abziehen .ie
querer
querer
querer
Versuchen Sie für einige stammverändernde Verben Folgendes: https://conjuguemos.com/chart.php?language=spanish&id=2&etre=no&commands=no&all=no&source=public
Kleine Boni
Nur zum Spaß, wenn Sie erklären, was Ihr Code auf Spanisch tut, nehmen Sie 30 von Ihrer Punktzahl ab. Verwenden Sie nicht nur Google Translate, sonst kann ich Ihnen sagen, dass Sie betrogen haben.
(Da ich kein spanischer Muttersprachler bin, korrigieren Sie mich bitte bei Fehlern.)
quelle
Antworten:
Python,
172168743 Zeichen - 1796 Bonus = -1053Aktualisiert, um die Herausforderung des Stammwechsels anzunehmen.
Verwendung :
Test auf nicht stielverändernde Eingaben :
Stammverändernde Eingabebeispiele :
Es werden sowohl Änderungen vorgenommen als auch Änderungen vorgenommen, wobei die Fälle von Nostros + Vostros ordnungsgemäß vermieden werden:
So wurde der Bonus ermittelt und die Datenzeichenfolge generiert, aus der Sie die Verben ableiten können, mit denen er funktioniert:
Welches gibt:
quelle
.
s lasse, würde 50 Punkte oder so zur Punktzahl hinzufügenten
in Ihrer Wurzelliste stehen. teñir ist e zu i , nicht e zu ie ; tener ist e bis ie , hat aber einen unregelmäßigen Stammwechsel für 1s. Ähnlich abstener , circunvenir , obtener , sostener , venir , cocer , destorcer , oler , retorcer , torcer . Auf der anderen Seite scheint Ihr Scoring-Skript nicht sowohl sentar als auch sentar zu zählensentir . Und Sie vermissen ein.
Insosegsosten
unddescontr
sollten es wahrscheinlich seindescont
.tener
denke ich. Ich wusste nicht, dass die von Ihnen aufgelisteten Verben einen Sonderfall hatten. Ich kann sie entfernen oder für sie verantwortlich machen (je nachdem, was billiger ist) und die Tippfehler beheben, wenn es einen anderen engen Anwärter gibtPython, 240 Bytes - (extrem großer) Bonus
Beispielausgabe:
Erläuterung:
Dieser Code verwendet eine vorhandene kostenlose Konjugationswebsite ( http://www.conjugation.org/ ), die verschiedene Konjugationen aus einer großen Datenbank von Verben zurückgibt. Ich habe die URL leicht reduziert, indem ich einen kostenlosen Online-URL-Shortener verwendet habe, mit dem Parameter durch die Umleitung übergeben werden können ( http://smarturl.it/ ). Ich mache einfach eine HTTP-Anfrage basierend auf dem angegebenen Verb, entferne die Akzente aus der
u
unde
in der Quelle, finde das Pronomen im HTML mit regulären Ausdrücken und gebe dann die zugehörige Konjugation zurück.Es ist unmöglich zu sagen, wie viele Verben Stammänderungen aufweisen, ohne die gesamte Datenbank mit einem Wörterbuch abzufragen. Es ist wahrscheinlich sicher anzunehmen, dass der negative Bonus aus dieser Datenbank viel größer ist als jeder Bonus aus übergebenen codierten Listen (die die Länge des Codes erhöhen).
Ich hätte die Zeichen mit Akzent natürlich besser behandeln können, aber es hätte Codierung / Decodierung und zusätzliche Behandlung innerhalb der regulären Ausdrücke erforderlich gemacht.
quelle
re.sub
oderstring.replace
Nicht-Behandeln von Stammänderungen usw. Selbst Ihr Programm würde eine höhere negative Punktzahl erhalten, wenn Sie Ihrer codierten Liste weitere Verben zum Ändern von Stämmen hinzufügen. Die Frage ist fehlerhaft.Freepascal, 218 Zeichen -30 = 189
Es ist eine schwierige Aufgabe, die (ursprüngliche) Python-Antwort zu übertreffen, insbesondere bei Pascal. Ich kann versuchen, mich morgen zu verbessern, möglicherweise mit einem ähnlichen Konzept in einer anderen Sprache. Ich werde keine stammverändernde Antwort einreichen, da ich dies eher als sprachliche als als als programmatische Herausforderung betrachte.
Ungolfed Version:
Explicación (Auf Spanisch für den -30 Bonus, seit Sie gefragt haben)
el segundo extrae su desinencia. el
copy
primundo come parometros el string , el indice para empezar (en est caso 1) und la cantidad de letras (en est caso length-2. )6*(7-pos(p[1],' yt v n')
se evalúa según la primera letra del pronombre. Si el pronombre es él / ella (o / s) o usted (es),pos
se evalúa a cero, así que el valor dentro de los paréntesis es 7.pos(v[length(v)-1],y
busca la penúltima letra del infinitivo enamosemosimos
así que avanza 4 por cada tipo de verbo , formando un ciclo de 12. El resto dey
consiste en todas las desinencias. Se ha logrado intercalar parcialmente las desinencias para "tu" y "yo." Das Embargo für die Begehung der Espacio en Blanco que me gustaría eliminar. Así se definieren el indice para buscar la desinencia en y.pos(p[length(p)],'u s')+1)
Bestimmen Sie die Anzahl der Zeichen für Imprimir. si el pronombre no termina ens
ou
solo se imprime un cáracter. De esta manera suprimimos la segunda letra dean en en
en el caso de un pronombre de tercera persona singular: él, ella, usted.Ausgabe
quelle
Perl, 243 Zeichen
Diesmal konzentrieren wir uns auf die Hash-Suche. Ich bin ziemlich überrascht, dass ich nicht kleiner werden konnte.
Und wenn die Eingabevalidierung nicht wichtig ist, 186 Zeichen:
quelle
Perl, 155 Zeichen
Diesmal nur ein paar reguläre Ausdrücke. Sie können kürzeren Code erhalten, indem Sie die Dinge leicht neu anordnen, sodass das Pronomen nach dem Verb steht, da wir uns nur wirklich um das Ende des Verbs kümmern:
Scheint, als ob das Obige derzeit der Gewinner des Codes ist, der den Bonus ignoriert.
quelle
Bash,
301309 (Bugfix)307299 einschließlich neuer ZeilenNicht großartig im Vergleich zu den anderen da draußen. Könnte verbessert werden.
Es nutzt einige bequeme Zufälle aus.
Der Bugfix basiert darauf, dass kein spanisches Verb irgendwo "ii" hat, da beim Umgang mit Vosotros mit -ir-Verben Zeichen gespeichert werden. Bitte korrigieren Sie mich, wenn das falsch ist.
Nimmt eine gültige Eingabe an: Das erste Argument ist das Kleinbuchstabenpronomen mit allen erforderlichen Akzenten. Das zweite Argument ist der Infinitiv des Verbs. Keine Stammänderungen implementiert. Gibt das konjugierte Verb in Kleinbuchstaben ohne Akzente aus.
Erklärt. `` ist eine obskure Notation für das
$( )
Speichern eines Zeichens.Holen Sie sich das Verb Ende
Holen Sie sich das erste Zeichen der Verbende
Holen Sie sich den Verbstamm
Verbstamm + o. $ o ist unsere Ausgabe
nimm den Stamm + den ersten Buchstaben des Endes + mos
Stamm + erster Buchstabe der Endung + ist (keine Akzente)
In allen Szenarien mit Ausnahme der beiden oben genannten verhalten sich -ir-Verben wie -er-Verben. ändere $ f in e, wenn es i ist.
Stamm + $ f + s
wenn der letzte Buchstabe der Endung s ist. Dies schließt ellos, ellas, ustedes ein, die alle die gleichen Enden haben. Wie praktisch.
Stamm + $ f + n
Wir gehen von einer gültigen Eingabe aus, daher sind die einzigen anderen Möglichkeiten Él, Ella und Usted, alle mit denselben Endungen
Druckausgabe, Entfernen von doppelten i (die angezeigt werden, wenn Sie Vosotros mit einem ir-Verb verwenden)
quelle
Perl, 298 Zeichen
oder wenn wir Vorsicht walten lassen und eine gültige Eingabe annehmen können, 246 Zeichen:
Testausgabe:
quelle
Java - zu lang
Ich werde mich nicht einmal die Mühe machen zu zählen. Wenn jemand dies besser Golf spielen möchte, tun Sie dies bitte. Ich werde schließlich die Herausforderung des Stammwechsels umsetzen.
quelle