रैटटोड पाठ fexir


14

मुझे यह अजीब पाठ याद आता है जहाँ वीट रटेटोड लगते हैं:

मैं एक बुरी तरह से लिखा गया पाठ हूं। स्वरों के क्रम के साथ कुछ लंपट आदमी बजाते थे। कृपया मुझे ठीक करो!

इसलिए मुझे एक प्रैग्रोम की आवश्यकता होगी जो कि वीटोलेट (और 'y' अक्षर को जैसा लगता है) वापस लिख सकता है ताकि पाठ कर्कश हो सके।

Ouy ouyr chieco privedod ouy meka के फेफड़े को चुन सकते हैं एक cempleto pragrom (तो बस एक finctoun नहीं)। यांट्रे एक अनपिट फील्ड, एक टेक्स्ट फेली या कैममंड लेन हो सकता है। ऊटपटा मैया ओल्सा व्यारा ouy leki के रूप में।

कुएर्सो में से मैं एविलिड याना प्राग्रोम यूटपिटॉन्ग खराब ग्रंथों को लिखूंगा। वहाँ एक pragrom जो mekas ग्रंथों ouy एंडरस्टंड नहीं कर सकता में कोई वल्लिआ नहीं है। लेकिन ouy चाहें तो रैटमोड ग्रंथों में ouyr cemmonts और qeistouns को मिटा सकते हैं।


स्पष्टीकरण

  • आपका कार्यक्रम केवल ASCII पाठ को संभालने के लिए आवश्यक है।
  • इस प्रश्न के प्रयोजनों के लिए, निम्न वर्ण स्वर हैं: aeiouy
  • प्रत्येक शब्द के भीतर स्वरों की स्थिति को घुमाया जाना चाहिए। एक शब्द के रूप में क्या योग्य है, यह तय करने में कुछ लचीलापन है: न्यूनतम आवश्यकता यह है कि एक स्थान द्वारा अलग किए गए दो वर्ण अलग-अलग शब्दों में हैं, और a-zA-Zकेवल वर्णमाला वर्णों द्वारा अलग किए गए दो अक्षर वर्ण ( ) एक ही शब्द में हैं।
  • रोटेशन की वांछित दिशा नीचे परीक्षण मामलों से अनुमान लगाया जाना चाहिए।

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

इनपुट: I'm a badly written text. Some lunatic guy played with the order of vowels. Please fix me !
आउटपुट:I'm a bydla wrettin text. Semo lanituc gyu plyead with the erdor of vewols. Plaese fix me !

इनपुट: AeiOuy
आउटपुट:EioUya

इनपुट: Hyphenated-word
आउटपुट: Hephanetyd-wordयाHephanetod-wyrd


1
स्वर को परिभाषित करें ।
पीटर टेलर

5
मैं इस सेंटोक्स में "रक्षा" करता हूं।
हावर्ड

2
सवाल जानबूझकर अपारदर्शी है। यह देखते हुए कि कई संभावित परिभाषाएं हैं (दूसरों के बीच, aeiouAEIOUASCII / बेसिक कैलेंडर में संबंधित केवल 10 कोड-पॉइंट हैं ; उन कोड-पॉइंट्स जो बेसिक लैटिन और लैटिन -1 में किसी भी अन्य के पूरक हैं, जिनके पास उन मूल वर्णों को एक वर्णक के साथ जोड़ा गया है) प्रश्न स्पष्ट होना चाहिए।
पीटर टेलर

1
@PeterTaylor मैं मानती हूं ASCII
जॉन ड्वोरक

8
खेल समस्या का अनुमान लगाने के बारे में नहीं होना चाहिए। अक्सर पूछे जाने वाले प्रश्न देखें : " इस साइट पर सभी प्रश्न , एक प्रोग्रामिंग पहेली या एक कोड गोल्फ, होना चाहिए ... एक स्पष्ट विनिर्देश जो एक सही सबमिशन का गठन करता है।"
पीटर टेलर

जवाबों:


6

गोल्फस्क्रिप्ट, 68 67 57 वर्ण

" "/{..+{95&"AEIOUY"?)}:C,1>\{.C!!{96&\(31&@|}*}%\;}%" "*

इनपुट STDIN पर दिया जाना चाहिए। उदाहरण ( ऑनलाइन ):

> You!!! I'm a badly written text. Some lunatic guy played with the order of vowels. Please fix me !
Ouy!!! I'm a bydla wrettin text. Semo lanituc gyu plyead with the erdor of vewols. Plaese fix me !

5

रूबी, 91 90 वर्ण

$><<gets.gsub(/\S+/){|x|x.gsub(r=/[aeiouy]/i){|y|z=$'[r]||x[r];y>?Z?z.downcase: z.upcase}}

कॉफ़ीस्क्रिप्ट, 148 चॉसर

alert prompt().replace /\S+/g,(x)->x.replace r=/[aeiouy](?=(.*))/gi,(y,z)->((t=z.match r)&&t[0]||x.match(r)[0])[['toLow','toUpp'][y>'Z']+'erCase']()

कोई भी ussimtoans नहीं, सिवाय इसके कि "होलफ-सेरेक्ट" एक शब्द है, और न कि मेरा सल्तनत।

परीक्षा:

> To test this program, simply enter a long sentence that appears half-broken
  To test this pragrom, sympli enter a long sentence that eppaars holf-brekan

> No MaTtEr HoW mUcH cAsE yOu uSe, It WoRkS
  No MeTtAr HoW mUcH cEsA oUy eSu, It WoRkS

रूबी कोड के बारे में: 1) $&दूसरे gsub()ब्लॉक के y पैरामीटर के बजाय 2 वर्णों का उपयोग करके ; 2) के ?Zबजाय का उपयोग करके स्पेयर 1 वर्ण 'Z'
मैनटवर्क

@ मैनटवर्क का $&उपयोग नहीं किया जा सकता क्योंकि इसका उपयोग करने से पहले इसे बदल दिया जाता है। z=$'[r]इसे बदल देता है। के बारे में ?Z- धन्यवाद, मैं पूरी तरह से इस वाक्यविन्यास के बारे में भूल गया था।
जॉन ड्वोरक

उफ़। पता नहीं कैसे मैं इसे कल परीक्षण किया तो काम करने के लिए दिखाई दिया ...
मैनटवर्क

2

हास्केल, 159 वर्ण

मैं उम्मीद के मुताबिक कम नहीं था, लेकिन मैंने इसे वैसे भी पोस्ट करने का फैसला किया:

import Data.Char
f s=let(v,t)=foldr g(v,[])s in t
g x(v,t)=last$(v,x:t):[(x,c v:t)|c<-[toUpper,toLower],x`elem`map c"AEIOUY"]
main=interact$unwords.map f.words

Ungolfed संस्करण:

import Data.Char

rotateVowels :: String -> String
rotateVowels word = result
  where (vowel, result) = foldr step (vowel, []) word
        step ch (vowel, rest)
          | ch `elem` "AEIOUY" = (ch, toUpper vowel : rest)
          | ch `elem` "aeiouy" = (ch, toLower vowel : rest)
          | otherwise          = (vowel, ch : rest)

main = interact $ unwords . map rotateVowels . words

यह एक अच्छा उदाहरण है कि कैसे आलसी मूल्यांकन आपको शांत चालें कर सकता है। में rotateVowelsहर बार, एक नया स्वर पाया जाता है, यह, बाईं ओर पर पारित हो जाता है, जबकि यह एक सही से आने के साथ की जगह। गुना से आउटपुट का यह हिस्सा वापस इनपुट के रूप में खिलाया जाता है ताकि सबसे बाईं ओर का स्वर सही के लिए प्रतिस्थापन बन जाए।

(vowel, result) = foldr step (vowel, []) word
 ^^^^^                        ^^^^^
 this part of the output      is part of the input

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