Imprimir a conjugação completa de um verbo francês

9

Dada uma sequência que termina em "er", "ir" ou "re" (o "infinitivo"), produza a conjugação completa da sequência como um verbo francês nos sete tempos simples. Para cada tempo (na ordem dada abaixo), imprima cada pronome sujeito na seguinte ordem: je , tu , il , elle , nous , vous , ils , elles ; seguido de um espaço, o verbo conjugado de acordo com esse pronome e uma nova linha. Se o verbo começa com uma vogal ( aeiou) ou h, je se torna j ' e o espaço é omitido.

Em todos os exemplos, usarei os verbos regulares exister , invertir e rendre para demonstrar. O francês possui muitos verbos irregulares, que ignoraremos para facilitar a especificação e o desafio.

Os tempos

Tempo presente

Remova er / ir / re do infinitivo e adicione os seguintes finais:

  • er : j'exist e , tu existem es , il existir e , elle existir e , existem nous ons , vous exist ez , ils existem ent , existem elles ent .
  • IR : j'invert é , tu invertido é , il invertido isso , elle invert -la , inverta nous issons , vous invertido issez , ils inverter issent .
  • re : je rend s , tu rend s , il rend, elle rend (sem finais), nous rend ons , vous rend ez , ils rend ent , elles rend ent .

Imperfeita

Remova er / ir / re do infinitivo e adicione os seguintes finais:

  • er e re : j'exist ais , tu existir ais , IL existir ait , existem elle ait , existem nous iões , vous existir IEZ , ils existir aient , existem Elles aient .
  • IR : j'invert issais , tu invertido issais , il invertido issait , elle invertido issait , inverta nous issions , vous invertido issiez , ils inverter issaient .

Passado simples

Remova er / ir / re do infinitivo e adicione os seguintes finais:

  • er : j'exist ai , tu existir como , IL existe um , elle existir um , existem nous âmes , existem vous ates , ils existir erent , existem Elles erent .
  • ir e re : rend je é , tu rend é , il rasgar -lo , elle rasgar -lo , rend nous Imes , rend vous ITES , ils rend irent , elles rend irent .

Futuro

Para todos os verbos, adicione essas terminações diretamente ao infinitivo (embora re verbos soltar a e ):

  • j'invertir ai , tu invertir como , il invertir um , elle invertir um , nous invertir ons , vous invertir ez , ils invertir ont , elles invertir ont .

Condicional

Para todos os verbos, adicione essas terminações diretamente ao infinitivo (embora re verbos soltar a e ):

  • j'invertir ais , tu Invertir ais , IL Invertir ait , elle Invertir ait , Invertir nous iões , vous Invertir IEZ , ils Invertir aient , Elles Invertir aient * .

Presente (Subjuntivo)

Remova er / ir / re do infinitivo e adicione os seguintes finais:

  • er e re : j'exist e , tu existir es , IL existir e , elle existir e , existem nous iões , vous existir IEZ , ils existir ent , existem Elles ento .
  • IR : j'invert isse , tu invertido isses , il invertido isse , elle invertido isse , inverta nous issions , vous invertido issiez , ils inverter issent , elles inverter issent .

Subjuntivo imperfeito

Remova er / ir / re do infinitivo e adicione os seguintes finais:

  • er : j'exist asse , tu existir burros , IL existir AT , existem elle AT , existem nous Assions , vous existir assiez , ils existir concordância , existe Elles consentimento .
  • IR e re : je rend isse , tu rend isses , IL rend -lo , elle rend -lo , rend nous issions , vous rend issiez , ils rend issent , Elles rend issent .

Saída de amostra

Para um verbo eraller , sua saída deve ser:

j'alle
tu alles
il alle
elle alle
nous allons
vous allez
ils allent
elles allent
j'allais
tu allais
il allait
elle allait
nous allions
vous alliez
ils allaient
elles allaient
j'allai
tu allas
il alla
elle alla
nous allâmes
vous allâtes
ils allèrent
elles allèrent
j'allerai
tu alleras
il allera
elle allera
nous allerons
vous allerez
ils alleront
elles alleront
j'allerais
tu allerais
il allerait
elle allerait
nous allerions
vous alleriez
ils alleraient
elles alleraient
j'alle
tu alles
il alle
elle alle
nous allions
vous alliez
ils allent
elles allent
j'allasse
tu allasses
il allât
elle allât
nous allassions
vous allassiez
ils allassent
elles allassent

Para um verbo iravoir , sua saída deve ser:

j'avois
tu avois
il avoit
elle avoit
nous avoissons
vous avoissez
ils avoissent
elles avoissent
j'avoissais
tu avoissais
il avoissait
elle avoissait
nous avoissions
vous avoissiez
ils avoissaient
elles avoissaient
j'avois
tu avois
il avoit
elle avoit
nous avoîmes
vous avoîtes
ils avoirent
elles avoirent
j'avoirai
tu avoiras
il avoira
elle avoira
nous avoirons
vous avoirez
ils avoiront
elles avoiront
j'avoirais
tu avoirais
il avoirait
elle avoirait
nous avoirions
vous avoiriez
ils avoiraient
elles avoiraient
j'avoisse
tu avoisses
il avoisse
elle avoisse
nous avoissions
vous avoissiez
ils avoissent
elles avoissent
j'avoisse
tu avoisses
il avoît
elle avoît
nous avoissions
vous avoissiez
ils avoissent
elles avoissent

Para um re verbo faire, sua saída deve ser:

je fais
tu fais
il fai
elle fai
nous faions
vous faiez
ils faient
elles faient
je faiais
tu faiais
il faiait
elle faiait
nous faiions
vous faiiez
ils faiaient
elles faiaient
je faiis
tu faiis
il faiit
elle faiit
nous faiîmes
vous faiîtes
ils faiirent
elles faiirent
je fairai
tu fairas
il faira
elle faira
nous fairons
vous fairez
ils fairont
elles fairont
je fairais
tu fairais
il fairait
elle fairait
nous fairions
vous fairiez
ils fairaient
elles fairaient
je faie
tu faies
il faie
elle faie
nous faiions
vous faiiez
ils faient
elles faient
je faiisse
tu faiisses
il faiît
elle faiît
nous faiissions
vous faiissiez
ils faiissent
elles faiissent

(Essas não são as verdadeiras conjugações dos verbos acima. Na realidade, são altamente irregulares.)

Isso é código de golfe. A finalização mais curta vence.

P roxo
fonte
3
Acho que usando manger, finire (entre)prendrecomo exemplo deve ser melhor, parece que você tomou intencionalmente verbos irregulares :)
jonatjano
4
@jonatjano também (entre)prendreé irregular. Então talvez em entendrevez disso. (Mas eu concordo que os exemplos atuais horrível se acontecer de você saber francês.)
Arnauld
3
@Arnauld Acontece que eu sou francês e realmente dói :) e sim eu esqueci (entre)prendreera irregullar entendreé realmente melhor
jonatjano
3
@KevinCruijssen Vou deixar o OP decidir, mas como um falante nativo de francês, eu definitivamente diria je yoyote em vez de j'yoyote (embora alguns sites sugiram o último).
Arnauld
2
Eu não acho que @Shaggy estava implicando que há um problema com as especificações, mas apenas um problema com os casos de teste - porque há pouco sentido em aplicar regras regulares a verbos irregulares.
Arnauld

Respostas:

2

Carvão , 488 276 bytes

F⪪§⪪”}∨>↓⁷8lυW!M\ηX↨%]ν÷g×D\﹪3}Þ1Xζ÷S¹.m×K⦄}.}◧TI¡νυOA×∨´TE…8λ→Y×⁶⁰⟦αLi↓↶⎚⦃ω>◧‴κv≦|≕…K⊕Yλ⎇&✳⍘ςθA⪪@₂)¦Hg@»‽H2.⁵÷-⁸n¬u⊘¡″βEN≡x↔÷Wyⅈ(J\`﹪◨⁸||kU_ ←%Zσ¤«⊟Q§!χ⁰⸿¤:\`α´↖±↔5À⊗I¡o⊞⁵cp✳ιg«“/_$↖↧↧⪫,↗A”¶¶⌕er§θ±²¶F⁶F⎇›№aehiou§θ⁰κ⟦j'⟧⁺⪪§⪪”↶↥ζ⊟pW↔,⦄≡WA→÷⪫$Aⅉ⟦v⎇” 궦 «λ…θ⁻Lθ²⭆§⪪ι κ§⁺âèîμ⌕AEIμ⸿

Experimente online! Link é a versão detalhada do código. Explicação:

F⪪§⪪”...”¶¶⌕er§θ±²¶

Uma cadeia compactada muito longa é dividida em parágrafos, cada parágrafo representando as terminações de um final de verbo específico. A desinência apropriada é selecionada dependendo da segunda última letra do verbo. O parágrafo é dividido em linhas que representam os finais de cada tempo. Os tempos são então repetidos.

F⁶

Faça um loop sobre as três pessoas e seus plurais.

F⎇›№aehiou§θ⁰κ⟦j'⟧⁺⪪§⪪”↶↥ζ⊟pW↔,⦄≡WA→÷⪫$Aⅉ⟦v⎇” 궦 «

Faça um loop sobre os pronomes para essas pessoas (a terceira pessoa tem dois gêneros), mas invólucro especial, ["j'"]quando necessário.

λ

Imprima o pronome.

…θ⁻Lθ²

Imprima o radical do verbo.

⭆§⪪ι κ§⁺âèîμ⌕AEIμ

Imprima o sufixo, mas traduza AEIpara âèîcomo o carvão não pode compactar letras acentuadas.

⸿

Inicie uma nova linha.

Neil
fonte
5

JavaScript (ES6),  507  504 bytes

Retorna uma matriz de 7 tempos, em que cada tempo é uma matriz de 8 formas.

(v,[a,b]=v.split(/(..)$/),g=b>'r'?2:b<'i')=>[...S='0123456'].map(x=>'je/tu/il/elle/nous/vous/ils/elles'.split`/`.map((s,n)=>(!n*/^[aehiou]/.test(a)?"j'":s+' ')+a+(x>2&x<5?g>1?'r':b:'')+[...S+'789ABCD'].reduce((p,c)=>(l=p.split(c)).join(l.pop()),'55e91D4D3D7/s//9eC0s00tBai72AA/âm5âtes/èr1/îm5îtes8r72AA9oC/55e8483/7DeDeDeB76e65ât6i46i367DeD5îtB7D8ssCn2s22t848327BDi4Di3DA/a9/4/3/8/i7en6Ass5e/4on3ez2Ai178s88t0Dai').split`/`[(n-=n>2,n-=n>5)+('0x'+'102433656777888A99CBC'[x*3+g])*6]+['sst'[~-n/2]]))

Experimente online! (verbos regulares)

Experimente online! (desastre gramatical usando os verbos irregulares sugeridos no desafio)

Arnauld
fonte
3

Retina , 2051 1891 bytes (UTF-8)

(.+)er$
je $1e0tu $1es0il $1e0elle $1e0nous $1ons0vous $1ez0ils $1ent0elles $1ent0je $1ais0tu $1ais0il $1ait0elle $1ait0nous $1ions0vous $1iez0ils $1aient0elles $1aient0je $1ai0tu $1as0il $1a0elle $1a0nous $1âmes0vous $1âtes0ils $1èrent0elles $1èrent0je $1erai0tu $1eras0il $1era0elle $1era0nous $1erons0vous $1erez0ils $1eront0elles $1eront0je $1erais0tu $1erais0il $1erait0elle $1erait0nous $1erions0vous $1eriez0ils $1eraient0elles $1eraient0je $1e0tu $1es0il $1e0elle $1e0nous $1ions0vous $1iez0ils $1ent0elles $1ent0je $1asse0tu $1asses0il $1ât0elle $1ât0nous $1assions0vous $1assiez0ils $1assent0elles $1assent
(.+i)r$
je $1s0tu $1s0il $1t0elle $1t0nous $1ssons0vous $1ssez0ils $1ssent0elles $1ssent0je $1ssais0tu $1ssais0il $1ssait0elle $1ssait0nous $1ssions0vous $1ssiez0ils $1ssaient0elles $1ssaient0je $1s0tu $1s0il $1t0elle $1t0nous avoîmes0vous avoîtes0ils $1rent0elles $1rent0je $1rai0tu $1ras0il $1ra0elle $1ra0nous $1rons0vous $1rez0ils $1ront0elles $1ront0je $1rais0tu $1rais0il $1rait0elle $1rait0nous $1rions0vous $1riez0ils $1raient0elles $1raient0je $1sse0tu $1sses0il $1sse0elle $1sse0nous $1ssions0vous $1ssiez0ils $1ssent0elles $1ssent0je $1sse0tu $1sses0il avoît0elle avoît0nous $1ssions0vous $1ssiez0ils $1ssent0elles $1ssent
(.+)re$
je $1s0tu $1s0il fai0elle fai0nous $1ons0vous $1ez0ils $1ent0elles $1ent0je $1ais0tu $1ais0il $1ait0elle $1ait0nous $1ions0vous $1iez0ils $1aient0elles $1aient0je $1is0tu $1is0il $1it0elle $1it0nous $1îmes0vous $1îtes0ils $1irent0elles $1irent0je $1rai0tu $1ras0il $1ra0elle $1ra0nous $1rons0vous $1rez0ils $1ront0elles $1ront0je $1rais0tu $1rais0il $1rait0elle $1rait0nous $1rions0vous $1riez0ils $1raient0elles $1raient0je $1e0tu $1es0il $1e0elle $1e0nous $1ions0vous $1iez0ils $1ent0elles $1ent0je $1isse0tu $1isses0il $1ît0elle $1ît0nous $1issions0vous $1issiez0ils $1issent0elles $1issent
je ([aeiouh].+)
j'$1
S`0

Para o ponto de implementação. Vai tentar jogar golfe daqui.

Experimente online.

Explicação:

Manipule todas as palavras que terminam com er, com um 0separador as line:

(.+)er$
je $1e0tu $1es0il $1e0elle $1e0nous $1ons0vous $1ez0ils $1ent0elles $1ent0je $1ais0tu $1ais0il $1ait0elle $1ait0nous $1ions0vous $1iez0ils $1aient0elles $1aient0je $1ai0tu $1as0il $1a0elle $1a0nous $1âmes0vous $1âtes0ils $1èrent0elles $1èrent0je $1erai0tu $1eras0il $1era0elle $1era0nous $1erons0vous $1erez0ils $1eront0elles $1eront0je $1erais0tu $1erais0il $1erait0elle $1erait0nous $1erions0vous $1eriez0ils $1eraient0elles $1eraient0je $1e0tu $1es0il $1e0elle $1e0nous $1ions0vous $1iez0ils $1ent0elles $1ent0je $1asse0tu $1asses0il $1ât0elle $1ât0nous $1assions0vous $1assiez0ils $1assent0elles $1assent

Manipule todas as palavras que terminam com ir, com 0como separador de linhas:

(.+i)r$
je $1s0tu $1s0il $1t0elle $1t0nous $1ssons0vous $1ssez0ils $1ssent0elles $1ssent0je $1ssais0tu $1ssais0il $1ssait0elle $1ssait0nous $1ssions0vous $1ssiez0ils $1ssaient0elles $1ssaient0je $1s0tu $1s0il $1t0elle $1t0nous avoîmes0vous avoîtes0ils $1rent0elles $1rent0je $1rai0tu $1ras0il $1ra0elle $1ra0nous $1rons0vous $1rez0ils $1ront0elles $1ront0je $1rais0tu $1rais0il $1rait0elle $1rait0nous $1rions0vous $1riez0ils $1raient0elles $1raient0je $1sse0tu $1sses0il $1sse0elle $1sse0nous $1ssions0vous $1ssiez0ils $1ssent0elles $1ssent0je $1sse0tu $1sses0il avoît0elle avoît0nous $1ssions0vous $1ssiez0ils $1ssent0elles $1ssent

Manipule todas as palavras que terminam com re, com 0como separador de linhas:

(.+)re$
je $1s0tu $1s0il fai0elle fai0nous $1ons0vous $1ez0ils $1ent0elles $1ent0je $1ais0tu $1ais0il $1ait0elle $1ait0nous $1ions0vous $1iez0ils $1aient0elles $1aient0je $1is0tu $1is0il $1it0elle $1it0nous $1îmes0vous $1îtes0ils $1irent0elles $1irent0je $1rai0tu $1ras0il $1ra0elle $1ra0nous $1rons0vous $1rez0ils $1ront0elles $1ront0je $1rais0tu $1rais0il $1rait0elle $1rait0nous $1rions0vous $1riez0ils $1raient0elles $1raient0je $1e0tu $1es0il $1e0elle $1e0nous $1ions0vous $1iez0ils $1ent0elles $1ent0je $1isse0tu $1isses0il $1ît0elle $1ît0nous $1issions0vous $1issiez0ils $1issent0elles $1issent

Substitua tudo jeseguido por uma vogal ou 'h' por j':

je ([aeiouh].+)
j'$1

E, finalmente, divida em zeros, que basicamente substitui todos os 0s por novas linhas:

S`0

Após o qual o resultado é gerado implicitamente.

Kevin Cruijssen
fonte