Unvollkommenheiten dans mon français


13

Um ein Verb in l'imparfait zu konjugieren , müssen folgende Schritte ausgeführt werden:

  1. Finden Sie den "Stamm" des Wortes; Dies wird erreicht, indem die -onsnous-konjugierte Form des Wortes weggelassen wird . Zum Beispiel vivre ist nous vivons ; Entfernen -onsvon vivons Erträgen viv-.
  2. Nehmen Sie den Stiel und fügen Sie je nach Thema ein passendes Ende hinzu. Hier sind die Enden:

    je         -ais
    tu         -ais
    il/elle    -ait
    
    nous       -ions
    vous       -iez
    ils/elles  -aient
    

Ziel Geben Sie für ein Verb und ein Subjekt die unvollständige Form dieses Verbs in Bezug auf das Subjekt aus. Das Eingabeformat kann in jedem für Ihre Sprache geeigneten Format angegeben werden. Ihre Einreichung kann entweder ein Programm, ein Ausschnitt oder eine Funktion sein. (Beachten Sie, dass das Verb kein echtes Verb sein muss.)

Sie können davon ausgehen, dass das Verb ein reguläres Verb ist, dh Elemente wie avoir werden als -irVerb behandelt , nicht als unregelmäßiges. Das einzige Verb, das Sie als unregelmäßig quantifizieren müssen, ist être ; es ist konjugiert als solche:

j'étais
tu étais
il/elle était

nous étions
vous étiez
ils/elles étaient

Hier sind die Konjugationen für -er, -reund -irVerben in den nous Formen

-ER => (e)ons           ; e is added after a 'g'
-RE => ons
-IR => issons

Alles, was damit nicht endet, muss nicht behandelt werden.

(Beachten Sie, dass je verschmilzt mit dem nächsten Vokal, wenn es einen gibt. ZB je acheter -> j'achetais. hWird ein Vokal für unsere Zwecke in Betracht gezogen werden.)

Beispiel IOs

input: tu vivre
output: tu vivais

input: elles nager
output: elles nageaient

input: je morter
output: je mortais     ; incorrect in real life, but correct for our purposes

input: vous finir
output: vous finissiez

input: il croire
output: il croiait

input: nous jouer
output: nous jouions

Boni

  • -5N Bytes für alle Nzusätzlich behandelten unregelmäßigen Verben.
  • -10%, wenn Sie auch jede Konjugation des Verbs in der Imperfektform ausgeben.

Dies ist ein , also gewinnt das kürzeste Programm in Bytes.


@ CᴏɴᴏʀO'Bʀɪᴇɴ Does je habiterwerden j' habiteoder j'habite?
Kritixi Lithos

@KritixiLithos Entweder ist in Ordnung.
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ Muss die Eingabe für den -10% -Bonus noch das Pronomen haben, oder kann es nur das Verb sein?
Kritixi Lithos

Morterexistiert nicht, ich nehme an, Sie beziehen sich auf to diedas , was ist mourir, was ergeben würde, je mouraiswas tatsächlich korrekt ist.
Fatalize

@ Fatalize Ich bezog mich auf morter. Es ist technisch falsch, weil es kein Wort ist.
Conor O'Brien

Antworten:


2

Verarbeitung, 342-10% (Bonus) = 307,8

Ich habe eine Funktion erstellt. Um die Funktion aufzurufen, geben Sie das Pronomen als ersten Parameter und das Verb als zweiten ein. Beispielsweise,a("je","habiter")

Bitte beachten Sie, dass mein Programm das Verb für alle Pronomen konjugiert, so dass ich den 10% -Bonus erhalten habe.

void a(String a,String b){String[]e={"ais","ais","ait","ait","ions","iez","aient","aient"},p={"je","tu","il","elle","nous","vous","ils","elles"};if("aehiou".contains(b.charAt(0)+""))p[0]="j'";for(String i:p)println(i+" "+b.substring(0,b.length()-2)+(b.endsWith("ger")?"e":b.endsWith("ir")?"iss":"")+e[java.util.Arrays.asList(p).indexOf(i)]);}

Lesbare Form:

void a(String a,String b){
  String[]e={"ais","ais","ait","ait","ions","iez","aient","aient"},p={"je","tu","il","elle","nous","vous","ils","elles"};
  if("aehiou".contains(b.charAt(0)+""))p[0]="j'";
  for(String i:p)
    println(i+" "+b.substring(0,b.length()-2)+(b.endsWith("ger")?"e":b.endsWith("ir")?"iss":"")+e[java.util.Arrays.asList(p).indexOf(i)]);
}

Ausgabe (für a("je", "habiter"))

j' habitais
tu habitais
il habitait
elle habitait
nous habitions
vous habitiez
ils habitaient
elles habitaient

Herzliche Glückwünsche!
Conor O'Brien

1
Ja! Ja! Ja! Mein erster Sieg im Code-Golf! Ja! Ja! [räuspert sich] @ CᴏɴᴏʀO'Bʀɪᴇɴ Danke.
Kritixi Lithos

Nicht alle Verben mit einem führenden h entziehen sich dem Pronomen. Nur die mit einem stillen h. Gegenbeispiele sind haïr (je hais) (ohnehin unregelmäßig), hacher, haleter, halter, hérisser und viele mehr. Sie vermissen auch die Verben, die mit -cer enden, wobei die "nous form" zu -çons wird.
Urhixidur

4

Haskell, 366 362 352 Bytes

s#v=m++g++d++t
 where
 m|v=="être"="ét"|i/="rio"&&i/="erd"&&i/="eri"=r 2 v|otherwise=r 3 v
 g=if(last m=='g'&&head t/='i')then"e"else""
 d|init i=="ri"="iss"|i=="eri"="y"|otherwise=""
 t|s=="je"||s=="tu"="ais"|elem s["il","elle","on"]="ait"|s=="nous"="ions"|s=="vous"="iez"|s=="ils"||s=="elles"="aient"
 r i=reverse.drop i.reverse
 i=take 3$reverse v

Sie können dies in ghci kompilieren und es so verwenden "je"#"choisir", um zu erhalten "choisissais".

Dieser Code funktioniert mit einigen unregelmäßigen Verben. Es kann konjugieren croire ( je croyais , tu croyais ...) oder prendre sowie alle seine Derivate ( apprendre , comprendre , etc.).

Ich konnte keinen kurzen Weg finden, um andere Verben zu konjugieren, die mit -ire enden (z. B. lire) , rire , dire usw.) oder in -dre (wie craindre , soudre usw.) enden .


Sollte es wegen der êund nicht 352 Bytes sein é?
Kritixi Lithos

2

Java , 389 385 383 382 352,7 443-10% (Bonus) = 398,7 Byte

Bytezahl dank @PeterTaylor und @Fatalize gesenkt
Bitte beachten Sie, dass mein Programm das Verb für alle Pronomen konjugiert, so dass ich den 10% -Bonus erhalte .

class A{public static void main(String[]a){String[]e={"ais","ais","ait","ait","ions","iez","aient","aient"},p={"je","tu","il","elle","nous","vous","ils","elles"},w=new java.util.Scanner(System.in).nextLine().split(" ");if("aehiou".contains(w[1].charAt(0)+""))p[0]="j'";for(String i:p)System.out.println(i+" "+w[1].substring(0,w[1].length()-2)+(w[1].endsWith("ger")?"e":w[1].endsWith("ir")?"iss":"")+e[java.util.Arrays.asList(p).indexOf(i)]);}}

Lesbare Form (immer noch ziemlich chaotisch):

 1| class A{
 2|   public static void main(String[]a){
 3|     String[]e={"ais","ais","ait","ait","ions","iez","aient","aient"};
 4|     String[]p={"je","tu","il","elle","nous","vous","ils","elles"};
 5|     String[]w=new java.util.Scanner(System.in).nextLine().split(" ");
 6|     if("aehiou".contains(w[1].charAt(0)+""))p[0]="j'";
 7|     for(String i: p) {
 8|       System.out.print(i+" "+w[1].substring(0,w[1].length()-2)+(w[1].endsWith("ger")?"e":w[1].endsWith("ir")?"iss":"")+e[java.util.Arrays.asList(p).indexOf(i)]);
 9|     }
10|   }
11| }

Erläuterung:

Lines 3-4: Initialisation of arrays.
Line    5: Read a line as input and split it into words
Line    6: Shorten the `je` to `j'` in presence of a succeeding vowel or a `h`.
Line    7: Create a for-loop iterating through all of the pronouns .
Line    8: Conjugate the verb(remove the ending from the infinite form of the verb and add ending accordingly) and print the result, along with the pronoun.



(Alte Version) 393-10% = 352,7 Byte

Bitte beachten Sie auch, dass mein altes Programm nicht der neuen Regel über das jeZusammenführen in folgt j'.

class A{public static void main(String[]a){String[]e={"ais","ais","ait","ait","ions","iez","aient","aient"},p={"je","tu","il","elle","nous","vous","ils","elles"},w=new java.util.Scanner(System.in).nextLine().split(" ");for(String i:p)System.out.println(i+" "+w[1].substring(0,w[1].length()-2)+(w[1].endsWith("ger")?"e":w[1].endsWith("ir")?"iss":"")+e[java.util.Arrays.asList(p).indexOf(i)]);}}

2
Warum hast du beides kund l?
Peter Taylor

@PeterTaylor Gee, danke, dass du das gesehen hast!
Kritixi Lithos

Sie haben hier einen nutzlosen Platz:w[1].substring(0, w[1].length()-2)
Fatalize

@Fatalize Ich habe den nutzlosen Speicherplatz in meiner letzten Bearbeitung entfernt.
Kritixi Lithos

1

Python 3 , 258–10% = 232,2, 223–10% = 200,7

Vielen Dank an @WW, dass du mir 35 Bytes gespart hast!

def t(x,y):
 z=y[-2:];y=y[:-2];y+='e'*(y[-1]=='g');y+='iss'*(z=='ir')
 return[('j'+"e'"[y[0]in'aeiouh']+' tu il elle nous vous ils elles').split()[i]+' '+y+'ais ais ait ait ions iez aient aient'.split()[i]for i in range(8)]

Probieren Sie es online!


1
Mit a können Sie splitIhre Listen etwas weiter komprimieren. Auch die Verwendung von ;kann Ihnen dabei helfen, Einrückungen zu vermeiden.
Post Rock Garf Hunter

1
Sie brauchen auch keine Parens um Ihre Bedingungen in der ifs.
Post Rock Garf Hunter

1
Ihr Beitrag scheint ein Leerzeichen nach j'dem zu setzen , das nicht der Spezifikation zu entsprechen scheint.
Post Rock Garf Hunter

1
@WW Danke! und in den Kommentaren des Hauptpostens sagt das OP "j" mit einem Leerzeichen ist in Ordnung
JathOsh

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.