กลับคำทุกคำในบรรทัดเป็นกลุ่ม


9

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

ตัวอย่างเช่นอินพุต:

roF emos nosaer m'I gnisu a retcarahc-041 timil no siht noitseuq neve hguoht ti t'nseod evlovni .rettiwT RACECAR  

ควรกลับมา:

For some reason I'm using a 140-character limit on this question even though it doesn't involve Twitter. RACECAR  

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


1
"สำหรับวัตถุประสงค์ของคำถามนี้มันเป็นกลุ่มเท่านั้น" ดูเหมือนเป็นการ จำกัด ภาษาโดยไม่เจาะจงว่าเป็นการโพสต์การแข่งขันกอล์ฟรหัสปกติและถามเฉพาะคำตอบใน C. ( และฉันดูเหมือนจะไม่โดดเดี่ยวกับความคิดเห็นนี้ )
Martin Ender

27
ทำไม RACECAR ถึงไม่กลับด้าน
orlp

3
เพราะมันเป็นอาการปวดหลัง ลองย้อนกลับด้วยตัวคุณเอง
Joe Z.

2
ว้าวฉันโง่ Derp
orlp

7
@ orlp Lol ฉันคิดว่าคุณล้อเล่น
mbomb007

คำตอบ:


9

28 25 24 การกดแป้น

:se ri<CR>^qqct <C-r>"<Esc>f l@qq@q

มาโครแบบเรียกซ้ำฉันถือว่ามันCtrl- rนับเป็นหนึ่งการกดแป้น

ส่วนที่ยากที่สุดคือการทำให้แน่ใจว่าแมโครอยู่ในบรรทัดเดียวกันและไม่ทำลายส่วนที่เหลือของไฟล์


คุณสามารถใช้cEแทนct ถ้ามันไม่จบแมโคร แต่คุณสามารถใช้Wแทนf lการบันทึก 2 จังหวะ
Caek

@ Caek ผิด x2 คาดเดาสิ่งที่cEเมื่อเคอร์เซอร์อยู่ที่จุดเริ่มต้นของa retcarahc-041? และเดาว่าอะไรWจะเกิดขึ้นเมื่อเราอยู่ท้ายเส้น?
orlp

Eหมายเหตุทุน ตัวพิมพ์เล็กeจะไปจนถึงเส้นประเมืองหลวงEจะไปจนถึงที่ว่างถัดไป ฉันแค่ลองมันเพื่อยืนยัน
Caek

ลอง: :set ri<Enter>^qqct <C-r>"<Esc>W@qq@qสำหรับ 23.
Caek

@ Caek มันใช้งานไม่ได้ และเกี่ยวกับEฉันรู้ว่ามันทำอะไร ฉันหมายถึงว่าcE<C-r><Esc>จะกลายa retcarahc-041เป็น140-character aAKA มันจะสลับคำ
orlp

3

การกดแป้น 24 ครั้ง

ma:s/ /\r/g
V'a:!rev
gvJ

ฉันรู้ว่าคำถามนี้เก่ามาก แต่ฉันชอบ vimgolf ดังนั้นฉันจึงไม่สามารถโพสต์คำตอบสำหรับหนึ่งในความท้าทายเฉพาะเจาะจงของ vim บนเว็บไซต์ นอกจากนี้โซลูชันนี้ยังเชื่อมโยงกับ Orlp's

เช่นเดียวกับ Orlp กล่าวว่าส่วนที่ยากที่สุดคือการทำให้แน่ใจว่าส่วนที่เหลือของบัฟเฟอร์ไม่ได้แก้ไข หากไม่ใช่เพราะข้อ จำกัด นั้นเราก็ทำได้:

:s/ /\r/g
!{rev
V}J

(กดแป้น 19 ครั้ง) แต่เราต้องการเพิ่มอีกนิดเพื่อให้มันปลอดภัยกับบัฟเฟอร์ นี่ถือว่าเป็นสภาพแวดล้อมที่ unix

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