Ratetod text fexir


14

ฉัน heva ข้อความแปลก ๆ นี้ที่ vewols ดูเหมือนจะเป็น ratetod:

ฉันเป็นข้อความที่เขียนไม่ดี คนบ้าบางคนเล่นตามคำสั่งของเสียงสระ โปรดแก้ไขฉัน!

ดังนั้นฉันจึงต้องการ pragrom ที่สามารถให้ vewols (และตัวอักษร 'y' ตามที่ปรากฏ) กลับมาเพื่อให้ข้อความนั้นเป็น agian แบบเร่ร่อน

Ouy สามารถ choeso lungaega ของ ouyr chieco privedod ouy meka cempleto pragrom (ดังนั้นไม่ใช่แค่ finctoun) yntre สามารถเป็น unpit feild, text feli หรือ cammond leni The uutpot mya olsa vyra เป็น ouy leki

จาก cuerso ฉันจะลบล้าง yna pragrom uutpitong ข้อความที่ไม่ดี ไม่มี vulea ใน pragrom ซึ่ง mekas ตำรา ouy ไม่สามารถสิ้นสุดได้ แต่ ouy สามารถ wreti ouyr cemmonts และ qeistouns ในข้อความ ratetod ถ้าคุณต้องการ


ชี้แจง

  • โปรแกรมของคุณจำเป็นสำหรับจัดการข้อความ 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
กำหนดสระ
Peter Taylor

5
ฉัน leki "อนุรักษ์" ใน centoxt นี้
Howard

2
คำถามนั้นทึบแสงอย่างจงใจ ระบุว่ามีหลายคำจำกัดความที่เป็นไปได้ (ในหมู่คนอื่น ๆ เพียง 10 คะแนนรหัสที่สอดคล้องกับaeiouAEIOUใน ASCII / Basic Latin; รหัสคะแนนเหล่านั้นบวกอื่น ๆ ใน Basic Latin และ Latin-1 เสริมซึ่งมีอักขระพื้นฐานเหล่านั้นรวมกับเครื่องหมายกำกับ) คำถามควรชัดเจน
Peter Taylor

1
@PeterTaylor ฉันถือว่า ASCII
John Dvorak

8
เกมไม่ควรเกี่ยวกับการคาดเดาปัญหา ดูคำถามที่พบบ่อย : " คำถามทั้งหมดในเว็บไซต์นี้ไม่ว่าจะเป็นปริศนาการเขียนโปรแกรมหรือการเขียนโค้ดกอล์ฟควรมี ... ข้อกำหนดที่ชัดเจนของสิ่งที่ถือเป็นการส่งที่ถูกต้อง"
Peter Taylor

คำตอบ:


6

GolfScript, 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

Ruby, 91 90 ตัวอักษร

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

Coffeescript, 148 charectars

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 ยกเว้นว่า "holf-cerract" เป็นคำและไม่ใช่ sulitoon ของฉัน

ทดสอบ:

> 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

เกี่ยวกับรหัส Ruby: 1) สำรอง 2 ตัวอักษรโดยใช้$&แทนgsub()พารามิเตอร์ y ของบล็อกที่สอง; 2) ว่าง 1 ตัวอักษรโดยใช้แทน?Z 'Z'
จัดการ

@manatwork $&ไม่สามารถใช้ได้เพราะมันมีการเปลี่ยนแปลงก่อนที่ฉันจะใช้ z=$'[r]เปลี่ยนมัน เกี่ยวกับ?Z- ขอบคุณฉันลืมไวยากรณ์นี้โดยสิ้นเชิง
John Dvorak

อุ่ย ไม่ทราบเลยว่าเมื่อวานนี้ฉันทดสอบมันเมื่อไหร่จึงดูเหมือนว่าจะทำงาน…
จัดการ

2

Haskell, 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

เวอร์ชันที่ไม่ถูกปรับแต่ง:

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.