แก้ไข Meeesesessessessesseesse ที่ได้รับการยอมรับ upp teeexexextext


38

นี่คือแรงบันดาลใจจากMonday Mini-Golf # 6: Meeesesessess upp teeexexextext

พื้นหลัง

ETHProductionsมีปัญหาในการป้อนข้อความบนหน้าเว็บปกติของเขา เมื่อใดก็ตามที่เขาใช้ตัวเลขหรือตัวอักษรข้อความจะได้รับการตอบรับอย่างล้นหลาม งานของคุณคือช่วยเขาพิมพ์เพื่อให้พฤติกรรมปกติสำเร็จ

การแปลงร่าง

การแปลงมีผลต่อการทำงานของตัวอักษรและตัวเลข ( [0-9A-Za-z]) คั่นด้วยอักขระที่ไม่ใช่ตัวอักษรและตัวเลข ในตัวอย่างต่อไปนี้บรรทัดแรกจะถูกแปลงเป็นวินาที (บรรทัดอื่นแสดงการแยกย่อยของการแปลง)

An12num:
Annn1n12n12nn12nn12nun12nun12numn12num
A
 nn
   n1
     n12
        n12nn12n
                n12nun12nu
                          n12numn12num

โดยเฉพาะอย่างยิ่งตัวอักษรและตัวเลขใด ๆ หลังจากที่ครั้งแรกในการทำงานจะเปลี่ยนเป็นระยะทั้งเพื่อให้ห่างไกลยกเว้นตัวอักษรตัวแรก นอกจากนี้หากตัวละครเป็นตัวอักษร (ตรงข้ามกับหลัก) ตัวละครจะกลายเป็นสองครั้งที่วิ่ง

โชคดีที่ backspace จะลบตัวอักษรตัวสุดท้ายและจะเป็นการรีเซ็ตจุดเริ่มต้นของการรัน

งาน

เวลานี้หน้าที่ของคุณคือไม่ต้องทำการเปลี่ยนแปลง คุณจะต้องส่งคืนข้อความที่เข้ารหัสซึ่งหากเปลี่ยนรูปจะส่งผลให้เกิดการป้อนข้อมูลแทน เอาต์พุตจะต้องสั้นที่สุดเท่าที่จะเป็นไปได้โดย\<char>นับเป็นอักขระตัวเดียว

ข้อความถูกเข้ารหัสดังนี้:

\                   -> \\
backspace character -> \b
linefeed            -> \n

คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น, รับอินพุตผ่าน STDIN (หรือทางเลือกที่ใกล้เคียงที่สุด), อาร์กิวเมนต์บรรทัดคำสั่งหรืออาร์กิวเมนต์ของฟังก์ชันและส่งผลลัพธ์ผ่าน STDOUT (หรือทางเลือกที่ใกล้เคียงที่สุด), ค่าส่งคืนของฟังก์ชันหรือพารามิเตอร์

กรณีทดสอบ

แต่ละกรณีทดสอบคือสองบรรทัดอันแรกเป็นอินพุตเอาต์พุตที่สอง

Heeeeeelp me. It shouldn't be messed up.
Hee \blp\b me\b. It\b sh\bou\bld\bn't be\b me\bss\bed\b up\b.

alert("Hello, world!");
al\ber\bt("He\bll\bo, wo\brl\bd!");

1223234234523456
123456

6
มันถูกนิยามไว้อย่างดี แต่ทำไมไม่มีคำตอบ?
Akangka

1
อย่างใดฉันก็คิดถึงเรื่องนี้; สปินออกดี! บางทีฉันอาจลองเขียนคำตอบในภายหลัง
ETHproductions

สิ่งนี้ทำให้ฉันนึกถึงเวลาที่เพื่อนของฉันส่งข้อความผ่าน UDP
TRGWII

1
ฉันคิดว่ากรณีทดสอบสุดท้ายของคุณต้องมีการแก้ไข คุณรวมอักขระตัวแรก ( 1ทุกครั้ง) ในการวิ่ง
Leif Willerts

ฉันไม่เข้าใจสิ่งที่ฉันควรจะทำ ... ขอโทษ คุณสามารถเพิ่มอินพุตและเอาต์พุตและเพิ่มตัวอย่างด้วยคำอธิบายได้ไหม? ขอโทษ
Yassin Hajaj

คำตอบ:


10

CJam, 207

{_,1>{:E1<_0{:I2$,+E=:C+:R1>C'9>)*+:P,E,<{EP#{L0}{PRI)1}?}{PE#L{R8cP,E,-*+}?0}?}g}&}:U;LqS+'a+{_'[,_el^A,s+&,V={+}{s\V!:V{L{:BU_aL?B,,1>Bf{_2$<U_{_W=8>S8c+*+\@>j+}{?;}?}+{,}$0=}j}|\}?}%s'\8cN++'\"\bn"f+er-2<

ลองออนไลน์

คำอธิบาย:

เกือบลืมที่จะเขียนสิ่งนี้: p

ปัญหาได้รับการแก้ไขในหลายขั้นตอน:

  • ข้อความจะถูกแยกออกเป็นการวิ่งของตัวอักษรและตัวเลข (ลองเรียกว่าคำ) และการวิ่งของอักขระที่ไม่ใช่ตัวอักษรและตัวเลข (ไม่ใช่คำ)
  • ไม่ใช่คำที่พิมพ์ตามที่พวกเขาเป็นและคำได้รับการแก้ไข
  • การแก้ไขคำนั้นเกิดขึ้นซ้ำ ๆ (พร้อมการบันทึก): แบ่งคำนั้นออกเป็น 2 ชิ้นในทุก ๆ ทางที่เป็นไปได้ (รวมทั้งอันที่ว่างเปล่าอันที่ 2) พยายามที่จะแยกส่วนอันแรกออก (ดูด้านล่าง) แก้ไขอันที่สอง - ถอยกลับหากจำเป็น ใช้วิธีแก้ปัญหาย่อยที่สั้นที่สุด
  • การแยกชิ้นส่วนหมายถึงการค้นหาสตริงของตัวอักษรและตัวเลขที่น้อยที่สุดตามด้วยแบ็คสเปซบางอัน (แต่ไม่มีแบ็กสเปซอยู่ตรงกลาง) ที่เมื่อมีการเลอะเทอะ มันทำด้วยอัลกอริทึมโลภอย่างง่ายเริ่มจากซ้ายไปขวาสร้างสตริงที่ไม่มีการสอดแทรกและเวอร์ชันที่ยุ่งเหยิงในแบบคู่ขนานและกำหนดอักขระที่จำเป็นต่อไปในแต่ละขั้นตอน บางชิ้นไม่สามารถปลดอาวุธ

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