Возможно, вы видели такие загадки:
Найти
0
:
OOOOOOOOOOOOOOOOOOOO0OOOOOOOOOOOOOOOOOO
Задача состоит в том, чтобы написать программу, которая находит индекс другой буквы для данного изображения.
вход
Вход будет Image
. Изображение будет состоять из одной строки из черного текста в Helvetica 24 пт. шрифт на белом фоне. Текст будет состоять из двух символов: один символ, который повторяется, и один символ, который появляется только один раз. Например:
Вывод
Выводом будет Integer
индекс другого символа. В приведенном выше примере вывод будет 4
. (Обратите внимание, что индексы строки начинаются с 0
)
Технические характеристики программы
Как обычно для кода гольф, выигрывает самая короткая программа.
Тестовые случаи
=> 10
=> 11
=> 5
=> 16
=> 10
=> 21
=> 20
=> 13
=> 11
=> 4
=> 7
Ответы:
Дьялог АПЛ ,
3132 байта⎕IO←0
чтобы получить индексы, начинающиеся с 0 (на OP), и которые в любом случае используются по умолчанию во многих системах APL.1,⍵
добавьте столбец белых пикселей (для обеспечения поля)∧⌿
логического значения для каждого столбца, если полностью белый (вертикальное И-уменьшение)2>/
логическое значение по левому краю каждого символа (попарно больше)⍵⊂⍨
разделится на блоки, начинающиеся с каждого ИСТИНА.{
…}¨
Для каждого∧⌿⍵
логического блока для каждого столбца, если полностью белые (вертикальное И-уменьшение)⍵/⍨~
столбцы, которые не являются [полностью белыми],∘.≡⍨
соответствуют каждому элементу количеству всех элементов,+⌿
идентичных каждому1⍳⍨
индексу каждого блока (вертикальное плюс-уменьшение) первого индекса (т.е. уникальный элемент)Предполагается, что изображение содержит черные (0) и белые (1) пиксели в матрице
I
, и что между символами имеется хотя бы один столбец из белых пикселей."!Я!!":
"Mmnmm":
источник
{⍵/⍨~∧⌿⍵}¨
и остаться только с{1⍳⍨+⌿∘.≡⍨⍵⊂⍨2>/∧⌿1,⍵}
?Mathematica, 125 байт
Ааа, Mathemeatica встроенные. Так удивительно. (И так долго ...) взрывается на | /! : /; , /. `/ 'и взрывается по-другому на м / п.
источник
Length[Split[Characters@TextRecognize@#][[1]]] &
Mathematica, 46 байт
Те же сбои, что и у другого решения Mathematica, поскольку оно опирается на ту же
TextRecognize
функцию.источник
Length@First@Split@Characters@TextRecognize@#&
@*
не спасает.