Văn bản Ratetod fexir


14

Tôi heva văn bản wierd này, nơi vewols dường như là ratetod:

Tôi là một văn bản viết xấu. Một số kẻ mất trí đã chơi theo thứ tự nguyên âm. Xin hãy sửa tôi!

Vì vậy, tôi cần một pragrom có ​​thể phê chuẩn các vewols (và chữ 'y' như nó có vẻ) để văn bản trở thành agian raadeble.

Ouy có thể chọn lungaega của ouyr chieco privateedod ouy meka một cempleto pragrom (vì vậy không chỉ là một fincoun). Các yntre có thể là một yếu đuối unpit, một feli văn bản, hoặc leni cammond. Các uutpot mya olsa vyra như ouy leki.

Của cuerso tôi sẽ anvilid yna pragrom uutpitong văn bản xấu. Không có âm hộ trong một pragrom mà mekas văn bản ouy không thể kết thúc. Nhưng ouy có thể wreti ouyr cemmonts và qeistouns trong các văn bản ratetod nếu ouy muốn.


Làm rõ

  • Chương trình của bạn chỉ được yêu cầu để xử lý văn bản ASCII.
  • Đối với mục đích của câu hỏi này, các ký tự sau đây là nguyên âm: aeiouy
  • Vị trí của các nguyên âm trong mỗi từ nên được xoay. Có một sự linh hoạt trong việc quyết định những gì đủ điều kiện là một từ: yêu cầu tối thiểu là hai ký tự cách nhau bởi một khoảng trắng bằng các từ khác nhau và hai ký tự chữ cái ( a-zA-Z) chỉ cách nhau bởi các ký tự chữ cái nằm trong cùng một từ.
  • Hướng quay mong muốn nên được suy ra từ các trường hợp thử nghiệm dưới đây.

Các trường hợp thử nghiệm

Đầu vào: I'm a badly written text. Some lunatic guy played with the order of vowels. Please fix me !
Đầu ra:I'm a bydla wrettin text. Semo lanituc gyu plyead with the erdor of vewols. Plaese fix me !

Đầu vào: AeiOuy
Đầu ra:EioUya

Đầu vào: Hyphenated-word
Đầu ra: Hephanetyd-wordhoặcHephanetod-wyrd


1
Xác định nguyên âm .
Peter Taylor

5
Tôi leki "bảo tồn" trong centoxt này.
Howard

2
Câu hỏi cố tình mờ đục. Cho rằng có một số định nghĩa có thể (trong số các định nghĩa khác, chỉ có 10 điểm mã tương ứng với aeiouAEIOUASCII / Latin Latin cơ bản; các điểm mã đó cộng với bất kỳ định nghĩa nào khác trong Bổ sung Latin và Latin-1 cơ bản có các ký tự cơ bản kết hợp với dấu phụ) , câu hỏi nên rõ ràng.
Peter Taylor

1
@PeterTaylor Tôi giả sử ASCII
John Dvorak

8
Trò chơi không nên là về việc đoán vấn đề. Xem Câu hỏi thường gặp : "Tất cả các câu hỏi trên trang web này, cho dù là câu đố lập trình hay chơi gôn mã, đều phải có một Đặc điểm rõ ràng về những gì cấu thành một bài nộp đúng."
Peter Taylor

Câu trả lời:


6

GolfScript, 68 67 57 ký tự

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

Đầu vào phải được đưa ra trên STDIN. Ví dụ ( trực tuyến ):

> 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 ký tự

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

Coffeescript, 148 charectar

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']()

Không có ussimtoans, ngoại trừ "holf-cerract" là một từ, và không phải là sulitoon của tôi.

Kiểm tra:

> 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

Về mã Ruby: 1) dự phòng 2 ký tự bằng cách sử dụng $&thay cho gsub()tham số y của khối thứ hai ; 2) phụ tùng 1 ký tự bằng cách sử dụng ?Zthay vì 'Z'.
manatwork

@manatwork $&không thể được sử dụng vì nó đã bị thay đổi trước khi tôi sử dụng nó. z=$'[r]thay đổi nó Liên quan ?Z- cảm ơn, tôi hoàn toàn quên mất cú pháp này.
John Dvorak

Giáo sư. Không biết hôm qua tôi đã thử nó như thế nào nên đã xuất hiện để làm việc
chế tạo vào

2

Haskell, 159 ký tự

Không kết thúc khá ngắn như tôi mong đợi, nhưng tôi đã quyết định đăng nó bằng mọi cách:

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

Phiên bản bị đánh cắp:

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

Đây là một ví dụ hay về cách đánh giá lười biếng có thể cho phép bạn thực hiện các thủ thuật hay. Trong rotateVowelsmỗi lần tìm thấy một nguyên âm mới, nó được chuyển sang bên trái, trong khi thay thế nó bằng một nguyên âm đến từ bên phải. Phần đầu ra từ nếp gấp này được đưa trở lại làm đầu vào để nguyên âm ngoài cùng bên trái trở thành thay thế cho phần ngoài cùng bên phải.

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.