इम्प्रेशन्स डैन मोन फ्रैंकेइस


13

L'imparfait में एक क्रिया को संयोजित करने के लिए, निम्न चरणों को पूरा करने की आवश्यकता है:

  1. शब्द का "स्टेम" ढूंढें; यह -onsशब्द के nous- संयुग्मित रूप से छूटकर प्राप्त किया जाता है। उदाहरण के लिए, vivre है Nous vivons ; vivons पैदावार -onsसे हटाने ।viv-
  2. स्टेम लें और विषय के अनुसार एक उचित अंत जोड़ें। यहाँ अंत हैं:

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

उद्देश्य एक क्रिया और एक विषय को देखते हुए, विषय के संबंध में उस क्रिया के अपूर्ण रूप का उत्पादन करता है। इनपुट प्रारूप आपकी भाषा के लिए सुविधाजनक किसी भी प्रारूप में हो सकता है। आपका सबमिशन या तो प्रोग्राम, स्निपेट या फंक्शन हो सकता है। (ध्यान दें कि क्रिया का वास्तविक क्रिया होना जरूरी नहीं है।)

आप मान सकते हैं कि क्रिया एक नियमित क्रिया है, अर्थात, एवियार जैसी वस्तुओं को एक -irक्रिया के रूप में माना जाएगा , अनियमित नहीं। केवल एक ही क्रिया है जिसे आप अनियमित करना चाहते हैं , यह être है ; यह इस तरह संयुग्मित है:

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

nous étions
vous étiez
ils/elles étaient

यहाँ के लिए conjugations हैं -er, -reऔर -irNous रूपों में क्रियाएं

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

जो कुछ भी इस तरह से समाप्त नहीं होता है, उसे संभालना नहीं पड़ता है।

(ध्यान दें कि जेई अगले स्वर के साथ विलय, अगर कोई हो। उदाहरण के लिए, je acheter -> j'achetaishहमारे उद्देश्यों के लिए एक स्वर विचार किया जाएगा।)

उदाहरण IOs

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

बोनस

  • -5 एन बाइट्स सभी Nअतिरिक्त अनियमित क्रिया के लिए संभाला।
  • -10% यदि आप क्रिया के प्रत्येक संयुग्मन को अपूर्ण काल ​​में भी आउटपुट करते हैं।

यह एक , इसलिए बाइट्स में सबसे छोटा कार्यक्रम जीत जाता है।


@ C @O'Bʀɪᴇɴ je habiterबनता है j' habiteया j'habite?
user41805

@KritiiLithos या तो ठीक है।
कॉनर ओ'ब्रायन

@ C @O'Bʀɪᴇɴ -10% बोनस के लिए, इनपुट को अभी भी सर्वनाम की आवश्यकता है, या यह केवल क्रिया हो सकती है?
user41805

Morterअस्तित्व में नहीं है, मुझे लगता है कि आप इसका उल्लेख कर रहे हैं , जो वास्तव में सही to dieहै mourir, जो उपज देगा je mourais
घातक

@ फ़ेटलाइज़ मैं बात कर रहा था morter। यह तकनीकी रूप से गलत है क्योंकि यह एक शब्द नहीं है।
कॉनर ओ'ब्रायन

जवाबों:


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

बधाई हो!
कॉनर ओ'ब्रायन

1
हाँ! हाँ! हाँ! कोड-गोल्फ में मेरी पहली जीत! हाँ! हाँ! [गले को साफ करता है] @ CᴏɴᴏʀO'Bs धन्यवाद।
user41805

एक अग्रणी h के साथ सभी क्रियाएं सर्वनाम के साथ नहीं होंगी। केवल एक मूक एच के साथ। काउंटर उदाहरण ha irr (je hais) (अनियमित वैसे भी), hacher, haleter, halter, hérisser और कई और अधिक हैं। आप क्रिया-अंत को समाप्त करने की क्रिया को भी याद करते हैं, जहाँ "nous form" -çons बन जाता है।
उरिखीदुर

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"पाने के लिए इसका उपयोग कर सकते हैं "choisissais"

यह कोड कुछ अनियमित क्रियाओं के साथ काम करता है। यह संयुग्म कर सकते हैं croire ( जेई croyais , तू croyais ...) या prendre के साथ-साथ अपने सभी डेरिवेटिव ( apprendre , comprendre , आदि)।

मैं -ire (जैसे lire , rire , dire , आदि) या -dre (जैसे craindre , soudre , आदि) में समाप्त होने वाली अन्य क्रियाओं को संयुग्मित करने का एक छोटा तरीका नहीं खोज सका ।


यह 352 की वजह से बाइट्स नहीं होना चाहिए êऔर é?
user41805

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
तुम दोनों क्यों की क्या ज़रूरत है kऔर l?
पीटर टेलर

@PeterTaylor Gee, कि एक जगह के लिए धन्यवाद!
user41805

आपके पास यहां एक बेकार जगह है:w[1].substring(0, w[1].length()-2)
घातक

@ घातक मैंने अपने नवीनतम संपादन में बेकार स्थान को हटा दिया है।
user41805

1

पायथन 3 , 258-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
आप splitअपनी सूचियों को थोड़ा और कम करने के लिए a का उपयोग कर सकते हैं । इसके अलावा ;कुछ इंडेंटेशन से बचने के लिए आप इसका उपयोग कर सकते हैं।
एड हॉक गार्फ हंटर

1
तुम भी अपनी हालत में चारों ओर parens की जरूरत नहीं है if
तदर्थ गार्फ हंटर

1
आपका सबमिशन एक स्पेस के बाद लगता है j', जो कल्पना से मेल नहीं खाता।
तदर्थ गार्फ हंटर

1
@WW धन्यवाद! और मुख्य पोस्ट की टिप्पणियों में ओपी कहते हैं "j '" एक स्थान के साथ ठीक है
JathOsh

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.