(ได้รับแรงบันดาลใจจากความท้าทายนี้ )
ในความท้าทายเริ่มแรกคุณต้องทำซิปแนวนอนอย่างไรก็ตามเมื่อมองลงไปที่ hoodie ของฉันซิปของฉันก็จะแนวตั้งมากขึ้น (และหักนิดหน่อย): P
อินพุต
คุณจะได้รับสตริงเดียว ( s
) และคู่ของจำนวนเต็ม ( a
และb
) ในรูปแบบใด ๆ ที่ไหน:
a < (length-of-s / 2)
b <= ((length-of-s / 2) - (a + 1)) / 6
ผลผลิตและเกณฑ์การให้คะแนน
โปรแกรมของคุณอาจเป็นโปรแกรมเต็มรูปแบบหรือฟังก์ชั่นที่สร้างสตริงเดี่ยวที่มีการจัดรูปแบบที่ถูกต้องหรืออาร์เรย์ (หนึ่งรายการต่อบรรทัด) ที่คุณเลือก ช่องว่างนำหน้าและต่อท้ายและบรรทัดใหม่เป็นตัวเลือกตราบใดที่อักขระของเอาต์พุตทั้งหมดเข้าแถว เช่น.
["f r"],["u e"],["l p"],["l p"],["y i"],[" o z "],[" p n "],[" e "]
หรือ
"f r\nu e\nl p\nl p\ny i\n o z \n p n \n e "
เป็นเอาต์พุตที่ยอมรับได้สำหรับกรณีทดสอบ 1
ช่องโหว่มาตรฐานเป็นสิ่งต้องห้ามและรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ คำตอบที่ไม่มีคำอธิบายใด ๆ จะไม่สามารถชนะได้
คำอธิบาย
ในการสร้างซิปคุณต้องลบช่องว่างหรืออักขระบรรทัดใหม่ออกจากสตริงก่อน จากนั้นพับครึ่งให้เป็นเช่นนี้ (ดูกรณีทดสอบ 1 อีก)
abcde fgh ij klmnopqr
กลายเป็นสองสายด้านล่างสังเกตว่าในช่วงครึ่งหลังจะกลับรายการ
abcdefghi
และ rqponmlkj
จากนั้นเริ่มต้นที่จุดเริ่มต้นของแต่ละสตริงเราวางอักขระที่ทำดัชนีไว้เหมือนกันจากแต่ละสตริงย่อยลงในหนึ่งบรรทัดโดยมีระยะห่างที่กำหนดดังนี้:
[0] a r -- (a-3) five spaces
[1] b q -- (a-2) three spaces
[2] c p -- (a-1) one space
[3] d -- (a)
[4] o
[5] e
[6] n
etc...
นั่นทำให้ฐานสำหรับซิปของเรา ตอนนี้จำนวนเต็มและa
b
a
เป็นที่ตั้งของรหัสไปรษณีย์ของเรา เพื่อกำหนดตำแหน่งของซิปเราใช้ดัชนีของบรรทัดเอาท์พุทของเราเป็นจุดเพื่อปิดซิปของเรา เช่นวงเล็บสี่เหลี่ยมจัตุรัส[3]
ในตัวอย่างด้านบนของฉันคือตำแหน่งที่ zip
ก่อนที่ซิปของเราจะปิดลงซิปด้านบนจะต้องอยู่ที่ช่องว่างห้าช่องจนกว่าจะถึงจุดa-2
ที่มันปิดไปถึง 3 ช่องว่างและa-1
เมื่อถึง 1 ช่อง เพื่อให้ชัดเจนในตัวอย่างข้างต้นa = 3
(0-indexed)
b
คือจำนวนรูในซิปของฉัน ในการสร้างรูใน zip เราแบ่งสตริงออกอีกครั้งด้วยระยะห่างบางส่วน
เริ่มต้นด้วยดัชนีของหลุมตัวอย่างในขณะที่h
เราเพิ่มระยะห่างของh-1
หนึ่งช่องว่างh
เป็น 3 ช่องว่างและh+1
กลับไปที่ช่องว่างหนึ่งออกจากh-2
และh+2
มีเพียงหนึ่งอักขระต่อบรรทัดตามที่พวกเขาถูกนับเป็นส่วนหนึ่งของหลุม
หลังจากซิปและระหว่างแต่ละหลุมจะต้องมีช่องว่างของตัวละครหนึ่งตัวเพื่อให้ซิปของเราเชื่อมต่อกันอย่างสมบูรณ์ระหว่างรู
คุณต้องเลือกดัชนีของรู แต่พวกมันทั้งหมดต้องอยู่ในส่วน 'ปิด' ของซิป
Again using 'abcdefghi' and 'rqponmlkj'
[0] a r -- (open)
[1] b q -- (closing)
[2] c p -- (closing)
[3] d -- zip
[4] o -- gap
[5] e -- start of hole (h-2)
[6] n f -- one space (h-1)
[7] m g -- three spaces (hole h)
[8] l h -- one space (h+1)
[9] k -- end of hole (h+2)
[10] i -- gap
[11] j
ฉันหวังว่าทุกอย่างเข้าท่าถ้าไม่ถาม ในความคาดหมายของคำถามคุณอาจสังเกตเห็นว่าตัวละครp
ในตัวอย่างที่สองของฉันมีอยู่ในสตริงย่อยที่สองอย่างไรก็ตามปรากฏที่จุดเริ่มต้นของบรรทัดนี้มีจุดประสงค์คุณต้องทำตามลำดับ 1-2-1-2- 1-2 โดยรับตัวละครจากแต่ละครึ่งโดยไม่คำนึงถึงตำแหน่งในเอาต์พุต
กรณีทดสอบ
"fully open zipper", 7, 0 | "fully closed zipper", 0, 0
fullyope reppizn | fullyclos reppizde
|
f r *Note: i particularly like this | f
u e example as it shows the reversing | r
l p of the second half of the string | u
l p causes the words to wrap from top | e
y i left to the bottom and back up | l
o z the right side | p
p n | l
e | p
| y
| i
| c
| z
| l
| d
| o
| e
| s
- คอลัมน์ 1: "ซิปแบบยาวแตกที่ไม่ควรมีอยู่บนเสื้อฮู้ดตัวไหน", 24, 0
- คอลัมน์ 2: "Lorem ipsum dolor sit amet, consipetur aditiscing elit. Mauris faucibus molestie mi. Aliquam nec fringilla ipsum", 15, 5
:
s e | L m
t i | o u
u d | r s
p o | e p
i o | m i
d h | i a
l t | p l
y n | s l
l e | u i
o c | m g
n e | d n
g d | o i
u y | l r
n n | o f
b a | r c
r n | s
o o | e
k t | i
e s | n t
n i | m a
z x | a m
i e | u
p t | e
p n | q
e | t
d | i
r | ,
l | l c
t | A o
u | . n
h | i
o | s
a | m
h | e e
t | c i
s | t t
| e
| s
| t
| s
| u
| l
| r
| o
| a
| m
| d
| s
| i
| u
| p
| b i
| i s
| c c
| u
| i
| a
| n
| f
| g
| s
| e
| i
| l r
| i u
| t a
| .
| M
แก้ไข: เพิ่มกรณีทดสอบ
"abcde fgh ij klmnopqr","3","1"
a r
b q
c p
d
o
e
n f
m g
l h
k
i
j