Imprime la conjugación completa de un verbo francés

9

Dada una cadena que termina en "er", "ir" o "re" (el "infinitivo"), genera la conjugación completa de la cadena como un verbo francés en los siete tiempos simples. Para cada tiempo (en el orden que se indica a continuación), emita cada pronombre sujeto en el siguiente orden: je , tu , il , elle , nous , vous , ils , elles ; seguido de un espacio, el verbo conjugado de acuerdo con ese pronombre y una nueva línea. Si el verbo comienza con una vocal ( aeiou) o h, je se convierte en j ' y se omite el espacio.

En todos los ejemplos, usaré los verbos regulares exister , invertir y rendre para demostrar. El francés tiene muchos verbos irregulares, que ignoraremos para facilitar la especificación y el desafío.

Los tiempos

Tiempo presente

Elimina er / ir / re del infinitivo y agrega las siguientes terminaciones:

  • er : j'exist e , tu exist es , il exist e , elle exist e , nous exist ons , vous exist ez , ils exist ent , elles exist ent .
  • IR : j'invert es , ma invertido es , il invertido que , elle invertido que , Invertir nous issons , vous invertido issez , ILS invertidas issent .
  • re : je rend s , tu rend s , il rend, elle rend (sin terminaciones), nous rend ons , vous rend ez , ils rend ent , elles rend ent .

Imperfecto

Elimina er / ir / re del infinitivo y agrega las siguientes terminaciones:

  • er y re : existes ais , tu existes ais , existes ait , elle existes ait , nous existen iones , vous existes iez , existes aient , elles existes aient .
  • ir : j'invert issais , tu invert issais , il invert issait , elle invert issait , nous invert issions , vous invert issiez , ils invert issaient .

Pasado simple

Elimina er / ir / re del infinitivo y agrega las siguientes terminaciones:

  • er : j'exist ai , tu existes como , il existes a , elle existes a , nous exista âmes , vous existestes , ils existes rent , elles existes èrent .
  • ir y re : je rend is , tu rend is , il rend it , elle rend it , nous rend îmes , vous rend îtes , ils rend irent , elles rend irent .

Futuro

Para todos los verbos, agregue estas terminaciones directamente al infinitivo (aunque los verbos re eliminan la e ):

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

Condicional

Para todos los verbos, agregue estas terminaciones directamente al infinitivo (aunque los verbos re eliminan la e ):

  • j'invertir ais , tu invertir ais , il invertir ait , elle invertir ait , nous invertir ions , vous invertir iez , ils invertir aient , elles invertir aient * .

Presente subjuntivo

Elimina er / ir / re del infinitivo y agrega las siguientes terminaciones:

  • er y re : j'exist e , tu exist es , il exist e , elle exist e , nous existen iones , vous existe iez , ils existe ent , elles existe ent .
  • ir : j'invert isse , tu invert isses , il invert isse , elle invert isse , nous invert issions , vous invert issiez , ils invert issent , elles invert issent .

Subjuntivo imperfecto

Elimina er / ir / re del infinitivo y agrega las siguientes terminaciones:

  • er : j'exist asse , TU EXIST asnos , il existen AT , existen elle AT , existen nous Assions , vous existen assiez , ILS existen asentimiento , existen elles asentimiento .
  • ir y re : je rend isse , tu rend isses , il rend ît , elle rend ît , nous rend issions , vous rend issiez , ils rend issent , elles rend issent .

Salida de muestra

Para un verbo eraller , su salida debería 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 un verbo iravoir , su salida debería 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 un re verbo faire, su salida debería 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

(Estas no son las verdaderas conjugaciones de los verbos anteriores. En realidad son muy irregulares).

Este es el código de golf. La presentación más corta gana.

P púrpura
fuente
3
Creo que usar manger, finiry (entre)prendrecomo ejemplo debería ser mejor, parece que intencionalmente tomaste verbos irregulares :)
jonatjano
44
@jonatjano también (entre)prendrees irregular. Entonces tal vez en su entendrelugar. (Pero sí estoy de acuerdo en que los ejemplos actuales se ven horribles si sabes francés).
Arnauld
3
@Arnauld Sucede que soy francés y me duele mucho :) y sí se me olvidó (entre)prendreera irregullar entendrees realmente mejor
jonatjano
3
@KevinCruijssen Dejaré que el OP decida, pero como hablante nativo de francés, definitivamente diría je yoyote en lugar de j'yoyote (aunque algunos sitios sugieren lo último).
Arnauld
2
No creo que @Shaggy estuviera implicando que hay un problema con la especificación, sino simplemente un problema con los casos de prueba, porque no tiene mucho sentido aplicar reglas regulares a los verbos irregulares.
Arnauld

Respuestas:

2

Carbón , 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μ⸿

Pruébalo en línea! El enlace es a la versión detallada del código. Explicación:

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

Una cadena comprimida muy larga se divide en párrafos, cada párrafo representa las terminaciones de una terminación de verbo particular. El final apropiado se selecciona dependiendo de la segunda última letra del verbo. El párrafo se divide en líneas que representan las terminaciones para cada tiempo por turno. Los tiempos se vuelven.

F⁶

Recorre las tres personas y sus plurales.

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

Haga un bucle sobre los pronombres para esas personas (la tercera persona tiene dos géneros), pero con mayúsculas especiales ["j'"]cuando sea necesario.

λ

Imprime el pronombre.

…θ⁻Lθ²

Imprime el tallo del verbo.

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

Imprimir el sufijo, pero traducir AEIa âèîcomo el carbón no puede comprimir las letras acentuadas.

⸿

Comience una nueva línea.

Neil
fuente
5

JavaScript (ES6),  507504  bytes

Devuelve una matriz de 7 tiempos, donde cada tiempo es una 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]]))

Pruébalo en línea! (verbos regulares)

Pruébalo en línea! (desastre gramatical usando los verbos irregulares sugeridos en el desafío)

Arnauld
fuente
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

Hasta el punto de implementación. Trataré de jugar golf desde aquí.

Pruébalo en línea.

Explicación:

Maneje todas las palabras que terminan en er, con un 0separador como línea:

(.+)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

Maneje todas las palabras que terminan en ir, con un 0separador de línea:

(.+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

Maneje todas las palabras que terminan en re, con un 0separador de línea:

(.+)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

Reemplace todo jeseguido de una vocal o 'h' con j':

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

Y finalmente se divide en ceros, que básicamente reemplaza todos los 0s con nuevas líneas:

S`0

Después de lo cual el resultado se emite implícitamente.

Kevin Cruijssen
fuente