Ketidaksempurnaan dans mon français


13

Untuk mengkonjugasikan kata kerja di l'imparfait , kita perlu melakukan langkah-langkah berikut:

  1. Temukan "batang" kata itu; ini dicapai dengan menghilangkan bentuk -onskata nous-conjugated. Sebagai contoh, vivre adalah nous vivons ; menghapus -onsdari hasil vivonsviv- .
  2. Ambil batang dan tambahkan akhir yang sesuai, sesuai dengan subjek. Inilah ujungnya:

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

Objective Diberikan kata kerja dan subjek, menghasilkan bentuk kata kerja yang tidak sempurna sehubungan dengan subjek. Format input dapat dalam format apa pun yang sesuai dengan bahasa Anda. Kiriman Anda dapat berupa program, cuplikan, atau fungsi. (Perhatikan bahwa kata kerjanya tidak harus menjadi kata kerja nyata.)

Anda dapat mengasumsikan bahwa kata kerjanya adalah kata kerja biasa, yaitu, barang-barang seperti avoir akan diperlakukan sebagai -irkata kerja, bukan kata kerja yang tidak beraturan. Satu-satunya kata kerja yang harus Anda hitung sebagai tidak beraturan adalah être ; itu terkonjugasi seperti itu:

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

nous étions
vous étiez
ils/elles étaient

Berikut adalah konjugasi untuk -er, -redan -irkata kerja dalam bentuk nous

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

Apa pun yang tidak berakhir dengan demikian tidak harus ditangani.

(Perhatikan bahwa je bergabung dengan vokal berikutnya, jika ada. Misalnya je acheter -> j'achetais,. hAkan dianggap sebagai vokal untuk tujuan kita.)

Contoh 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

Bonus

  • -5N byte untuk semua Nkata kerja tidak teratur ekstra yang ditangani.
  • -10% jika Anda juga menampilkan setiap konjugasi kata kerja dalam bentuk imperfect tense.

Ini adalah , sehingga program terpendek dalam byte menang.


@ CᴏɴᴏʀO'Bʀɪᴇɴ Apakah je habitermenjadi j' habiteatau j'habite?
Kritixi Lithos

@ KritixiLithos Baik-baik saja.
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ Untuk bonus -10%, apakah input masih perlu memiliki kata ganti, atau bisakah itu hanya kata kerjanya?
Kritixi Lithos

Mortertidak ada, saya berasumsi Anda merujuk to dieyang mana mourir, yang akan menghasilkan je mouraisyang sebenarnya benar.
Fatalkan

@Formatisasi yang saya maksud morter. Secara teknis tidak benar karena itu bukan kata.
Conor O'Brien

Jawaban:


2

Memproses, 342-10% (bonus) = 307.8

Saya telah membuat fungsi. Untuk memanggil fungsi, sertakan kata ganti sebagai parameter pertama dan kata kerja sebagai yang kedua. Sebagai contoh,a("je","habiter")

Harap perhatikan bahwa program saya mengonjugasikan kata kerja untuk semua kata ganti, jadi dari situlah saya mendapat bonus 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)]);}

Formulir yang dapat dibaca:

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

Output (untuk a("je", "habiter"))

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

Selamat!
Conor O'Brien

1
Iya! Iya! Iya! Kemenangan pertama saya di golf kode! Iya! Iya! [berdehem] @ CᴏɴᴏʀO'Bʀɪᴇɴ Terima kasih.
Kritixi Lithos

Tidak semua kata kerja dengan h depan akan menghilangkan kata ganti. Hanya mereka yang diam h. Contoh kontra adalah haïr (je hais) (tetap tidak teratur), hacher, haleter, halter, hisser dan banyak lagi. Anda juga melewatkan kata kerja yang diakhiri dengan -cer, di mana "nous form" menjadi -çons.
Urhixidur

4

Haskell, 366 362 352 byte

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

Anda dapat mengkompilasi ini dalam ghci dan menggunakannya "je"#"choisir"untuk mendapatkannya "choisissais".

Kode ini berfungsi dengan beberapa kata kerja tidak beraturan. Ia dapat mengonjugasi croire ( je croyais , tu croyais ...) atau prendre serta semua turunannya ( apprendre , comprendre , dll.).

Saya tidak dapat menemukan cara singkat untuk mengkonjugasikan kata kerja lain yang berakhiran -ire (seperti lire , rire , dire , dll.) Atau dalam -dre (seperti craindre , soudre , dll.).


Bukankah 352 byte karena êdan é?
Kritixi Lithos

2

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

Hitungan byte berkurang berkat @PeterTaylor dan @Fatalize
Harap dicatat bahwa program saya mengonjugasikan kata kerja untuk semua kata ganti, jadi dari situlah saya mendapat bonus 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)]);}}

Bentuk yang dapat dibaca (masih cukup berantakan):

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

Penjelasan:

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.



(Versi Lama) 393-10% = 352,7 byte

Harap perhatikan juga bahwa program lama saya tidak mematuhi aturan baru tentang jepenggabungan 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
Mengapa Anda memiliki keduanya kdan l?
Peter Taylor

@PeterTaylor Gee, terima kasih telah melihat yang itu!
Kritixi Lithos

Anda memiliki ruang yang tidak berguna di sini:w[1].substring(0, w[1].length()-2)
Fatalkan

@Fatalize Saya telah menghapus ruang yang tidak berguna di edit terakhir saya.
Kritixi Lithos

1

Python 3 , 258-10% = 232.2 223-10% = 200.7

Terima kasih banyak kepada @WW karena telah menyelamatkan saya 35 byte!

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

Cobalah online!


1
Anda dapat menggunakan a splituntuk mengompres daftar Anda sedikit lagi. Juga menggunakan ;dapat membantu Anda menghindari beberapa lekukan.
Posting Rock Garf Hunter

1
Anda juga tidak perlu orang tua di sekitar kondisi Anda di ifs.
Posting Rock Garf Hunter

1
Kiriman Anda tampaknya memberikan spasi setelahnya j', yang tampaknya tidak cocok dengan spesifikasi.
Posting Rock Garf Hunter

1
@WW Terima kasih! dan dalam komentar dari pos utama OP mengatakan "j '" dengan spasi baik
JathOsh

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.