Враховуючи рядок, ваше завдання - згорнути її в зигзагоподібну структуру, як описано нижче.
Складання в зигзаг
Візьмемо рядок "Mississippi"
як приклад:
По-перше, виведіть найдовший префікс, що складається лише з унікальних символів:
Mis
Коли ви дістанетесь до першого дублюючого символу C , проігноруйте його та виведіть найдовший префікс, що складається з унікальних символів решти рядка (
issippi
) по вертикалі, під першим виникненням C :Mis i s
Повторіть процес, чергуючи горизонтальне та вертикальне продовження. Але тепер будьте обережні (на кроці 1), щоб продовжувати виводити горизонтально від останнього появи дублюючого символу, який не обов'язково є останнім, як у цьому випадку:
Mis i sip ----- Mis i sip i
Правила
- Рядок містить лише символи для друку ASCII, але не містить пробілів.
- Ви можете змагатися з будь-якою мовою програмування і можете приймати введення та надавати вихід будь-яким стандартним методом та у будь-якому розумному форматі 1 , беручи до уваги, що ці лазівки за замовчуванням заборонені. Це код-гольф , тому найкоротше подання (у байтах) на кожну мову виграє.
- 1 Введення: Рядок / Список символів / все, що ваша мова використовує для представлення рядків. Вихід: рядок з рядком, список рядків, що представляють рядки або список списків символів / рядки довжиною-1, але, будь-ласка, включіть у свою відповідь симпатичну версію коду, якщо це можливо.
- Щодо додаткових пробілів, вихід може містити:
- Провідні / трейлінг нових рядків
- Пробіли в кожному рядку / в кінці
- Послідовне число провідних прогалин в кожному рядку
- Ви повинні почати виводити горизонтально, ви не можете починати вертикально.
Тестові справи
Вхідні дані:
"Ідеально" "Міссісіпі" "Дивацтва" "Дрібниці" "Cthulhu" "PPCG" "pOpOpOpOpOpOp" "ABCCCE" "ABCCCECCEEEEC" "abcdcebffg" "abca" "AAAAAAAA"
Відповідні результати:
Перф c т
Міс i ковток i
Од е т
Трив а л е т
Cthul у
П С Г
пО OpO pOp p
ABC С Е
ABC CCE E EC
а Б В Г е б fg
абс
А АА А
ABCcde
"A" ≠ "a"
. Вихід для цього ABCcde
був би простоABCcde
AAAAAAAA
b
, так як ви повинні розглядати лише дублікати в рядку , що залишився , тобто після "розгалуження". Як тільки ви досягнете другогоc
, ви виводите найдовший префікс унікальних символів решти рядка , який єebffg
(таким чином виводячиebf
вертикально і продовжуючи горизонтально після цього), тому вам не доведеться турбуватися про символи з тієї частини рядка, яка вже було виведено перед перемиканням орієнтації. Якщо вам все ще здається незрозумілим, я зроблю ще покроковий приклад із цим тестовим прикладом.