Imperfections dans monfrançais


13

l'imparfaitで動詞を活用するには、次の手順を実行する必要があります。

  1. 単語の「幹」を見つけます。これは-ons、単語のnous活用形からを省略することで実現されます。たとえば、vivrenous vivonsです。取り外し-onsからvivonsの利回りviv-
  2. 主題に応じて、幹を取り、適切な結末を追加します。終わりはここにあります:

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

目的動詞と主題を与えて、主題に関してその動詞の不完全な形を出力します。入力形式は、言語に適した任意の形式にできます。提出は、プログラム、スニペット、または関数のいずれかです。(動詞は実際の動詞である必要はありません。)

動詞は通常の動詞であると仮定できます。つまり、avoirのような項目-irは不規則な動詞ではなく動詞として扱われます。不規則として数量化する必要がある唯一の動詞はêtreです。それはそのように共役します:

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

nous étions
vous étiez
ils/elles étaient

ここのために活用されている-er-re-irヌース形で動詞は、

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

そのようなもので終わらないものはすべて処理する必要はありません。

(なお、日本脳炎次の母音と合流して、1。Egが存在する場合、je acheter -> j'achetaish我々の目的のために母音とみなされます。)

IOの例

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

ボーナス

  • 処理されるすべてのN余分な不規則動詞に対して-5Nバイト。
  • -10%であれば、あなた不完全な時制での動詞の出力すべての抱合。

これはであるため、バイト単位の最短プログラムが優先されます。


CᴏɴᴏʀO'Bʀɪᴇɴん@ je habiterになりますj' habitej'habite
Kritixiリソス

@KritixiLithosどちらでも結構です。
コナーオブライエン

@CᴏɴᴏʀO'Bʀɪᴇɴ-10%のボーナスについては、入力にまだ代名詞が必要ですか、それとも単に動詞にすることができますか?
Kritixi Lithos

Morter存在しない場合to diemourir、どちらがであるかを参照していると仮定しますje mourais
16年

@Fatalizeを参照していましたmorter。それは言葉ではないので、技術的に間違っています。
コナーオブライエン

回答:


2

処理中、342-10%(ボーナス)= 307.8

関数を作成しました。関数を呼び出すには、最初のパラメーターとして代名詞を、2番目のパラメーターとして動詞を含めます。例えば、a("je","habiter")

私のプログラムはすべての代名詞の動詞を活用するので、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)]);}

読み取り可能なフォーム:

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

出力(a("je", "habiter")

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

おめでとう!
コナーオブライエン

1
はい!はい!はい!コードゴルフでの私の最初の勝利!はい!はい![のどをきれいにする] @CᴏɴᴏʀO'Bʀɪᴇɴありがとう。
Kritixiリトス

先頭にhがあるすべての動詞が代名詞を除去するわけではありません。静かなhの人だけ。反例は、hair(je hais)(とにかく不規則)、hacher、halter、halter、helisserなどです。また、「cer」で終わる動詞も見逃します。「nous form」は-çonsになります。
-Urhixidur

4

ハスケル、366の 362 352バイト

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

これをghciでコンパイルし、そのように使用し"je"#"choisir"てgetを実行でき"choisissais"ます。

このコードは、不規則な動詞で動作します。これは、コンジュゲートすることができるcroireJE croyaisTUはcroyais ...)またはprendreならびにそのすべての誘導体(apprendrecomprendreなど)。

-ire(lireriredireなど)または-dre(craindresoudreなど)で終わる他の動詞を活用する簡単な方法が見つかりませんでした。


êandのために352バイトになってはいけませんéか?
Kritixi Lithos

2

Java389 385 383 382 352.7 443-10%(ボーナス)= 398.7バイト

@PeterTaylorと@Fatalizeのおかげでバイト数が減りました。
私のプログラムはすべての代名詞の動詞を活用するので、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)]);}}

読み取り可能なフォーム(まだかなり面倒です):

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

説明:

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.



(旧バージョン)393-10%= 352.7バイト

また、私の古いプログラムはにje合併することに関する新しい規則に従わないことに注意してください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
なぜあなたは両方を持っているかkl
ピーターテイラー

@PeterTaylor Gee、それを見つけてくれてありがとう!
Kritixi Lithos

ここには無駄なスペースがありますw[1].substring(0, w[1].length()-2)
。–

@Fatalize最新の編集で無駄なスペースを削除しました。
Kritixi Lithos

1

Pythonの3258から10パーセント= 232.2 223から10パーセント= 200.7

35バイト節約してくれた@WWに感謝します!

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

オンラインでお試しください!


1
a splitを使用して、リストをもう少し圧縮できます。また、使用;すると、インデントの一部を回避するのに役立ちます。
ポストロックガーフハンター

1
また、ifsの条件文の周りに括弧を必要としません。
ポストロックガーフハンター

1
あなたの提出は、後j'にスペースを入れるようです、それは仕様と一致しないようです。
ポストロックガーフハンター

1
@WWありがとう!メイン記事のコメントでOPはスペースと「jは」」結構ですと言う
JathOsh

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.