Задача
Напишите программу или функцию (или эквивалент), которая сортирует и возвращает нечетную букву в матрице случайного размера.
подробности
Вам будет передана матрица (в виде строки) в качестве ввода случайных размеров, таких как эта.
bbbbbbbbbb bbbbbdbbbb bbbbbbbbbb bbbbbbbbbb bbbbbbbbbb
Ваша задача - найти букву, которая не соответствует остальным (в данном случае она находится d
в строке 2, столбец 6), и вернуть эту букву в качестве вывода. Матрица будет состоять из букв A-Z
, a-z
новых строк ( \n
только на концах строк) и иметь размеры от 5x5 до 10x10 (25-100 букв).
Применяются стандартные лазейки. Это кодовое соревнование по гольфу; запись с кодом младшего байта выигрывает.
вход
Ввод будет передан через стандартный ввод в виде строки, если это программа, или в качестве аргумента, если функция (или аналогичная).
Выход
Единственный символ , который является «нечетным» в матрице или None
, nil
, NUL
или строка , "None"
если нет «нечетного» характера.
Больше примеров
AAAAAAA AAAAAAA AAAAAAA AAAIAAA AAAAAAA
Ответ: I
vvqvvvvvvv vvvvvvvvvv vvvvvvvvvv vvvvvvvvvv vvvvvvvvvv
Ответ: q
puuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu uuuuuuuuu
Ответ: p
Генератор
Вот генератор случайных матриц, написанный на Python, который вы можете использовать для тестирования своей программы. Примечание: есть небольшая вероятность того, что он мог ошибиться и не вставить нечетную букву.
Ответы:
Python 3 , 27 байт
Попробуйте онлайн!
источник
J ,
12 107 байтПопробуйте онлайн!
10-байтовая версия
Hisss ...
источник
Брахилог ,
84 байтаПопробуйте онлайн!
объяснение
Я не использовал Brachylog раньше, так что это не может быть оптимальным.
источник
∋≠
afterḅ
для получения результатов длины 1 очень умно. Вы должны обязательно опубликовать это в вопросе подсказок Brachylog .K (ок) ,
76 байтовРешение
Попробуйте онлайн!
Пример:
Объяснение:
Найден несколько более короткий подход: оценивается справа налево:
Заметки:
Хотя я ожидаю, что бонусный аспект этого испытания будет отброшен, это решение вернет символ новой строки,
\n
если не будет нечетного символа:источник
Пролог (SWI) , 46 байт
Попробуйте онлайн!
Или если стандарт правда вывод от запросов пролога не в порядке:
Пролог (SWI) , 48 байт
Попробуйте онлайн!
объяснение
источник
C (gcc) ,
9392906662 байтаНамного короче как функция
Попробуйте онлайн!
тестовый код
старая версия это программа
C 86 байт
Выводит нечетный символ или ничего. беги так;
источник
gets()
тестовый драйвер, так как он очищает входные данные, удаляя символы \ n для вас. Это делает некоторую работу, чтобы ваша функция не работала с исходным вводом.05AB1E ,
42 байтаСохранено 2 байта благодаря Аднану
Попробуйте онлайн!
объяснение
источник
2x2
матриц. Я пропустил часть о5x5
и вверх. Благодаря!nil
если у него нет «нечетного», не так ли?Сетчатка , 13 байт
Попробуйте онлайн!
объяснение
Сортировать все символы.
Удалите все символы, которые появляются как минимум дважды.
источник
Шелуха , 2 байта
Попробуйте онлайн!
Это функция, принимающая строку в качестве входных данных и возвращающая символ. Он берет минимум входной строки при сравнении символов на равенство (то есть возвращает символ, равный наименьшему числу других символов).
источник
C 94 байта
Вернуться по указателю. Если нет, верните
\0
.Это приведет к утечке памяти. Предполагается,
int
что 4 байта.Попробуйте онлайн!
источник
t
обнулялся перед вызовом каждый раз, а не в первый раз.Mathematica, 27 байт
Попробуйте онлайн!
-1 байт от Мартина Эндера
источник
Баш ,
1520 байтПопробуйте онлайн!
Объяснение:
fold
s вводит1
символ в каждой строке,sort
разбивает его на группы совпадающих букв, затем печатает только те строки, которые совпадаютuniq
.Спасибо @Nahuel Fouilleul за то, что он поймал и помог решить проблему с этим подходом.
источник
|sort|
но может быть и лучшее решениеgrep -oP '^(.)((?=(?!\1).){2}|.*\K(?!\1).)'
sort
исправить, спасибо. Вы всегда можете опубликовать этот grep-ответ как свой собственный, если хотите.Pyth , 4 байта
Попробуй это здесь!
источник
.m/Q
равно 4 байтаPerl 5, 17 + 3 (-00p) -25% = 15 байт
попробуйте это онлайн
источник
Matlab, 25 байт
Вход «а», где «а» не является режимом «а». Выводит пустой массив для отсутствия чудака.
источник
Haskell, 33 * 0,75 = 24,75 байт
Возвращает пустой список, если нет нечетного символа.
Попробуйте онлайн!
Для каждого символа
c
в матрице (заданной в виде строкиs
) создайте строку всех символов в нейs
, равнуюc
длине 1.источник
JavaScript (ES6), 37 байт
Возвращает,
null
если нет нечетной буквы.Контрольные примеры
Показать фрагмент кода
источник
Japt , 6 байт
Принимает ввод как многострочную строку и выводит односимвольную строку или пустую строку, если нет решения.
Попробуй
объяснение
Удалите символы, которые возвращают truey (
k
) при прохождении через функцию (@
), которая считает (è
) вхождения текущего элемента (X
) во входных данных и вычитает 1 (É
).источник
Common Lisp, 47 байт
Попробуйте онлайн!
Возвращает нечетную букву или NIL, если она не существует.
источник
Желе , 4 байта
Попробуйте онлайн!
Возврат
\n
(одна новая строка), если нет нечетного символа. очевидно\n
это не печатный символ.По совпадению это тот же алгоритм, что и в ответе Mr.Xcoder Python. (Я придумал это самостоятельно)
Объяснение:
Это работает, потому что в
m×n
матрице:m-1
новые строки, 1 нечетные символы иm×n-1
нормальный символ, и1 < m-1 < m×n-1
потому5 ≤ m, n ≤ 10
.m-1
новые строки иm×n
нормальный символ, иm-1 < m×n
.источник
C # (.NET Core) , 54 байта
Попробуйте онлайн!
источник
using
оператора в подсчете байтов.C (gcc) ,
9186827971 байтПопробуйте онлайн!
Объяснение:
Сравните текущий и предыдущий символ, пропуская новые строки. Если отличается, сравните со следующим символом. Это говорит нам, если мы вернемся текущий или предыдущий символ. Функция возвращает «нечетное» значение char, если оно существует, или 0, если массив не является нечетным. Мы получаем «следующую» проверку символов, потому что перед символом всегда стоит новая
\0
строка. Если нет нечетного символа, мы возвращаем \ 0 из цикла for.Более старый, более сексуальный код xor Объяснение:
Создайте бегущую маску xor из следующих 3 строковых значений. Если они все одинаковы, то значение будет равно любому из трех. Если они различаются, то 2 идентичных будут взаимно уничтожать друг друга, оставляя уникальное.
Должен множитель / n перед xor, иначе он станет грязным. Также нужно проверить 2 символа на неравенство в случае, если s [0] нечетное значение. Это стоит дополнительных || чек об оплате.
источник
v;f(char*s){while(s[3]){s[2]==10?s+=3:0;v=*s^s[1]^s[2];if(v^*s++||v^*s)break;}}
v;f(char*s){while(s[2]==10?s+=3:0,v=*s^s[1]^s[2],s[3])if(v^*s++||v^*s)break;}
однако ваша победившая лошадь - другая, если вы немногоv;f(char*s){for(v=-1;*++s==10?s+=2,v--:0,*s;v=0)if(*s^s[-1])return s[v];}
s+=*++s-10?0:2
вместо*++s==10?s+=2:0
Октава ,
2625 байт1 байт сохранен благодаря @Giuseppe
Анонимная функция, которая принимает двумерный массив символов в качестве входных данных и выводит либо нечетную букву, либо пустую строку, если она не существует.
Попробуйте онлайн!
источник
Алиса , 16 * 75% = 12 байт
Попробуйте онлайн!
Выводится,
Jabberwocky
если нет повторяющегося символа.объяснение
Это основа для линейных программ, которые работают полностью в Ordinal (режим обработки строк). Фактический код выполняется зигзагообразно и раскрывается в:
Вместо этого
&-
мы могли бы также использоватьey
(транслитерацию в пустую строку). В качестве альтернативы, потратив еще один символ на манипуляции со стеком, мы также можем дедуплицировать ввод, который позволяет нам удалять ненужные символыN
, но это все равно с тем же количеством байтов:Алиса , 13 байт
Попробуйте онлайн!
Это решение без бонуса, просто отсутствует
.n*
.источник
Сетчатка , 22 байта
Попробуйте онлайн! Требуется только высота и ширина не менее 3, а не 5.
источник
APL + WIN, 16 байт
Запрашивает ввод с экрана и либо выводит нечетную букву, либо ничего, если нет нечетной буквы
источник
a/⍨1=+/a∘.=a←,⎕
за байтPowerShell , 39 байт
Попробуйте онлайн!
Принимает ввод в виде строки с символами новой строки (как указано в вызове), преобразует его в
char
-array. Затем мыGroup-Object
используем символы, так что символы группируются по их именам, а затемsort
на основеc
количества. Это гарантирует, что одинокий символ будет первым, поэтому мы берем[0]
индекс и выводим его.Name
.Если новая строка приемлема для «ничего», то это соответствует бонусу.
источник
sort c*)[0]
что можно сократить, но я придумал то же количество байтов? c* -eq 1)
.$args
. Также это более точно сделать, так([char[]]$args|group|? c* -eq 1).Name
как он будет точно возвращать,null
когда нет нечетного символа (вместо новой строки). Однако с точки зрения байтов это все равно не приведет вас ниже 37.None
,nil
,NUL
, или строки"None"
, если нет «нечетного» характера.) Он должен еще быть изменен. Новая строка не является частью приемлемых ответов.Perl 6 ,
2724 -25% = 18 байтПопробуй это
Попробуй это
Это будет вернет неопределенное значение если дан ввод, у которого нет нечетного символа.
Expanded:
источник
Brainfuck, 125 байт
Попробуйте онлайн
Печатает букву матрицы, если нет нечетного
источник
Java 8, 85 байт
Это лямбда от
String
доString
(напримерFunction<String, String>
). По сути, это копия решения Луки , но я немного сократил сортировку строк.Попробуйте онлайн
источник