คุณเป็นคนแรกหรือเปล่า


36

ฉันรัก Cypher ง่าย ๆ มันสนุกมากที่ได้อ่านคำที่มนุษย์อ่านไม่ได้และเติมเต็มช่องว่าง ...

Ot wes thi bist uf tomis, ot wes thi wurst uf tomis, 
ot wes thi egi uf wosdum, ot wes thi egi uf fuuloshniss, 
ot wes thi ipuch uf biloif, ot wes thi ipuch uf oncridaloty, 
ot wes thi siesun uf loght, ot wes thi siesun uf derkniss, 
ot wes thi sprong uf hupi, ot wes thi wontir uf dispeor, 
wi hed ivirythong bifuri as, wi hed nuthong bifuri as, 
wi wiri ell guong dorict tu hievin, wi wiri ell guong dorict thi uthir wey – 
on shurt, thi piroud wes su fer loki thi prisint piroud, 
thet sumi uf ots nuosoist eathurotois onsostid un ots biong riciovid, 
fur guud ur fur ivol, on thi sapirletovi digrii uf cumperosun unly.

กฎนั้นง่ายมาก:

  • ยอมรับข้อความบางข้อความเป็นอินพุต (ตัวอักษร ascii ตัวอักษรตัวพิมพ์ใหญ่ / เล็กและเครื่องหมายวรรคตอน)
  • สำหรับเสียงสระแต่ละอันให้หมุนไปที่เสียงสระถัดไปหรือกลับไปที่จุดเริ่มต้น
    • a => e
    • e => i
    • i => o
    • o => คุณ
    • u => a
  • เสียงสระตัวใหญ่เป็นตัวพิมพ์ใหญ่
  • เอาท์พุทข้อความหลังจากการแปลงเหล่านี้
  • ไม่จำเป็นต้องสนับสนุนสำเนียง
  • ตัวละครอื่น ๆ ทั้งหมดควรจะไม่เปลี่ยนแปลง
  • ลองทำในจำนวนไบต์ที่น้อยที่สุด
  • ภาษาอะไรก็ได้ที่คุณชอบ

กรณีทดสอบ

It was the best of times, it was the worst of times,
it was the age of wisdom, it was the age of foolishness,
it was the epoch of belief, it was the epoch of incredulity,
it was the season of light, it was the season of darkness,
it was the spring of hope, it was the winter of despair,
we had everything before us, we had nothing before us,
we were all going direct to heaven, we were all going direct the other way –
in short, the period was so far like the present period,
that some of its noisiest authorities insisted on its being received,
for good or for evil, in the superlative degree of comparison only.

ออก:

Ot wes thi bist uf tomis, ot wes thi wurst uf tomis, 
ot wes thi egi uf wosdum, ot wes thi egi uf fuuloshniss, 
ot wes thi ipuch uf biloif, ot wes thi ipuch uf oncridaloty, 
ot wes thi siesun uf loght, ot wes thi siesun uf derkniss, 
ot wes thi sprong uf hupi, ot wes thi wontir uf dispeor, 
wi hed ivirythong bifuri as, wi hed nuthong bifuri as, 
wi wiri ell guong dorict tu hievin, wi wiri ell guong dorict thi uthir wey – 
on shurt, thi piroud wes su fer loki thi prisint piroud, 
thet sumi uf ots nuosoist eathurotois onsostid un ots biong riciovid, 
fur guud ur fur ivol, on thi sapirletovi digrii uf cumperosun unly.

ใน:

The quick brown fox jumps over the lazy dog.

ออก:

Thi qaock bruwn fux jamps uvir thi lezy dug.

ใน:

Home is where the heart is.

ออก:

Humi os whiri thi hiert os.

ใน:

Boaty McBoatface

ออก:

Buety McBuetfeci

ใน:

AEIOUaeiou

ออก:

EIOUAeioua

ใน:

Programming Puzzles And Code Golf

ออก:

Prugremmong Pazzlis End Cudi Gulf


4
อืมมม ภาษาอังกฤษโบราณ
iammax

10
ยังอ่านง่ายกว่า Beowulf
Smeato

4
ดูเหมือนนักแปลกีวี่กับฉัน
Magoo

1
ฉันชอบวิธีที่ "ชั่วร้าย" เมื่อยันต์ถึง "ivol" ออกเสียงได้อย่างมีประสิทธิภาพเช่นเดียวกัน
Enrico Borba

คำตอบ:



22

MS-SQL, 51 ไบต์

ใช้งานได้กับ SQL 2017 หรือสูงกว่า:

SELECT TRANSLATE(v,'AEIOUaeiou','EIOUAeioua')FROM t

ฟังก์ชั่นใหม่นี้จะTRANSLATEทำการแทนที่ตัวละครแต่ละตัวดังนั้นจึงเหมาะอย่างยิ่งสำหรับความท้าทายนี้

การป้อนข้อมูลผ่านทางตารางที่มีอยู่ก่อนทีกับคอลัมน์ varchar วี , ต่อกฎ IO ของเรา

ในกรณีนี้ตารางจะต้องสร้างขึ้นโดยใช้การเปรียบเทียบขนาดตัวพิมพ์เล็ก -ใหญ่โดยรันบนเซิร์ฟเวอร์ที่คำนึงCOLLATEถึงขนาดตัวพิมพ์ใหญ่หรือโดยใช้คำสำคัญ (ไม่นับรวมกับจำนวนอักขระ):

CREATE TABLE t(v varchar(max) COLLATE Latin1_General_CS_AS)

แก้ไข : SSMS จะตัดใบเสนอราคาดังกล่าวข้างต้นมีความยาวเมื่อกลับผลใน "ผลกับข้อความ" หน้าต่างนี้คือการตั้งค่าของลูกค้าไม่ได้เป็นปัญหาในโปรแกรมของฉัน

ในการแก้ไขให้ไปที่Tools > Options > Query Results > SQL Server > Results to Textและเพิ่ม "จำนวนอักขระสูงสุดที่ปรากฏในแต่ละคอลัมน์"


1
ฉันตกใจอย่างแท้จริงว่า SQL นั้นใกล้เคียงกับการแข่งขันสำหรับสิ่งนี้ นอกจากนี้ยังเป็นฟังก์ชั่นเด็ด! ขอขอบคุณที่บอกเรา :)
Nic Hartley

@NicHartley ใช่พวกเขาดูเหมือนจะเพิ่มฟังก์ชั่นที่มีประโยชน์สองสามอย่างในแต่ละรุ่น คุณสามารถซ้อนมันด้วยREPLACEเทคนิคบางอย่างเช่น: REPLACE(TRANSLATE(v,'1234567890','xxxxxxxxxx'),'x','')กำจัดตัวเลขทั้งหมดออกจากสตริงตัวอย่างเช่น ยังคงยาว แต่สั้นกว่าREPLACEs ที่ซ้อนกัน 10 รายการ
BradC


14

Haskell , 52 ไบต์

(a:b)!c|a/=c=b!c|1>0=b!!0
a!b=b
map("aeiouaAEIOUA"!)

ลองออนไลน์!

ลินน์บันทึกฉันไบต์ที่สองโดยชี้ให้เห็นว่าสั้นกว่า!!0head

คำอธิบาย

หากคุณไม่เคยเขียนรหัสใน Haskell สิ่งนี้อาจดูเหมือนกองการพูดปด ดังนั้นก่อนอื่นมาปลดมันแล้วทำลายมันลง:

(a:b)!c
 |   a/=c   = b!c
 |otherwise = b!!0
a!b=b
map("aeiouaAEIOUA"!)

ครั้งแรกที่เรามีฟังก์ชั่น!ซึ่งจะใช้เวลาสตริงและตัวอักษรs cจับคู่รูปแบบแรกของเรายอมรับอินพุตหากสตริงไม่ว่างเปล่า cหากสายไม่ว่างเราเปรียบเทียบตัวอักษรตัวแรกในการ ถ้าเป็นตัวอักษรตัวแรกไม่เท่ากับcที่เราโยนมันและเรียกอีกครั้งกับส่วนที่เหลือของสตริงและ! cถ้ามันเท่ากันเราจะคืนอักขระที่สองในสตริง

การจับคู่รูปแบบถัดไปของเราจะจับสตริงในกรณีอื่นทั้งหมดนั่นคือถ้าสตริงนั้นว่างเปล่า cในกรณีนี้เราก็กลับมา

ทั้งหมดในทุกฟังก์ชั่นนี้จะใช้เวลาเป็นตัวอักษรcและสตริงsและส่งกลับตัวละครหลังจากที่เกิดขึ้นครั้งแรกของในc sถ้าเราผ่านสิ่งนี้ไปด้วยaeiouaAEIOUAมันจะทำการเข้ารหัสของเราในตัวละครตัวเดียว เพื่อให้ฟังก์ชั่นทั้งหมดของเราเราต้องแมปสิ่งนี้กับสตริง


12

จอประสาทตา10 9 8 ไบต์

T`uo`vVA

ลองออนไลน์!

บันทึก 1 ไบต์ขอบคุณ Neil! และอีกไบต์ขอบคุณมาร์ติน!

เรติน่าเวอร์ชั่นใหม่มีคลาสสระซึ่งทำให้ผลลัพธ์สั้นลงเล็กน้อย การถอดเสียงยังใช้ประโยชน์จากคลาส "อื่น ๆ " ดังนั้นtoคลาสจึงดูเหมือน "aeiouAEIOUA" ในขณะที่fromคลาสนั้นมีลักษณะ "uaeiouAEIOUA"

นี้ไม่ได้ก่อให้เกิดปัญหาใด ๆ ตั้งแต่ที่สองuทำแผนที่เพื่อAจะไม่ได้ทำมาตั้งแต่ได้รับการแมปแล้วua


9 T`_o`uvUVไบต์:
Neil

นี่คือคำตอบสั้น ๆ อย่างน่าทึ่ง!
AJFaraday

@ Neil ฉลาดขอบคุณ! ฉันคิดว่าการใส่_ชุดจากนั้นจะปฏิบัติต่อมันอย่างแท้จริง แต่ดูเหมือนว่าจะไม่ทำเช่นนั้น
FryAmTheEggman

3
คุณสามารถโกนได้อีกหนึ่ง แต่ฉันไม่สามารถผูกสแต๊
มาร์ตินเอนเดอร์

@ มาร์ตินเอนเดอร์ขอบคุณ! นั่นคือการตั้งค่าที่ชาญฉลาดโดยผสมระหว่างสองอย่างนี้ ฉันยังไม่ได้ลองใช้งานYมากนักดังนั้นฉันจะยิงในวันพรุ่งนี้
FryAmTheEggman

9

Perl 5 + -p, 24 23 ไบต์

y;AEIOUaeiou;EIOUAeioua

ลองออนไลน์

-1 ไบต์ขอบคุณ @DomHastings


1
เราไม่นับ-pเป็น +1 อีกต่อไป แต่เราคิดว่าคำตอบนี้อยู่ใน "Perl 5 + -p"
Erik the Outgolfer

1
สิ่งนี้ยังทำงานใน sed
Kritixi Lithos

1
หากคุณใช้;เป็นตัวคั่นคุณสามารถบันทึกไบต์!
Dom Hastings

อัปเดตแล้ว @Cquackack ไม่ได้อีกต่อไป
Nahuel Fouilleul

6

Python 3, 62 ไบต์

lambda x:x.translate(str.maketrans('aeiouAEIOU','eiouaEIOUA'))

จัดทำตารางการแปล (พจนานุกรม) ด้วยวิธีการstrคงที่str.maketransของ แปลอักขระที่เกี่ยวข้องเป็นอักขระปลายทาง


สิ่งนี้ทำหน้าที่ I / O ได้ที่ไหน
reinierpost

@reierierpost มันเป็นฟังก์ชั่น อินพุตนั้นผ่านxพารามิเตอร์ ในไพ ธ อนฟังก์ชั่นแลมบ์ดาไม่จำเป็นต้องมีข้อความสั่งคืนสินค้า
mypetlion

6

C, 85 76 67 65 64 ไบต์

f(char*c){for(;*c;)putchar(1[index("AEIOUAaeioua",*c++)?:c-2]);}

ท่าเรือเควิน Cruijssen เป็น Java คำตอบ ลองออนไลน์ได้ที่นี่

ขอบคุณKevin Cruijssenสำหรับการเล่นกอล์ฟ 9 ไบต์ถึงChristophสำหรับการเล่นกอล์ฟ 11 ไบต์และถึงแมวเพดานสำหรับการเล่นกอล์ฟ 1 ไบต์

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

f(char* c) { // function taking a char array as parameter and implicitly returning an unused int
    for(; *c ;) // loop over the input
        putchar(1 [index("AEIOUAaeioua", * c++) ?: c-2]); // find the first pointer to the current char in the vowels string, NULL if not present; if it's not NULL, print the next vowel, otherwise just print the char
}

1
ดูเหมือนว่าจะไม่มีส่วนขยายมาตรฐานจาก gcc ฉันรู้ว่ามันมาจาก php และก็ลองมัน
Christoph

1
@Christoph ฉันชอบการใช้การเรียกซ้ำ แต่คุณไม่แน่ใจว่าเราสามารถแสดงผลลัพธ์\0ได้ นอกจากนี้ยังใช้ไม่ได้เมื่อคอมไพล์ด้วยเสียงดังกราว: tio.run/##S9ZNzknMS///…
OOBalance

1
@ คริสโตฟ: ฉันอยากรู้ว่าพฤติกรรมที่ไม่ได้กำหนดคืออะไรฉันจึง debugged เวอร์ชันเสียงดังกราวหลังจากถอดมันออกไปอีก const char *res = strchr("AEIOU...", 0)ส่งกลับตัวชี้ไปที่ terminator ในสตริงตัวอักษร putchar(res[1])อ่านที่ส่วนท้ายของสตริงตัวอักษร ด้วย gcc ดูเหมือนว่าจะเกิดขึ้นเพื่อหาศูนย์อีกไบต์และมันเกิดขึ้นกับการทำงาน แต่ด้วยเสียงดังกราวก็จะได้รับ73 'I'(อาจมาจากmainตัวอักษรสตริง "มันคือ ... " แต่ฉันไม่ได้ตรวจสอบ asm) ดังนั้นputcharไม่ส่งคืน 0 และในที่สุดเราก็ segfault เมื่อ*c++อ่านหน้าไม่ได้แมป
Peter Cordes

2
@PeterCordes ใช่ฉันรู้เกี่ยวกับมันที่นี่หลังจากมีข้อสงสัย อย่างไรก็ตามนี่อีก 2 f(char*c){for(;*c;)putchar(1[strchr("AEIOUAaeioua",*c++)?:c-2]);}ไบต์ที่บันทึกไว้ นั่นคือทั้งหมดที่ฉันเดา
Christoph

1
@Rogem a[b]==*(a+b)==*(b+a)==b[a]เพราะสับเปลี่ยนทรัพย์สินของนอกจากนี้ ดังนั้น1[...]==(...)[1]
ceilingcat



5

Python 2 , 79 68 67 ไบต์

-1 ไบต์ขอบคุณ @ArnoldPalmer

V='uaeiouAEIOUA'
print''.join((V[1:]+c)[V.find(c)]for c in input())

ลองออนไลน์!


67 ไบต์ นอกจากนี้ขออภัยหากคุณมีน้ำท่วมด้วยการแจ้งเตือนฉันยังไม่ได้โพสต์ความคิดเห็นในขณะที่และลืมวิธีการทำ
Arnold Palmer

@ArnoldPalmer ขอบคุณ! ไม่เป็นไรฉันออกไปแล้วและพวกเขาก็คิดถึงฉัน: D
Dead Possum




4

Japt 2.0, 25 21 ไบต์

ฉันสนุกกับการเล่นกอล์ฟกับ Shaggy

r\v@=`aeia`pu)g1+UbX

เรียกใช้ที่นี่



1
@Shaggy นั่นไม่ได้ทำงานกับสระใหญ่
โอลิเวอร์

1
ในกรณีที่ว่า ... 22 ไบต์
ปุย

1
@Shaggy นี่คือความสนุก ... 21 ไบต์
โอลิเวอร์

1
ดี! ฉันคิดว่านั่นเป็นครั้งแรกที่ฉันได้เห็นการS.p(f)ใช้
ปุย

4

Java 10, 97 87 ไบต์

s->{for(var c:s){var t="AEIOUAaeioua"+c+c;System.out.print(t.charAt(t.indexOf(c)+1));}}

-10 ไบต์หลังจากที่ถูกแรงบันดาลใจจาก@Arnauldคำตอบ JavaScript 's (ของเขา 60 ไบต์รุ่น)

ลองออนไลน์

คำอธิบาย:

s->{                         // Method with character-array parameter and no return-type
  for(var c:s){              //  Loop over the input characters
    var t="AEIOUAaeioua"     //  Temp-String containing the order of vowels 
                             //  (including additional 'A' and 'a'),
          +c+c;              //  appended with two times the current character
    System.out.print(        //  Print:
      t.charAt(              //   The character in String `t` at index:
         t.indexOf(c)+1));}} //    The (first) index of the current character in `t` + 1

4

05AB1E , 14 13 11 ไบต์

žMDÀ‡žMuDÀ‡

ลองออนไลน์!


1
คุณสามารถบันทึกไบต์ที่สองโดยเพียงแค่การป้อนข้อมูลที่เป็นสตริงหลายสายจึงมีความจำเป็นที่จะต้องไม่มี|และ»: ลองออนไลน์: 11 ไบต์
Kevin Cruijssen

@KevinCruijssen ขอบคุณ! นั่นไม่ใช่สิ่งที่ได้รับการแก้ไขในรุ่น 05AB1E ล่าสุดหรือไม่
Kaldo

ไม่มีความคิด tbh เริ่มต้นเพียง 05AB1E ตั้งแต่ประมาณต้นปีนี้ คุณสามารถถาม @Adnan ในการแชท 05AB1E ได้เมื่อมีการเพิ่มคุณสมบัตินี้หากคุณต้องการทราบ
Kevin Cruijssen



3

คางทูม 38 ไบต์

R T W $TR(T,"AEIOUaeiou","EIOUAeioua")

โดยปกติคางทูมไม่ได้เพิ่มการขึ้นบรรทัดใหม่เนื่องจากฉันไม่เห็นข้อกำหนดในการแยกอินพุตจากเอาต์พุตมันจะดูแปลก ๆ ในการเรียกใช้ครั้งแรก ตัวอย่างเช่นผลลัพธ์สำหรับกรณีทดสอบล่าสุดมีลักษณะดังนี้:

Programming Puzzles And Code GolfPrugremmong Pazzlis End Cudi Gulf

หากคุณไม่ต้องการเพิ่มการขึ้นบรรทัดใหม่ให้เพิ่มสองไบต์ดังนี้:

R T W !,$TR(T,"AEIOUaeiou","EIOUAeioua")

3

Vim + tpope / vim-abolishขนาด 30 ไบต์

:%S/{a,e,i,o,u}/{e,i,o,u,a}/g<cr>

โซลูชันสำรองขนาด 30 ไบต์เช่นกัน:

Oe,i,o,u<esc>|D:%s/{a,<C-r>"}/{<C-r>",a}/g

ตามmetaคำตอบที่เป็นกลุ่มสามารถใช้ปลั๊กอินที่ไม่มีการลงโทษแบบไบต์ นี้ไม่ได้เป็นคำตอบที่เป็นกลุ่ม แต่กลุ่ม + ยกเลิกคำตอบ


Abolish เป็นปลั๊กอินที่มีประโยชน์อย่างยิ่ง ส่วนของ READMEนี้อธิบายวิธีการทำงานของคำสั่งนี้ ( Subvertคำสั่ง) อย่างชัดเจน


3

CJam , 29 19 ไบต์

q"aeioua"_eu+_1m<er

ลองออนไลน์!

-10 ไบต์ขอบคุณ @Peter Taylor

คำอธิบาย:

q                       # take all input
 "aeioua"               # push vowel pairs
         _eu            # duplicate, uppercase
            +_          # concatenate, duplicate again
              1m<       # rotate left by 1
                 er     # transliterate

แม้ว่าคำถามจะไม่เจาะจงเกี่ยวกับอินพุต แต่ฉันคิดว่าคุณน่าจะใช้qแทนที่จะlใช้อินพุต กรณีทดสอบแรกดูเหมือนจะเป็นแบบหลายบรรทัด นอกจากนี้คุณสามารถร่นไป"eioua" _1m<ในความเป็นจริงคุณสามารถไปต่อและเล่นกอล์ฟกับq"aeioua"_eu+_1m<er
Peter Taylor

3

AutoHotkeyขนาด 24 ไบต์

AuotHotkey จะแทนที่ตัวอักษรโดยอัตโนมัติในลักษณะที่เล็กและใหญ่

a::e
e::i
i::o
o::u
u::a

2

PHP, 90 ไบต์

ลองออนไลน์

รหัส

function f($s){echo strtr($s,array_combine(str_split(UuAaEeIiOo),str_split(AaEeIiOoUu)));}

คำอธิบาย

function f($s){
 echo strtr(
       $s,                          #The string to operate
       array_combine(               #combining arrays
            str_split(UuAaEeIiOo),  #splitting this strings
            str_split(AaEeIiOoUu))
              # With array combine php creates an array like
              # ["U"=>"A", "a"=>"e"....and so on]
              # strtr can replace strings in a string, using an array with 
              # the values to replace and with what replace each value.
 );
}

75 ไบต์ถ้าวิ่งphp -rโดยใช้$argv

<?=strtr($argv,array_combine(str_split(UuAaEeIiOo),str_split(AaEeIiOoUu)));



2

PHP, 38 ไบต์

ค่อนข้างง่ายไม่สร้างสรรค์มากใช้strtrเพื่อแทนที่เสียงสระ:

<?=strtr($argn,aeiouAEIOU,eiouaEIOUA);

ทำงานด้วยecho '<input>' | php -nF <filename>หรือลองออนไลน์


สิ่งนี้ไม่ได้สมมติว่าอินพุตถูกกำหนดให้กับตัวแปรที่กำหนดไว้ล่วงหน้าargnหรือไม่? ถ้าเป็นเช่นนั้นนั่นไม่ถูกต้อง; คุณจะต้องผ่านสตริงเป็นอาร์กิวเมนต์และใช้$argv1]แทน
Shaggy

2
@Shaggy ไม่ถ้าคุณเรียกใช้ด้วยการ-Fตั้งค่าสถานะนั้นจะทำงานกับอินพุตในบรรทัดคำสั่ง จากเอกสาร PHP ในตัวเลือก : -F --process-file PHP file to execute for every input line. Added in PHP 5.ลองมันตัวแปรออนไลน์กำหนดเป็นเพียงเพราะบางคนไม่ได้มีการติดตั้งภายใน PHP และฉันไม่สามารถรับ-Fธงการทำงานใน TIO
Davіd

1
ขอบคุณ @ David - นั่นคือ "สิ่งใหม่" ของฉันสำหรับ PHP วันนี้ :)
ปุย

2

q / kdb +, 36 33 ไบต์

วิธีการแก้:

{(v,2#x)1+(v:"aeiouaAEIOUA")?x}@'

ตัวอย่าง:

q){(v,2#x)1+(v:"aeiouaAEIOUA")?x}@'"AEIOUaeiou"
"EIOUAeioua
q){(v,2#x)1+(v:"aeiouaAEIOUA")?x}@'"Programming Puzzles And Code Golf"
"Prugremmong Pazzlis End Cudi Gulf"

คำอธิบาย:

คิดออกดัชนีของสระเพิ่มหนึ่งที่จะผลักดันไปข้างหน้าและดัชนีในยังคงคิดว่าวิธีนี้สามารถปรับปรุงได้อย่างมีนัยสำคัญ ...

{(v,2#x)1+(v:"aeiouaAEIOUA")?x}@' / the solution
{                             }@' / apply lambda to each character of input
                            ?x    / look up x in...
          (                )      / do together
             "aeiouaAEIOUA"       / lookup list
           v:                     / save as v
        1+                        / add one
 (     )                          / do together
    2#x                           / take 2 copies of x
  v,                              / prepend v

โบนัส:

โซลูชันเก่าขนาด 36 ไบต์ (()) ของฉันซึ่งฉันคิดว่าค่อนข้างเจ๋ง แต่ต้องลงรายการเพื่อให้สามารถแข่งขันได้:

ssr/[;"uoiea%UOIEA%";"%uoiea%UOIEA"]

2

ถ่าน 35 ไบต์

UT≔AUOIEAauoieaσF¹¹⊞υ➙§σ⊕ι§σι▷SR⟦Sυ

ลองออนไลน์!

วิธีไร้เดียงสา

คำอธิบาย:

UT                                         Set trim option to on, so output won't be a rectangle
    ≔AUOIEAauoieaσ                          Assign "AUIOEAauioea" to s
                   F¹¹                      For i (ι) from 0 to 10
                       ⊞υ                   Push to u (initially empty list)
                          ➙                 Rule of:
                            §σ⊕ι            S[i + 1]
                                 §σι         to S[i]. This is so a->A gets overwriteen by a->e
                                    ▷SR⟦Sυ  Replace input as string using u (now a list of rules)

2

PHP , 76 ไบต์

$s=strtr($s,array_combine(str_split("aeiouAEIOU"),str_split("eiouaEIOUA")));

ลองดูสิ!

นี่คือสั้นที่สุดที่ฉันสามารถทำได้ใน PHP

$s = //overwrite $s variable ($s should be a defined string or input)
    strtr(  //strtr replaces key => value pairs from arrays in a string
        $s, //the string we are converting
        array_combine( //create an array with key value pairs, key should be original vowel letter and value should be it's replacement
            str_split("aeiouAEIOU") //turn vowels (lower and upper) into an array
            ,str_split("eiouaEIOUA") //turn vowel replacements into an array
        )
    );
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.