Чтение текста миллитекстового шрифта
Существует шрифт здесь , что соответствует каждый символ в один 1x5 пикселей блока. Он делает это (при условии, что вы используете ЖК-экран), используя каналы RGB каждого пикселя, чтобы расширить один пиксель на три вложенных столбца, по одному для каждого канала. Ваша задача - взять строку текста, закодированную этим шрифтом, и «расшифровать» ее.
Миллитекст Алфавит
CHARACTER: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
ENCODING: WYWBMRRMMMWYWYWWWMWBMRMYGYGYCWMMMMMW
MGBWMRRMMMMMRMRRRMGBMRWMMMMMRGMMMMMB
MGWWWWWBWWWYRMWWMWGBYRWMMYMYGGMMWGGG
MGRBBBMBMBMMRMRRMMGBMRMMMRWMBGMCWMGR
WWWWBWWBWWMYWYWRWMWWMWMMGRCMYGWBMMGW
Я сократил каждый цвет до одного символа (R = красный, G = зеленый, B = синий, C = голубой, Y = желтый, M = пурпурный, W = белый).
Формат ввода
Формат ввода для этого довольно открыт. В качестве входных данных вы можете использовать массив, содержащий каждый столбец, массив, содержащий каждую строку, a char[][]
или что-либо подобное. Вы также можете использовать полные слова «красный», «зеленый», «синий» с прописными / строчными буквами по вашему выбору (но это должно быть согласовано для каждого слова! Вы не можете использовать «КРАСНЫЙ», а также «зеленый»). или "синий").
Если ваш язык поддерживает его, вы также можете использовать цвета для ввода (однако это может сработать, я не знаю, что это не так).
Вы можете предположить, что ввод будет содержать ТОЛЬКО закодированные символы в алфавите выше (в частности, в выводе не будет пробелов или знаков пунктуации).
Выходной формат
Вы можете либо вывести строку, либо какой-нибудь символьный массив. Вы можете выбрать, являются ли буквы прописными или строчными, но все они должны иметь одинаковый регистр.
пример
MWRRGMGYRY
MRRRMMMMRM
WWRRMWMYRM -> HELLOWORLD
MRRRMWMMRM
MWWWGMGMWY
правила
Это код-гольф , поэтому выигрывает самый короткий ответ!
Тестовый набор
WMWGMWWMYYGMYWGMBMMYWYGMWYWMWRWWMYGW
GMRMMGRMMMMMMRMMBMWMRMMMRMGMRRMBMMMR
GWWMMGRYYYMWMWMGBMWYWMMMWYGWWRWGGMMM -> THEQUICKBROWNFOXJUMPEDOVERTHELAZYDOG
GMRWMGRMMMMWMRMMBMMRRMMCRMGMRRMRGMMM
GMWCWWWMYMGMMRGMWWMRWYGBWMGMWWMWGYGW
Ответы:
JavaScript (ES6),
103 100 93 9290 байтСохранено 9 байт благодаря @ShieruAsakoto
Принимает ввод как массив столбцов. Возвращает массив символов.
Попробуйте онлайн!
источник
-
исчезли! : Da=>a.map(s=>"H-L-D--VGQ87MR6TZ-KJ9WC05BUXF1YI2EON3S-A-P4"[parseInt(s,35)%1161%219%152%43])
.a=>a.map(s=>"UIR-L68N--W-X7B-FH-D-EZ--902-S4M5GJCQT3PKV-A1-YO"[parseInt(s,35)%464%107%99%52])
Желе , 50 байт
Попробуйте онлайн!
Монадическая ссылка, принимающая входные данные в виде списка столбцов и выводящая строку перевода Jelly. Ниже приведено полное объяснение, но оно основано на том факте, что каждый возможный набор из 5 букв уникален при преобразовании в кодовые точки, обратном преобразовании из десятичного числа в основную-256 и затем в моду 211.
Альтернатива с использованием фиксированного шрифта Арно (49 байт и тот же принцип).
объяснение
источник
dzaima / APL,
8079737271 байтПопробуйте онлайн!
источник
⊇
(похожая{⍵[⍺]}
), кроме этого, эти два файла содержат информацию об этом05AB1E ,
4544 байтаПопробуйте онлайн!
Принимает ввод как массив столбцов и выводит массив символов.
Объяснение:
источник
R ,
143128 байтПопробуйте онлайн!
Функция, принимающая вектор строк (соответствующий столбцам) в качестве входных данных, например:
Пояснение:
Выполнение следующей операции для каждой закодированной строки (например, 'CRGBY' = 'S'):
мы получаем следующую строку,
'#</Eb=,n9J.M4Z+%*V N[Hd\B?1Oj>KgRYT2'
где каждому символу соответствует'0123456789ABCDEFGHIJKLMNOPQR'
.Итак, код выполняет описанные операции над входными строками, а затем ищет их соответствия внутри,
'#</Eb=,n9J.M4Z+%*V N[Hd\B?1Oj>KgRYT2'
получая позиции в строке'0123456789ABCDEFGHIJKLMNOPQR'
.источник
Древесный уголь , 66 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Вводит в виде списка столбцов, оканчивающихся пустой строкой. Объяснение:
Вводите строки, пока одна из них не будет пустой.
Циклический индекс в строку,
OV EX8HSCF5IA L TG 17 M P9RB 4 K ZY2 0JW 63Q ND U
которая (с завершающим пробелом) имеет длину 56 символов.Выполните преобразование base-7, используя алфавит,
WMYCBGR
а затем последовательно уменьшите по модулю 360, 113, 71 и 56 через циклическое индексирование.Мой базовый 7-й подход оказался очень неудачным с фиксированным шрифтом @ Arnauld; после некоторых поисков я все еще был на 73 байтах. Используя подход @ Grimy, сократить это до 67 байтов. Однако в конце концов я нашел 66-байтовое решение:
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Вводите строки, пока одна из них не будет пустой.
Циклически индексируйте в строку
ID HAM178 VS4F 3R EP6CQ Z UB O 0 X 9 G 5TNJKL2Y W
длиной 63 символа.Выполните преобразование base-47, используя алфавит,
0-9A-Za-k
а затем последовательно уменьшите по модулю 237, 73, 67 и 63 через циклическое индексирование.источник
CJam (63 байта)
или в формате xxd
Это анонимный блок (функция), который ожидает ввода в виде списка столбцов. Демо онлайн .
Как и во многих других ответах, здесь выполняется базовое преобразование, за которым следует цепочка%, чтобы получить краткую справочную таблицу. В этом случае я использую базу 16 и% цепи
[245 225 214 197 159 123 97 40]
.источник
Желе , 48 байт
Монадическая ссылка, принимающая список списков символов в верхнем регистре (каждый из которых является столбцом), который выдает список символов.
Попробуйте онлайн!
Как?
источник
Рубин , 109 байт
Попробуйте онлайн!
источник
Stax , 46 байт
Запустите и отладьте его
Каждый столбец декодируется как base-36. Последовательный модуль 8273, затем применяется 95. Это дает уникальный номер, ищется в фиксированной строке.
Он принимает данные точно в формате, указанном в примерах, и должен транспонировать их, чтобы получить столбцы. Я смогу сохранить несколько байтов, используя другой формат ввода, что я могу сделать в какой-то момент.
источник