สงครามศักดิ์สิทธิ์ได้รับการต่อสู้กับช่องว่างกับแท็บ (และแน่นอนว่าพื้นที่นั้นมีความเหนือกว่าอย่างชนะชนะ) - Alex A.
Sโอม PEO พี le ยังคงปฏิเสธที่จะccept ที่ WHI ค h คือ CL อี Arly s upreme คุณเพิ่งได้รับ ไฟล์โดยใช้ Incor ใหม่ CT, ขโฆษณาและ INF อีรูปแบบของ Rior WHI ทีเอสเพซและตอนนี้tเขาต่ออี nts ของไฟล์Rจปนเปื้อนและเจ๊ง
คุณตัดสินใจว่าคุณอาจแสดงให้คนที่ส่งไฟล์ถึงคุณว่าพวกเขาผิดแค่ไหน - อย่างรุนแรง
ลักษณะ
ตามชื่อเรื่องความท้าทายของคุณคือการใช้ไฟล์ที่มีแท็บหนึ่งแท็บขึ้นไป:
this is an evil tab onoes
และทำลายพวกเขาอย่างไร้ความปราณีเป็นชิ้น ๆ :
this is an evil tab
o
n
o
e
s
โปรดทราบว่าซอฟต์แวร์ Stack Exchange จะเปลี่ยนแท็บตามตัวอักษรให้เป็นช่องว่างสี่ช่อง (เพราะถูกต้อง) ดังนั้นแท็บภายในโพสต์นี้จะแสดงเป็นช่องว่างสี่ช่อง อย่างไรก็ตามการป้อนข้อมูลให้กับโปรแกรมของคุณจะมีแท็บจริง
ท้าทาย
การแก้ปัญหาควรใช้สายเดียวเป็นอินพุตซึ่งอาจมี ASCII ที่พิมพ์ได้บรรทัดใหม่และแท็บ จะมีอย่างน้อยหนึ่งแท็บในอินพุต
เอาต์พุตควรเป็นสตริงเดียวกันโดยใช้กฎต่อไปนี้:
เริ่มเคอร์เซอร์ที่พิกัด (0,0) และทิศทางที่ถูกต้อง พิกัดคือ (คอลัมน์, แถว), ทำดัชนีเป็นศูนย์, และทิศทางเป็นวิธีที่คุณควรเลื่อนเคอร์เซอร์หลังจากพิมพ์อักขระ
สำหรับอักขระแต่ละตัวในสตริง:
หากเป็นบรรทัดใหม่ให้ย้ายไปที่พิกัด (0, n) โดยที่ n คือจำนวนบรรทัดใหม่ในสตริงจนถึงตอนนี้ (รวมถึงบรรทัดนี้) และรีเซ็ตทิศทางไปทางขวา
ถ้าเป็นแท็บให้เอาท์พุทสองช่องว่างหมุนทิศทางเคอร์เซอร์ 90 องศาตามเข็มนาฬิกาแล้วเอาท์พุทที่ว่างเพิ่มอีกสองช่องเพื่อแยกแท็บออกครึ่งหนึ่ง นี่เป็นตัวอย่างที่แสดงให้เห็นซึ่งแท็บถูกแสดงเป็น
--->
และเว้นวรรค·
ดังนี้foo--->bar--->baz
กลายเป็น
foo··· · b a r · · zab··
มิฉะนั้นเพียงเอาอักขระที่เคอร์เซอร์ออกและเลื่อนเคอร์เซอร์ไปหนึ่งก้าวในทิศทางปัจจุบัน
เนื่องจากคุณกำลังอ่านสตริงตั้งแต่ต้นจนจบจึงเป็นไปได้ที่คุณจะต้องเขียน "ด้านบน" ของอักขระที่มีอยู่ซึ่งไม่เป็นไร ตัวอย่างเช่นการป้อนข้อมูล
foo--->bar
spaces are superior
ควรส่งผลให้ผลลัพธ์ของ
foo
b
spaces are superior
r
คุณอาจเลือกว่า "แท็บที่เสียหาย" ควรเขียนทับตัวละครอื่น ๆ - ความตั้งใจดั้งเดิมคือสิ่งที่พวกเขาทำไม่ได้ แต่สเป็คไม่ชัดเจนดังนั้นนี่คือการตัดสินใจของคุณ
นอกจากนี้หลังจากใช้กฎเหล่านี้คุณอาจจะ
เพิ่มหรือลบช่องว่างต่อท้ายมากเท่าที่คุณต้องการ
เพิ่มบรรทัดใหม่ต่อท้ายสูงสุดหนึ่งบรรทัด
อินพุตจะไม่มีช่องว่างต่อท้าย มันจะไม่มีการขึ้นบรรทัดใหม่หรือการนำหน้า คุณอาจคิดเสมอว่าคุณไม่จำเป็นต้องเขียนลงในคอลัมน์หรือแถวที่น้อยกว่า 0 (เช่นปิดหน้าจอ)
กรณีทดสอบ
แท็บในกรณีทดสอบนี้แสดงว่าเป็น--->
เพราะมิฉะนั้น SE จะกลืนไป
การป้อนข้อมูล:
Test case. Here's a tab--->there's a tab--->everywhere a tab--->tab--->this is some more text
blah
blah
blah blah blah blah blah blah--->blaah--->blaah--->blah--->blaaaaah--->blah--->blah--->blah--->blah--->blah
เอาท์พุท:
Test case. Here's a tab
blah
blah t
blah blah blah blah blah blah
blaablah
r b
e l b
h 'h a l
a sa a a
l l h h
this is some mobe tbxt
haalhalb
b a
a b
t
bat a erehwyreve
นิเมชั่นแฟนซี:
กฎระเบียบ
- นี่คือโค้ดกอล์ฟดังนั้นโค้ดที่สั้นที่สุดเป็นไบต์จะเป็นผู้ชนะ!
(0,0)
คุณหมายความว่าเราต้องล้างคอนโซลก่อนหรือคุณแค่หมายถึงตำแหน่งเริ่มต้นของเคอร์เซอร์โดยที่?