瑕疵dans monfrançais


13

要在l'imparfait中共轭动词,需要执行以下步骤:

  1. 找到单词的“词干”;这是通过省略-ons单词的与名词相关的形式来实现的。例如,生活乐趣理性vivons ; -ons体内去除产量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

不以此结尾的任何事物都不必处理。

(请注意,如果有je,则与下一个元音合并。例如,出于我们的目的,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

奖金

  • -5N字节用于N处理所有额外的不规则动词。
  • 如果您以不完美的时态输出动词的每个词缀,则为-10%。

这是一个,因此以字节为单位的最短程序获胜。


@CᴏɴᴏʀO'Bʀɪᴇɴ是否je habiter成为j' habitej'habite
user41805

@KritixiLithos都可以。
Conor O'Brien 2015年

@CᴏɴᴏʀO'Bʀɪᴇɴ对于-10%的奖金,输入的内容是否还需要有代词,或者仅仅是动词吗?
2015年

Morter不存在,我假设您所指的to diemourir,这将产生je mourais实际上是正确的。
致命

我指的是@Fatalize morter。从技术上讲这是不正确的,因为它不是一个字。
Conor O'Brien

Answers:


2

处理中,342-10%(奖金)= 307.8

我已经创建了一个函数。要调用该函数,请将代词作为第一个参数,并将动词作为第二个参数。例如,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

恭喜你!
Conor O'Brien 2015年

1
是! 是! 是! 我在代码高尔夫球中的第一个胜利!是! 是! [清嗓子] @CᴏɴᴏʀO'Bʀɪᴇɴ谢谢。
user41805

并非所有带有前导h的动词都会忽略代词。只有那些沉默的人。相反的例子是haïr(je hais)(无论如何都是不规则的),hacher,haleter,halter,hérisser等。您还会错过以-cer结尾的动词,“ nous form”变成-çons。
Urhixidur

4

Haskell,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"来获取"choisissais"

该代码适用于一些不规则动词。它可以使croireje croyaistu croyais …)或prendre及其所有派生词(apprendrecomprendre等)共轭。

我找不到找到以-ire(例如lireriredire等)或-dre(例如craindresoudre等)结尾的其他动词的共轭的简短方法。


由于ê和不应该是352个字节é吗?
user41805 2015年

2

爪哇389 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,感谢您发现那个人!
user41805

您在这里有一个无用的空间:w[1].substring(0, w[1].length()-2)
致命

@Fatalize我已在最新编辑中删除了无用的空间。
user41805

1

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

非常感谢@WW为我节省了35个字节!

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
您可以使用split来进一步压缩列表。同时使用;可以帮助您避免某些缩进。
Ad Hoc Garf Hunter

1
您也不需要在ifs中附加条件。
Ad Hoc Garf Hunter

1
您提交的内容似乎在后面放置了一个空格j',似乎与规范不符。
Ad Hoc Garf Hunter

1
@WW谢谢!并且在主要帖子的评论中,OP说“ j”带有空格是很好的
JathOsh

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.