एक अनोखी पहेली में dactylic hexameter स्कैन करें


10

कई वर्षों के लिए एक भयानक लैटिन छात्र के रूप में मैंने लैटिन के बारे में कई चीजों से नफरत करना सीखा है। हालांकि एक चीज है जो मुझे पसंद है।

लैटिन विस्तार।

विस्तार कविता की एक विशेष रेखा के मीटर का निर्धारण करने का कार्य है। लैटिन के लिए इसका अर्थ है पंक्ति के प्रत्येक शब्दांश को "प्रकाश" या "भारी" के रूप में सीमांकित करना।

लैटिन में विस्तार के कई नियम हैं। हालाँकि अंग्रेजी के विपरीत लैटिन का विस्तार काफी नियमित है और अक्सर लैटिन शब्दावली या व्याकरण के ज्ञान की आवश्यकता नहीं होती है। इस समस्या के लिए हम उन नियमों के सरलीकृत सबसेट का उपयोग कर रहे हैं (असली लैटिन में एक साफ कल्पना नहीं है)।

इससे पहले कि आप विस्तार शुरू कर दें आप को खत्म करना होगा । उच्चारण को आसान बनाने के लिए एलिसन शब्दों के बीच छोड़ने वाला शब्दांश है। (उदा "वह है" -> "वह" है)। अंग्रेजी के विपरीत, लैटिन एलियन बहुत अच्छे नियमों का पालन करता है।

  • एक शब्द के साथ समाप्त होने वाले शब्द के अंतिम स्वर को छोड़ दिया जाता है यदि अगला शब्द एक स्वर से शुरू होता है।

    नुटा ईएसटी -> नौटस्ट

  • एक स्वर में समाप्त होने वाले शब्दों के लिए वही जाता है जिसके बाद "मी" होता है।

    फिडुम अरिकोलाम -> फिडग्रिकोलम

  • शब्द-प्रारंभिक "एच" एक स्वर के बाद एक एकल स्वर के रूप में गणना के प्रयोजनों के लिए गिना जाता है और हमेशा जब कोहनी गिराया जाता है।

    बहु HORAE -> MULTORAE

    या

    मल्लम हराम -> मल्तोरम

विस्तार के बाद हम विस्तार शुरू कर सकते हैं। विस्तार एक विशिष्ट मीटर के लिए किया जाता है। इस चुनौती के लिए मीटर dactylic hexameter है । Dactylic hexameter में छह "फीट" होते हैं, प्रत्येक पैर में दो या तीन सिलेबल्स होते हैं। स्वर के आधार पर शब्दांश या तो लंबे या छोटे हो सकते हैं। पहले पांच फीट में से प्रत्येक या तो एक डैक्टाइल होगा, एक लंबा शब्दांश जिसके बाद दो छोटे अक्षर होंगे, या एक स्पोंडी, दो लंबे शब्दांश होंगे। और आखिरी पैर एक लंबे समय तक अनुगामी (छोटा या लंबा) होगा, इस समस्या के लिए आपको यह निर्धारित नहीं करना होगा कि कौन सा है)।

  • लैटिन में एक स्वर या तो छोटा या लंबा हो सकता है

  • दो स्वरों (जैसे इइक्टम) के बीच एक "आई" सैंडविच होता है। (यानी एक "जे")

  • स्वर के बाद एक शब्द "आई" शुरू होता है (जैसे इक्टस) भी एक व्यंजन है

  • एक "क्ष" के बाद एक "u" भी एक व्यंजन है (अर्थात "v")

  • डिप्थोंग्स (एई, एयू, ईई, यूआई, ओई और यूई) दो स्वरों से बने होते हैं लेकिन एक स्वर के रूप में गिने जाते हैं और हमेशा लंबे होते हैं

  • इसके और अगले स्वर के बीच दो या अधिक व्यंजन वाला एक स्वर हमेशा लंबा होता है

  • पिछले नियम के लिए "b", "c", "d", "g", "p", या "t" के बाद "l" या "r" एक व्यंजन के रूप में नहीं गिना जाता है

  • "x" दो व्यंजन के रूप में गिना जाता है

  • "ch", "ph", "th", और "qu" को एक व्यंजन के रूप में गिना जाता है

  • शब्द के अंत में शब्दांश (पंक्ति) (अंत के बाद) हमेशा छोटा होता है

  • यदि एक स्वर को पिछले नियमों में से एक द्वारा मजबूर नहीं किया जाता है, तो यह लंबे या छोटे हो सकता है यह मीटर पर निर्भर करेगा

आपका काम लैटिन की एक लाइन लेना और उसके विस्तार का निर्माण करना होगा। आप मानक इनपुट के माध्यम से स्ट्रिंग के रूप में लाइन में लेंगे और अंतिम विस्तार का प्रतिनिधित्व करने वाले स्ट्रिंग को आउटपुट करेंगे।

इनपुट में केवल रिक्त स्थान और वर्ण AZ होंगे।

विस्तार का प्रतिनिधित्व करने के लिए आप |पैरों के अलगाव का सीमांकन करने के साथ सभी सिलेबल्स का उत्पादन करेंगे । एक लंबे समय तक शब्दांश का प्रतिनिधित्व किया -जाएगा, जबकि एक छोटे शब्दांश को vएक एंसप्स (हर पंक्ति के अंतिम शब्दांश) द्वारा चिह्नित किया जाएगा x। अगर वहाँ कई समाधान के रूप में वहाँ अक्सर आप उनमें से किसी को भी उत्पादन हो सकता है।

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

विर्गिल के एनीड की शुरुआत।

 ARMA VIRUMQUE CANO TROIAE QUI PRIMUS AB ORIS     -> -vv|-vv|--|--|-vv|-x (or -vv|-vv|--|-vv|--|-x)
 ITALIAM FATO PROFUGUS LAVINIAQUE VENIT           -> -vv|--|-vv|-vv|-vv|-x
 LITORA MULTUM ILLE ET TERRIS IACTATUS ET ALTO    -> -vv|--|--|--|-vv|-x
 VI SUPERUM SAEVAE MEMOREM IUNONIS OB IRAM        -> -vv|--|-vv|--|-vv|-x (or -vv|--|-vv|-vv|--|-x)
 MULTA QUOQUE ET BELLO PASSUS DUM CONDERET URBEM  -> -vv|--|--|--|-vv|-x
 INFERRETQUE DEOS LATIO GENUS UNDE LATINUM        -> --|-vv|-vv|-vv|-vv|-x
 ALBANIQUE PATRES ATQUE ALTAE MOENIA ROMAE        -> --|-vv|--|--|-vv|-x

आगे की वजीफा

लैटिन कविता के उचित अंदाज में सभी जवाबों को एक आह्वान के साथ शुरू करना चाहिए ।

लैटिन में केवल दो एक अक्षर शब्द "ई" और "ए" हैं। आप मान सकते हैं कि कोई अन्य एक अक्षर शब्द इनपुट के रूप में दिखाई नहीं देगा।


2
हे भगवान यह यादों को वापस लाता है ...
थ्रीएफएक्स

1
एक "i" एक और स्वर को आगे बढ़ाने वाला एक व्यंजन है (यानी एक "j")। में Lavinjaque ( --vv) यह है, लेकिन में इटली ( -vv-) उसी श्लोक में ऐसा नहीं है। शायद इनपुट में जेएस डाल दिया? क्या आपके पास वास्तव में इस आउटपुट को उत्पन्न करने वाला कार्यशील समाधान है?
लिन

ओह, शिश्न का पैर हमेशा एक डैक्टाइल होता है, शास्त्रीय रूप से। आपको यह निर्दिष्ट करना चाहिए कि क्या उत्तर ऐसा मान सकते हैं।
लिन

@ लीन चूँकि प्रायश्चित्त के बाद पैर हमेशा नहीं होता है इसलिए मैंने जानबूझकर इसे अस्पष्ट छोड़ दिया है। यह या तो हो सकता है।
तदर्थ गार्फ हंटर

@ 1) हाँ आप सही हैं 2) इसे पूरा शब्द समाप्त करना चाहिए। मैं जल्द ही इन्हें ठीक कर
दूंगा

जवाबों:


5

सीड, 402 392 374 359 363 334 333 बाइट्स

"गाओ, देवी, पेलेस के बेटे अकीलीस का गुस्सा और उसकी तबाही, जिसने अचियनों पर हजार गुना दर्द डाला, उनके बहुरूपियों में हीरो की आत्माओं के मजबूत आत्मा वाले घर में पहुंचा दिया, लेकिन उनके शरीर को कुत्तों की नाजुक दावत दी गई। सभी पक्षियों की, और ज़ीउस की इच्छा उस समय के बाद से पूरी हुई जब पहली बार संघर्ष एट्रेअस के बेटे और पुरुषों के शानदार अकीलस के विभाजन में खड़ा था। "

- होमर (द इलियड); उलझन में है कि यह उद्धरण यहाँ क्यों है? नियमों की जाँच करें।

sed -E 's/[AEIOU]M? H?([AEIOU])/\1/g;s/X/cc/g;s/(^|[ AEIOU])I([AEIOU])/\1c\2/g;s/QUE( |$)/cv/g;s/A[EU]|E[IU]|OE|UI/-/g;s/[CPT]H|[BCDGPT][LR]|QU|[^-vAEIOU ]/c/g;s/ //g;s/ucc+/-/g;s/c//g;s/^[-u]([-u]|[vu]{2})[-u]([-u]|[vu]{2})[-u]([-u]|[vu]{2})[-u]([-u]|[vu]{2})[-u]([-u]|[vu]{2})[-u].$/-\1|-\2|-\3|-\4|-\5|-x/;s/[uv]/-/g;s/---/-vv/g'

बिल्कुल गोल्फ नहीं है, लेकिन यह नियमित अभिव्यक्तियों के रूप में दिए गए सभी नियमों को लागू करता है, जो कि समाधान तक पहुंचने के लिए sed बस एक-एक करके चलता है। यह प्रत्येक पंक्ति को स्वतंत्र रूप से संभालता है, इसलिए पूरे मल्टी-लाइन इनपुट को संसाधित कर सकता है।

उपयोग:

printf 'ARMA VIRUMQUE CANO TROIAE QUI PRIMUS AB ORIS
ITALIAM FATO PROFUGUS LAVINIAQUE VENIT
LITORA MULTUM ILLE ET TERRIS IACTATUS ET ALTO
VI SUPERUM SAEVAE MEMOREM IUNONIS OB IRAM
MULTA QUOQUE ET BELLO PASSUS DUM CONDERET URBEM
INFERRETQUE DEOS LATIO GENUS UNDE LATINUM
ALBANIQUE PATRES ATQUE ALTAE MOENIA ROMAE' | sed -E '<...>';

टूट - फूट:

sed -E "
# Apply Elision
 s/[AEIOU]M? H?([AEIOU])/\1/g;

# Convert into vowels (u, v or -) and consonants (c) according to the rules given
 s/X/cc/g;
 s/(^|[ AEIOU])I([AEIOU])/\1c\2/g;
 s/QUE( |\$)/cv/g;
 s/A[EU]|E[IU]|OE|UI/-/g;
 s/[CPT]H|[BCDGPT][LR]|QU|[^-vAEIOU ]/c/g;
 s/[A-Z]/u/g; # all remaining vowels are unknown

# Remove all spaces
 s/ //g;

# A vowel followed by 2 consonants before the next vowel is long
# (and we don't care if the last vowel is long or short)
 s/ucc+/-/g;

# Remove all consonants
 s/c//g;

# Look for a matching dactylic hexameter and insert pipe separators
 s/^\
[-u]([-u]|[vu]{2})\
[-u]([-u]|[vu]{2})\
[-u]([-u]|[vu]{2})\
[-u]([-u]|[vu]{2})\
[-u]([-u]|[vu]{2})\
[-u].\$/-\1|-\2|-\3|-\4|-\5|-x/;

# Substitute identified feet with the necessary long/short vowels
 s/[uv]/-/g;
 s/---/-vv/g
"

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

-vv|-vv|--|--|-vv|-x
-vv|-vv|--|-vv|-vv|-x
-vv|--|--|--|-vv|-x
-vv|--|-vv|-vv|--|-x
-vv|--|--|--|-vv|-x
--|-vv|-vv|-vv|-vv|-x
--|-vv|--|--|-vv|-x

ध्यान देने योग्य बात यह है कि मुझे परीक्षण मामलों 2 और 3 के लिए अलग-अलग परिणाम मिलते हैं, जो प्रश्न में शामिल नहीं होने वाले वैकल्पिक समाधान प्रतीत होते हैं। यह हो सकता है कि मैंने एक नियम की गलत व्याख्या की हो।
डेव

मुझे नहीं लगता कि टेस्ट केस 2 के काम के लिए आपका विस्तार। "PROFUGUS" में अंतिम "U" लंबा होना चाहिए क्योंकि अगले स्वर से पहले दो व्यंजन ("S" और "L") हैं। आपके विस्तार में आपके पास यह छोटा है। मैं अब तीसरे की जाँच कर रहा हूँ। वैसे भी अच्छा जवाब :)
तदर्थ गार्फ हंटर

@HeatWizard आह ठीक है, यह एक नियम था जिसके बारे में मैं सोच रहा था (पूछा जाना चाहिए) - मैं इसे अंतरिक्ष से 2 व्यंजन के लिए ले गया । ठीक करने के लिए काफी आसान है। मैं जल्द ही एक अपडेट पोस्ट करूंगा।
डेव

लगता है कि मैं भी एक बग था, जहां के बजाय vccvccvबन जाएगा - अब तय की। ऐसा लगता है कि यह आपके नमूने के साथ सभी पर सहमत है, लेकिन केस # 2 अब। -??--?
डेव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.