ภาษา Geobitsianเป็นใหม่ที่บิดเบือนภาษาอังกฤษซึ่งคำแตกออกเป็นส่วน ๆ ซึ่งแต่ละส่วนจะต้องเริ่มต้นด้วยตัวอักษรที่แตกต่างกัน จากนั้นทุกครั้งที่ตัวอักษรเริ่มต้นตัวใดตัวหนึ่งปรากฏในสตริงอื่นตัวอักษรนั้นจะถูกแทนที่ด้วยส่วนที่สอดคล้องกันทั้งหมดของมัน
กระบวนการนี้เรียกว่าGeobitsizing
ตัวอย่างเช่นคำว่า " Geobits " อาจแบ่งออกเป็นgeo bitsและบทกวีไร้สาระ
Algy met a Bear
A Bear met Algy
The Bear was bulgy
The bulge was Algy
จะถูก Geobitsized ด้วย
Algeoy met a Bitsear
A Bitsear met Algeoy
The Bitsear was bitsulgeoy
The bitsulgeoe was Algeoy
เพราะทุกgกลายเป็นgeoทุกคนG(แม้จะมีผู้ใด) จะกลายเป็นGeoทุกคนbจะกลายเป็นbitsและทุกกลายเป็นBBits
โปรดทราบว่าการทดแทนแต่ละครั้งจะดำเนินการตามสตริงเดิมไม่ใช่ขั้นตอนกลางใด ๆ เช่นถ้าgeoได้รับgboแทนb's bitsสร้างขึ้นจะไม่ถูกแทนที่ด้วย
ท้าทาย
เขียนโปรแกรมหรือฟังก์ชั่นที่สามารถสร้างภาษา Geobitsian
ใช้สายอักขระบรรทัดเดียวที่ประกอบด้วยตัวอักษรตัวพิมพ์เล็ก (az) และช่องว่าง นี่คือคำที่ใช้เป็นอาร์กิวเมนต์ Geobitsizing โดยมีการเว้นวรรคเพื่อแยกเซกเมนต์ คุณสามารถสันนิษฐานได้ว่า:
- กลุ่มจะไม่ว่างเปล่า ดังนั้นช่องว่างจะไม่ติดกันหรืออยู่ที่จุดเริ่มต้นหรือจุดสิ้นสุดของสตริง
- แต่ละส่วนเริ่มต้นด้วยตัวอักษรที่แตกต่างกัน ดังนั้นจึงมีไม่เกิน 26
ตัวอย่างเช่นบางสายที่แบ่งกลุ่มที่ถูกต้องคุณจะต้องสนับสนุนการมีgeo bits, butt ner, alexและdo o r k nob(กลุ่มตัวอักษรเดียวไม่มีผล แต่ที่ถูกต้อง) แต่geo , butt ner, Alexและdo o r k n obไม่ถูกต้อง
โปรแกรมหรือฟังก์ชั่นของคุณยังต้องใช้สายอักขระอื่นเพื่อนำไปใช้กับ Geobitsizing และพิมพ์หรือส่งคืนภาษา Geobitsian ที่เกิดขึ้น
คุณสามารถสันนิษฐานว่าสตริงนี้มีการขึ้นบรรทัดใหม่และASCII ที่พิมพ์ได้เท่านั้น
โปรดจำไว้ว่ากรณีตัวอักษรต้องได้รับการเก็บรักษาไว้จากอินพุตไปยังเอาต์พุต
นี่คือตัวอย่างเพิ่มเติมที่ใช้no pro gr am m ingเป็นอาร์กิวเมนต์ Geobitsizing:
[empty string] → [empty string]
i → ing
I → Ing
Mmmm, mmm... MmmmMMM: m&m!→ Mmmm, mmm... MmmmMMM: m&m!(ไม่มีการเปลี่ยนแปลง)
People think bananas are great, don't you? → Proeoprole thingnok bamnoamnoams amre grreamt, dono't you?
Pet a Puppy
Google Wikipedia
↓
Proet am Prouproproy
Groogrle Wingkingproedingam
โปรดทราบว่าผลลัพธ์ควรเหมือนกันไม่ว่าจะมีการจัดเรียงอาร์กิวเมนต์อย่างไรเช่นing pro m no am grควรให้ผลลัพธ์แบบเดียวกันกับด้านบน
รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
\\b${l}(\\S+)แม้ว่าจะมีค่าใช้จ่าย 5 ไบต์
abra cadabra, !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ควรครอบคลุมทุกกรณีและมีจำนวนมากหากพยายามใช้ regexes ...
["no", "pro", "gr", "am", "m", "ing"]