स्पेनिश अपूर्ण / कॉन्जुग्यू एन एल इम्पेक्टो डे सिनातिवो में संयुग्म


13

अपने असीम रूप में एक स्पेनिश क्रिया के इनपुट को देखते हुए, संकेत अपूर्ण के सभी 6 रूपों में संयुग्मित क्रिया को आउटपुट करता है।

अपूर्ण में एक infinitive संयुग्मित करने के लिए, infinitive end (-ar, -er, -ir, और कभी-कभी) को हटा दें और नीचे सूचीबद्ध अपूर्ण अंत जोड़ें। अपूर्ण में तीन अनियमित क्रियाएं हैं, जिन्हें नीचे भी सूचीबद्ध किया गया है।

Verb ending    Replace with...
--------------------------------------------------------
-ar            -aba, -abas, -aba, -ábamos, -abais, -aban
-er, -ir, -ír  -ía,  -ías,  -ía,  -íamos,  -íais,  -ían
Irreg. verb    Conjugations
--------------------------------------------------------
ser            era,  eras,  era,  éramos,  erais,  eran
ver            veía, veías, veía, veíamos, veíais, veían
ir             iba,  ibas,  iba,  íbamos,  ibais,  iban

इस चुनौती के प्रयोजनों के लिए, उच्चारण पत्रों के बजाय बड़े अक्षरों का उपयोग करें (á A बन जाता है, é E बन जाता है, और í I बन जाता है)। यह केवल इसलिए है क्योंकि उच्चारण पत्र UTF-8 में 2 बाइट्स हैं, लेकिन वे अन्य एन्कोडिंग में अलग हो सकते हैं, और मुझे इसके बजाय किसी भी से निपटने और प्रिंट करने योग्य ASCII के भीतर नहीं रहना होगा।

क्रिया के साधारण क्रियाओं हमेशा क्रिया का एकमात्र अपवाद के साथ तीन या अधिक वर्ण लंबा हो जाएगा ir , क्रिया के अपवाद के साथ उच्चारण चिह्न वाले अक्षरों को शामिल कभी नहीं होगा कि -ír में अंत, और हमेशा या तो -ar, -er, -ir, में खत्म हो जाएगा या। रिफ्लेक्टिव क्रियाओं को संभालने की आवश्यकता नहीं है।

आउटपुट या तो व्हाट्सएप के रूप में हो सकता है- / अल्पविराम से अलग स्ट्रिंग (इसलिए अपनी लाइन पर STDOUT के लिए प्रत्येक संयुग्मन मुद्रण ठीक है) या एक सरणी / सूची / आदि।

चूंकि यह , बाइट्स में सबसे छोटा कोड जीतता है।

परीक्षण के मामलों:

In       Out
---------------------------------------------------------------
hablar   hablaba hablabas hablaba hablAbamos hablabais hablaban
comer    comIa comIas comIa comIamos comIais comIan
vivir    vivIa vivIas vivIa vivIamos vivIais vivIan
sonreIr  sonreIa sonreIas sonreIa sonreIamos sonreIais sonreIan
ser      era eras era Eramos erais eran
ver      veIa veIas veIa veIamos veIais veIan
ir       iba ibas iba Ibamos ibais iban

1
इतने सारे अपवाद ..: P
Zach Gates

9
@ZachGates देखें, आप कहते हैं कि, लेकिन आपने कुछ भी नहीं देखा है जब तक कि आपने पहले से देखा नहीं है। इम्परफेक्ट कम से कम अपवादों के साथ काल में से एक है।
Addison Crump

मैंने स्पैनिश 1-3 लिया है, हे। 0/10 @FagagAsSpam की सिफारिश नहीं करेगा
Zach Gates

@ZachGates मुझे भी। : c
Addison Crump

जवाबों:


6

रेटिना , 100 82 बाइट्स

\B[^a]r$
I
r$
b
^vI$
veI
^sI$
er
$
a
$
 $_s $_ $_mos $_is $_n
T`l`L`.(?=[^I]amos )

इसे ऑनलाइन आज़माएं। दुर्भाग्य से, इसके उपयोग के कारण $_एक बार में सभी परीक्षणों को चलाने के लिए कोड को संशोधित करना संभव नहीं है, इसलिए आपको व्यक्तिगत क्रियाओं में कॉपी करना होगा। मैं एक नई सुविधा पर काम कर रहा हूं जो हालांकि यह संभव बना देगा।

व्याख्या

\B[^a]r$
I

हम सब अंत कौन-सी नहीं बदल कर शुरू arमें Iप्रदान की है, इनपुट अनियमित क्रिया नहीं है ir। यही कारण है कि का ख्याल रखता है -er, -ir, -írconjugations, ऊपर अनियमित क्रिया भोजनालयों serऔर ver(लेकिन इस प्रक्रिया में उन्हें shortens), और पत्तियों केवल irऔर -arपीछे के साथ r

r$
b

यदि शब्द अभी भी समाप्त होता है r, तो हम उस के साथ प्रतिस्थापित करते हैं b। हमने अब सभी मानक संयुग्मों के साथ-साथ अनियमित क्रिया को भी कवर किया है ir

^vI$
veI

यह अनियमित क्रिया को ठीक करता है verजिसे vIपहले चरण में बदल दिया गया है।

^sI$
er

यह अनियमित क्रिया को ठीक करता है serजिसे sIपहले चरण में बदल दिया गया है। अब हमने सभी संभावित तनों को सही ढंग से संशोधित किया है। वह सब करने के लिए बचा हुआ है जो सभी संभावित अंत में संलग्न है, और फिर कुछ मामलों में पहले व्यक्ति बहुवचन के लिए उच्चारण को ठीक करें।

$
a

सबसे पहले हम aस्टेम को जोड़ते हैं , क्योंकि यह हमेशा सभी अंत का हिस्सा होता है।

$
 $_s $_ $_mos $_is $_n

यह शायद ही कभी देखा का उपयोग $_करता है जो पूरे स्ट्रिंग को प्रतिस्थापन में डालता है (चाहे जो भी मिलान किया गया था)। स्ट्रिंग्स को डुप्लिकेट करते समय यह वास्तव में बहुत उपयोगी है, जैसा कि हैं , $`और $', जो कि बहुत कम महत्व के हैं।

इस चरण से पहले, हमें स्ट्रिंग में पहला व्यक्ति विलक्षण मिला है। अब हम दूसरे संयुग्मन को जोड़ते हैं, स्ट्रिंग के अंत के साथ मेल खाते हैं $और पहले व्यक्ति एकवचन में उपयुक्त प्रत्ययों को जोड़कर अन्य रूपों का निर्माण करते हैं।

T`l`L`.(?=[^I]amos )

अंत में, हम पहले व्यक्ति के लिए उच्चारण को ठीक करते हैं यदि लागू हो। यह केवल एक स्वर के लिए किया जाना चाहिए, -amos जब तक कि बीच में चरित्र न हो , तब तक दो वर्ण I। इसलिए हम इस तरह के चरित्र से मेल खाते हैं और फिर निचली को ऊपरी मामले में बदलने के लिए लिप्यंतरण चरण का उपयोग करते हैं। यह नए चरित्र वर्गों का उपयोग करता है lऔर Lजो मैंने कल ही जोड़ा है। वे क्रमशः a-zऔर A-Zक्रमशः विस्तार करते हैं, ताकि नई सुविधा यहां 4 बाइट बचाए।


3

पायथन 3, 154 232 बाइट्स

M=input()
Q={'ser':'er','ver':'veI','ir':'ib'}.get(M)
H=[(Q if Q else M[:-2]+("ab"if M[-2:]=="ar"else"I"))+j for j in"a as a amos ais an".split(' ')]
if M[-2:]=="ar":H[3]=M[:-2]+"Abamos"
if Q in['er','ib']:H[3]=H[3].title()
print(H)

अनियमित क्रियाओं में लापता राजधानियों को निर्धारित किया।


Ungolfed

M=input()
Q={'ser':'er','ver':'veI','ir':'ib'}.get(M)

H=[]
for j in "a as a amos ais an".split(' '):
    if Q:
        F = Q
    else:
        if M[-2:] == "ar":
            F = M[:-2] + "ab"
        else:
            F = M[:-2] + "I"
    H += [F + j]

if M[-2:] == "ar":
    H[3] = M[:-2] + "Abamos"

if Q in ['er', 'ib']:
    H[3] = H[3].title()

print(H)

1

मिल्की वे 1.6.2 , 281 बाइट्स

'?{"ser"b_^"er";_}?{"ver"b_^"veI";_}?{"ir"b_^"ib";_}?{_:y2->CH=<1-&{~>;+<1-}^>;+<;_^""0}?{"ar"b_"ab";>+<0_}?{_"I";>+<_^}^;^"an ais amos a as a"" "\?{<y__<^}=3&{~<:>;>;+!^<1-}^?{'C=^"a"b_'C:y2->=^^<ΩG"Abamos"+!^^_}?{<"er"b_"Eramos"!^^_}?{<"ib"b_"Ibamos"!^^_}J:y1-;=<&{~<:>;>;+!^<1-}

खैर कि कुछ समय ले लिया! ऐसा लगता है कि मुझे कुछ बिल्डिंग्स जोड़ने की जरूरत है, हे ...


प्रयोग

./mw <path-to-code> -i <input>

उदाहरण

$ ./mw test.mwg -i "hablar"
hablaba
hablabas
hablaba
hablAbamos
hablabais
hablaban

$ ./mw test.mwg -i "ver"
veIa
veIas
veIa
veIamos
veIais
veIan

1

रूबी, 151 149

आम तौर पर, मैं एक अर्धविराम पर एक नई पंक्ति चुनूंगा, जहां पठनीयता के हितों में संभव है, लेकिन चूंकि अर्धविराम नहीं हैं, यह एक लाइनर है।

->n{%w{a as a amos ais an}.map{|z|['3r','veI','1b',n[0..-3]+(n[-2]==?a?'@b':?I)][("ser ver ir  "+n).index(n)/4].tr('31@',['eia','EIA'][z.size/4])+z}}

एक विशेषता 31@उच्चारण स्वरों के लिए प्लेसहोल्डर्स का उपयोग है जो amosअंत पर निर्भर करता है। इस प्रकार सही स्टेम बनता है, और फिर प्लेसहोल्डर को एक eiaया EIAउपयुक्त के लिए प्रतिस्थापित किया जाता है

यहाँ नकारात्मक सरणी अनुक्रमित के कुछ उपयोग हैं। इस प्रकार n[-2]इनपुट के दूसरे से अंतिम वर्ण को n[0..-3]संदर्भित करता है , और इनपुट को संदर्भित करता है अंतिम 2 वर्णों को हटा दिया जाता है (इनफिनिटिव स्टेम)।

परीक्षण कार्यक्रम में अपराजित

f=->n{
%w{a as a amos ais an}.map{|z|            #iterate through each verb ending
    ['3r','veI','1b',                     #array index 0,1,2 formats for irregular stems (note numbers 1 and 3 used as placeholders)
    n[0..-3]+(n[-2]==?a?'@b':?I)][        #array index 3 format for regular stems, AR->@b or ER/IR->I depending if A found at index -2 (@ used as placeholder)
    ("ser ver ir  "+n).index(n)/4]        #find index of input verb n in "ser ver ir  "+n, divide by 4 to obtain 0,1,2,3 above
    .tr('31@',['eia','EIA'][z.size/4])+   #if z is 4 characters long (AMOS) replace 3,1,@ with uppercase E,I,A. Otherwise with lowercase e,i,a
    z                                     #add the verb ending to the stem
  }
}

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