Завдяки вашій допомозі у виклику Mark My Mail , PPCG-Post успішно відбиває всі свої посилки генерованими штрих-кодами!
Тепер прийшов час їх розшифрувати.
У цьому виклику вашій програмі буде надано штрих-код, сформований із виклику Позначити мою пошту , декодувати його та повернути закодоване ціле число.
Але пильнуйте! Штрих-код може бути догори дном ...
4-штатні штрих-коди
У випадку, якщо ви пропустили виклик кодування, вам потрібно знати, про які штрих-коди ми говоримо. Штрих-код 4 стану - це рядок рядків з чотирма можливими станами, кожен з яких представляє ціле число бази-4:
| |
Bar: | | | |
| |
Digit: 0 1 2 3
Надані в ASCII, штрих-коди займуть три рядки тексту, використовуючи |
символ pipe ( ) для представлення частини бар, а пробіл ( ) для представлення порожнього розділу. Між кожним баром буде один пробіл. Приклад штрих-коду може виглядати так:
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Щоб перетворити штрих-код назад у ціле число, яке він кодує, картографуйте кожен рядок у відповідній базовій 4 цифрі, з'єднайте їх та перетворіть у десяткові.
Оскільки кожен штрих-код також буде представляти різний штрих-код, коли перевернутий ногами, ми реалізуємо послідовність запуску / зупинки, щоб орінація може бути обчислена. Для цього завдання ми будемо використовувати послідовність старту / зупинки, визначену Australia Post: кожен штрих-код починається і закінчується 1 0
послідовністю.
Змагання
Ваше завдання полягає в тому, щоб, давши штрих-код ASCII 4 стану, проаналізувати його і повернути ціле число, яке воно кодує - по суті зворотній бік Позначити мою пошту .
Але, щоб приправити речі, є улов - штрих-код може бути наданий догори ногами. Як і в реальному світі, зчитувач штрих-кодів (ваша програма) буде залишений визначити правильну орієнтацію, використовуючи послідовність запуску / зупинки.
Приклад:
Дано наступний штрих-код:
| | | | | | | | | | | | | | | | | | | |
Ми чітко бачимо, що перша і остання пари цифр є 0, 2
і ні 1, 0
. Це означає, що штрих-код перевернуто догори ногами, тому ми повинні повернути його на 180 градусів (а не просто перевертати кожен штрих), щоб досягти правильної орієнтації:
| | | | | | | | | | | | | | | | | | | |
Тепер ми можемо почати розшифровку. Ми відображаємо кожен рядок на відповідний базовий 4 цифри, ігноруючи послідовності запуску / зупинки, оскільки вони не кодують дані.
| | | | | | | | | | | | | | | | | | | | - - 2 1 0 3 0 2 3 - -
Ми з'єднуємо це з цілим числом базової-4 2103023
, а потім перетворюємо його у десяткове подання 9419
для остаточного результату.
Правила
- Вхід завжди буде дійсним, 4-штатним штрих-кодом, поданим у ASCII, як зазначено вище, з описаною послідовністю початку / зупинки.
- Ви можете попросити проміжні місця або смугасті лінії, а також зворотний новий рядок - який би формат підходив для вашого гольфу.
- Він може бути або не мати правильну орієнтацію - ваша програма повинна визначити, чи слід її читати догори дном, використовуючи послідовність запуску / зупинки.
- Він не буде кодувати провідні нульові цифри в цілому цілому base-4.
- Ви можете взяти введення як список рядків або рядок з новими рядками.
- Вихід повинен бути цілим числом у стандартній цілій базі вашої мови, що представляє дані, кодовані штрих-кодом.
- Оскільки поштові марки невеликі і можуть вмістити на них дуже мало коду, ваш код повинен бути максимально коротким: це код-гольф - так що найкоротша програма (у байтах) виграє!
Випробування
| | | | | | | | | | | | | |
= 4096 (перевернутий)
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
= 7313145 (перевернутий)
| | | | | | | | | | | | | | | | | | | |
= 9419 (перевернутий)
| | | | | | | | | | | | | | | | | | |
= 990 (не перевернуте)
| | | | | | | | | | | | | | | | | | |
= 12345 (не перевернуте)
[String]
, [{#Char}]
, [{Char}]
, [[Char]]
?, З огляду на , що String
еквівалентно{#Char}