(Натхненний цим викликом досить сильно )
У оригінальному виклику ви повинні були зробити горизонтальну блискавку, проте, дивлячись на мій балахон, моя блискавка набагато вертикальніше (і трохи зламана): 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]
у моєму вище прикладі, - там, де знаходиться блискавка.
Перш ніж блискавка ближче до кінця, вищевказана блискавка повинна залишатися на відстані п'яти просторів, поки вона не досягне місця, a-2
де вона закриється до 3-х просторів і a-1
де вона закриється на 1 простір. Щоб було зрозуміло, у наведеному вище прикладі a = 3
(0-індексується)
b
- кількість отворів у моїй блискавці. Щоб створити отвір в блискавці, ми знову розділили рядок з деяким проміжком.
Починаючи з індексу прикладу отвору, коли 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, 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: Додано тестові випадки
"abcde fgh ij klmnopqr","3","1"
a r
b q
c p
d
o
e
n f
m g
l h
k
i
j