Imperfections dans mon français


13

Conjuguer un verbe à l'imparfait , il faut effectuer les étapes suivantes:

  1. Trouvez la "tige" du mot; ceci est réalisé en omettant la -onsforme de conjugué à nous du mot. Par exemple, vivre est nous vivons ; retirer -onsdes vivons rendementsviv- .
  2. Prenez la tige et ajoutez une fin appropriée, selon le sujet. Voici les terminaisons:

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

Objectif Étant donné un verbe et un sujet, produire la forme imparfaite de ce verbe par rapport au sujet. Le format d'entrée peut être dans n'importe quel format adapté à votre langue. Votre soumission peut être un programme, un extrait ou une fonction. (Notez que le verbe ne doit pas nécessairement être un vrai verbe.)

Vous pouvez supposer que le verbe est un verbe régulier, c'est-à-dire des éléments comme avoir seraient traités comme un -irverbe, et non comme un verbe irrégulier. Le seul verbe que vous devez quantifier comme irrégulier est être ; il est conjugué comme tel:

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

nous étions
vous étiez
ils/elles étaient

Voici les conjugaisons de -er , -reet les -irverbes dans les formes NOUS

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

Tout ce qui ne se termine pas avec un tel n'a pas à être manipulé.

(Notez que JE se confond avec la prochaine voyelle, s'il y a un. Par exemple, je acheter -> j'achetais.h Sera considérée comme une voyelle pour nos besoins.)

Exemples d'E / S

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

Bonus

  • -5N octets pour tous N les verbes extra irréguliers traités.
  • -10% si vous produisez également chaque conjugaison du verbe au temps imparfait.

Il s'agit d'un , donc le programme le plus court en octets l'emporte.


@ CᴏɴᴏʀO'Bʀɪᴇɴ Est-ce que je habiterdevenir j' habiteou j'habite?
user41805

@KritixiLithos Soit c'est bien.
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ Pour le bonus de -10%, l'entrée doit-elle encore avoir le pronom, ou peut-il s'agir simplement du verbe?
user41805

Mortern'existe pas, je suppose que vous faites référence à to diece qui est mourir, ce qui donnerait je mouraisce qui est réellement correct.
Fatalize

@Fatalize dont je parlais morter. C'est techniquement incorrect parce que ce n'est pas un mot.
Conor O'Brien

Réponses:


2

Traitement, 342-10% (bonus) = 307,8

J'ai créé une fonction. Pour appeler la fonction, incluez le pronom comme premier paramètre et le verbe comme deuxième. Par exemple,a("je","habiter")

Veuillez noter que mon programme conjugue le verbe pour tous les pronoms, c'est ainsi que j'ai obtenu le bonus de 10%.

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)]);}

Forme lisible:

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)]);
}

Sortie (pour a("je", "habiter"))

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

Toutes nos félicitations!
Conor O'Brien

1
Oui! Oui! Oui! Ma première victoire en code-golf! Oui! Oui! [s'éclaircit la gorge] @ CᴏɴᴏʀO'Bʀɪᴇɴ Merci.
user41805

Tous les verbes avec un h en tête n'éliront pas le pronom. Seuls ceux avec un h silencieux. Les contre-exemples sont haïr (je hais) (de toute façon irrégulier), hacher, haleter, halter, hérisser et bien d'autres. Vous manquez également les verbes se terminant par -cer, où la "forme nous" devient -çons.
Urhixidur

4

Haskell, 366 362 352 octets

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

Vous pouvez le compiler dans ghci et l'utiliser comme tel "je"#"choisir"pour l'obtenir "choisissais".

Ce code fonctionne avec certains verbes irréguliers. Il peut conjuguer croire ( je croyais , tu croyais …) ou prendre ainsi que tous ses dérivés ( apprendre , comprendre , etc.).

Je ne pouvais pas trouver un moyen rapide de conjuguer d'autres verbes se terminant par -ire (comme lire , rire , dire , etc.) ou en -dre (comme craindre , soudre , etc.).


Ne devrait-il pas s'agir de 352 octets à cause du êet é?
user41805

2

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

Le nombre d'octets a été réduit grâce à @PeterTaylor et @Fatalize
Veuillez noter que mon programme conjugue le verbe pour tous les pronoms, c'est ainsi que j'ai obtenu le bonus de 10%.

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)]);}}

Forme lisible (toujours assez salissante):

 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| }

Explication:

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.



(Ancienne version) 393-10% = 352,7 octets

Veuillez également noter que mon ancien programme n'obéit pas à la nouvelle règle concernant je fusion 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
Pourquoi avez-vous les deux ket l?
Peter Taylor

@PeterTaylor Gee, merci d'avoir repéré celui-là!
user41805

Vous avez un espace inutile ici:w[1].substring(0, w[1].length()-2)
Fatalize

@Fatalize J'ai supprimé l'espace inutile dans ma dernière édition.
user41805

1

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

Un grand merci à @WW pour m'avoir sauvé 35 octets!

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)]

Essayez-le en ligne!


1
Vous pouvez utiliser un splitpour compresser un peu plus vos listes. L'utilisation ;peut également vous aider à éviter une partie de l'indentation.
Post Rock Garf Hunter

1
Vous n'avez également pas besoin de parens autour de vos conditionnels dans le ifs.
Post Rock Garf Hunter

1
Votre soumission semble mettre un espace après j', ce qui ne semble pas correspondre à la spécification.
Post Rock Garf Hunter

1
@WW Merci! et dans les commentaires du post principal, le PO dit "j '" avec un espace est très bien
JathOsh

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.