Вступ
Більшість гольфістів із кодом додають пояснення до своїх заяв, тому легше зрозуміти, що відбувається. Зазвичай кодові лінії йдуть зліва, а відповідне пояснення - праворуч з якимсь роздільником. Щоб це виглядало красиво, роздільники знаходяться в одному стовпчику. Також довгий текст пояснення зазвичай переноситься на наступний рядок, тому читачам не потрібно прокручувати горизонтально, щоб усе прочитати.
Однак, коли ви хочете відредагувати це пояснення, оскільки ви зробили кілька божевільних гольфів, ви часто закінчуєте витрачати час, щоб зробити своє пояснення ще раз Оскільки це дуже повторюване завдання, ви хочете написати програму для цього.
Змагання
Враховуючи кілька рядків коду з поясненням та роздільником, виведіть добре відформатований код із поясненням.
Приклад
Вхідні дані
shM-crz1dc4. "ANDBYOROF # z = введення
rz1 # перетворити вхід у великі регістри
cd # розділений вхід на пробіли
c4. "ANDBYOROF # створити список слів із упакованого рядка, який слід ігнорувати
- # відфільтруйте ці слова
hM # візьміть лише першу букву всіх слів
s # об'єднайте їх в один рядок
Вихідні дані
shM-crz1dc4. "ANDBYOROF # z = введення
rz1 # перетворити вхід у великі регістри
cd # розділений вхід на пробіли
c4. "ANDBYOROF # створити список слів із упакованого рядка, який має бути
# проігноровано
- # відфільтруйте ці слова
hM # візьміть лише першу букву всіх слів
s # об'єднайте їх в один рядок
Одне cookie для першого, хто може дізнатися, що робить цей код.
Алгоритм форматування
- Знайдіть найдовший рядок коду (виключаючи пояснення та пробіли між кодом та роздільником).
- Додайте 5 пробілів після цього рядка коду та додайте відповідний роздільник з поясненням. Це тепер контрольна лінія.
- Відрегулюйте кожен інший рядок до цієї контрольної лінії, щоб сеператори знаходилися в одному стовпчику.
- Оберніть усі рядки, що перевищують 93 символи, до нового рядка таким чином:
- Знайдіть останнє слово, кінець якого знаходиться у стовпці 93 або нижче.
- Візьміть усі слова після цього і переведіть їх до нового рядка з провідним роздільником і правильним проміжком. Пробіл між цими двома словами має бути видалено, тому перший рядок закінчується символом слова, а другий рядок починається з одного після роздільника.
- Якщо отриманий рядок все ще довший, ніж 93 символи, повторіть те саме, поки кожен рядок не перевищить 94 символи.
Примітки
- Слово складається з символів, що не містять пробілів. Слова розділені одним пробілом.
- Загортання слів завжди можливе. Це означає, що жодне слово не є настільки довгим, яке б унеможливило обгортання.
- Вхід буде містити тільки ASCII для друку і не матиме жодних пробілів
- Розділювач з’явиться лише один раз у рядку.
- Хоча пояснення може мати необмежену довжину, роздільник і код можуть мати лише комбіновану максимальну довжину
93 - 5 = 87символів. 5 символів - це проміжки між кодом та роздільником. Код і роздільник завжди матимуть принаймні один символ. - Вхід може містити порожні рядки. Вони ніколи не містять жодних символів (за винятком нового рядка, якщо ви приймаєте введення як рядок ряду) Ці порожні рядки також повинні бути присутніми у висновку.
- У кожному рядку буде якийсь код, роздільник та пояснення. Виняток становлять порожні рядки.
- Ви можете взяти дані в будь-якому розумному форматі, доки він не буде попередньо оброблений. У своїй відповіді зрозумійте, яким саме ви користуєтесь.
- Виведенням може бути рядок з рядком або список рядків.
Правила
- Дозволена функція або повна програма.
- Правила вводу / виводу за замовчуванням .
- Застосовуються стандартні лазівки .
- Це кодовий гольф , тому виграє найменший байт. Tiereaker є більш раннім поданням.
Тестові справи
Формат введення тут - це список рядків, що представляють рядки та окремий рядок для роздільника. Обидва розділені комою. Вихід - це список рядків.
['shM-crz1dc4. "ANDBYOROF # z = вхід', '', 'rz1 # перетворити вхід у великі регістри', 'cd # розділений вхід на пробіли', 'c4." ANDBYOROF # створити список слів із упакованого. рядок, який слід ігнорувати ',' - # відфільтрувати ці слова ',' hM # візьміть лише першу букву всіх слів ',' s # з'єднайте їх в одну рядок '], "#" -> [' shM-crz1dc4 . "ANDBYOROF # z = вхід", "", "rz1 # перетворити вхід у великі регістри", "cd # розділити введення на пробіли", "c4." ANDBYOROF # створити список слів із упакованого рядка, який повинен бути " , '# ігнорується', '- # відфільтруйте ці слова ',' hM # візьміть лише першу букву всіх слів ',' s # приєднайте їх до одного рядка '] ['codecodecode e # Пояснення', 'sdf dsf sdf e # A Дуже дуже-дуже-дуже-дуже-дуже-дуже-довгий-довгий-довгий-довгий-довгий довгий довге пояснення, і це стає все довше і довше', '', 'деякі більше codee # та ще декілька пояснень '], "e #" -> [' codecodecode e # Пояснення ',' sdf dsf sdf e # A Дуже дуже-дуже-дуже-дуже-дуже-дуже довго-довго-довго-довго ',' e # long довго довге довге довге пояснення, і воно триває все довше ',' e # і довше ',' ',' ще трохи коду e # та ще кілька пояснень ']
Щасливе кодування!
length of the longest code-line + 5. Це стосується також рядків, які містять лише пояснення, оскільки вони були завернуті.