(Lấy cảm hứng khá nhiều từ thử thách này )
Trong thử thách ban đầu, bạn đã tạo ra một dây kéo ngang, tuy nhiên, nhìn xuống áo hoodie của tôi, dây kéo của tôi thẳng đứng hơn nhiều (và một chút bị hỏng): P
Đầu vào
Bạn sẽ được cung cấp một chuỗi ( s
) và một cặp số nguyên ( a
và b
) ở bất kỳ định dạng nào. Ở đâu:
a < (length-of-s / 2)
b <= ((length-of-s / 2) - (a + 1)) / 6
Đầu ra và chấm điểm
Chương trình của bạn có thể là một chương trình đầy đủ hoặc một hàm tạo ra một chuỗi với định dạng chính xác hoặc một mảng (một mục trên mỗi dòng) bạn chọn. Không gian hàng đầu và dấu và dòng mới là tùy chọn miễn là các ký tự của đầu ra tất cả xếp hàng. ví dụ.
["f r"],["u e"],["l p"],["l p"],["y i"],[" o z "],[" p n "],[" e "]
hoặc là
"f r\nu e\nl p\nl p\ny i\n o z \n p n \n e "
là đầu ra chấp nhận được cho trường hợp thử nghiệm 1
Các lỗ hổng tiêu chuẩn bị cấm và mã ngắn nhất tính bằng byte sẽ thắng. Bất kỳ câu trả lời mà không có lời giải thích sẽ không thể giành chiến thắng.
Giải trình
Để tạo khóa kéo, trước tiên bạn phải xóa mọi ký tự khoảng trắng hoặc dòng mới khỏi chuỗi. Và sau đó gấp nó lại một nửa như vậy (xem trường hợp thử nghiệm 1 để biết thêm)
abcde fgh ij klmnopqr
trở thành hai chuỗi bên dưới, chú ý nửa sau được đảo ngược.
abcdefghi
và rqponmlkj
Sau đó, bắt đầu từ đầu mỗi chuỗi, chúng ta đặt cùng một ký tự được lập chỉ mục từ mỗi chuỗi con vào một dòng với khoảng cách được xác định như sau:
[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...
Điều đó làm cho cơ sở cho dây kéo của chúng tôi. Bây giờ các số nguyên a
và b
.
a
là vị trí của zip của chúng tôi. Để xác định vị trí của khóa kéo, chúng tôi sử dụng chỉ mục của các dòng đầu ra làm điểm để đóng zip. ví dụ: dấu ngoặc vuông [3]
trong ví dụ trên của tôi là nơi chứa zip.
Trước khi khóa kéo của chúng tôi đến gần, khóa kéo ở trên phải duy trì ở một khoảng cách năm không gian cho đến khi nó đạt đến a-2
nơi nó đóng đến 3 không gian và a-1
nơi nó đóng lại thành 1 không gian. Để rõ ràng, trong ví dụ trên a = 3
(0-index)
b
là số lỗ trong dây kéo của tôi. Để tạo một lỗ trong zip, chúng tôi chia chuỗi ra một lần nữa với một số khoảng cách.
Bắt đầu với chỉ số của lỗ ví dụ khi h
chúng ta tăng khoảng cách h-1
đến một khoảng trắng , h
đến 3 khoảng trắng và h+1
quay lại một khoảng trắng , để lại h-2
và h+2
chỉ có một ký tự trên mỗi dòng khi chúng được tính là một phần của lỗ.
Sau zip và giữa mỗi lỗ phải có một khoảng cách của một ký tự để zip của chúng ta trông hoàn toàn được kết nối giữa các lỗ.
Bạn có thể chọn các chỉ số của các lỗ, nhưng tất cả chúng phải có mặt trong phần 'đóng' của khóa kéo.
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
Tôi hy vọng rằng tất cả có ý nghĩa, nếu không hỏi đi. Dự đoán các câu hỏi, bạn có thể nhận thấy rằng ký tự p
trong ví dụ thứ hai của tôi có trong chuỗi con thứ hai, tuy nhiên, xuất hiện ở đầu dòng của nó, điều này được dự định, bạn phải tuân theo trình tự 1-2-1-2- 1-2, lấy một ký tự từ mỗi nửa lần lượt bất kể vị trí của nó trong đầu ra.
Các trường hợp thử nghiệm
"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
- Cột 1: "dây kéo dài không bị ngắt một cách ngu ngốc không nên tồn tại trên bất kỳ chiếc áo hoodie đàng hoàng nào", 24, 0
- Cột 2: "Lorem ipsum dolor sit amet, consectetur adipiscing 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
EDIT: Đã thêm trường hợp kiểm tra
"abcde fgh ij klmnopqr","3","1"
a r
b q
c p
d
o
e
n f
m g
l h
k
i
j