На основании этого вопроса из Code Review
Если задана непустая строка печатных символов ASCII, выведите второй неповторяющийся символ. Например, для ввода DEFD
, вывода F
.
вход
- Одна строка в любом подходящем формате .
Выход
- Второй символ , который не повторяется, при чтении слева направо, снова в подходящем формате.
- Выходной символ чувствителен к регистру.
- Если такого символа не существует (например, все символы повторяются), выведите пустую строку.
правила
- Алгоритм должен игнорировать регистр. То есть
D
иd
считается как один и тот же персонаж. - Либо полная программа или функция приемлемы.
- Входная строка будет гарантированно непустой (т. Е. Длиной не менее одного символа).
- Входная строка ASCII. Любой действительный символ может повторяться, не только буквенно-цифровой (это включает пробелы).
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
Примеры
Ввод в первой строке, выход во второй строке.
DEFD
F
FEED
D
This is an example input sentence.
x
...,,,..,,!@
@
ABCDefgHijklMNOPqrsTuVWxyz
B
AAAAAABBBBB
Thisxthis
This this.
.
Ответы:
MATL , 11 байт
Это происходит с ошибкой (разрешено по умолчанию), если нет второго неповторяющегося символа.
Попробуйте онлайн!
объяснение
источник
Сетчатка , 25 байт
Попробуйте онлайн! (Первая строка позволяет запустить код в тестовом наборе из нескольких входов.)
объяснение
Это всего лишь одно регулярное выражение, регулярное выражение:
То есть сопоставьте символ и убедитесь, что он больше нигде не отображается на входе. Остальное конфигурация:
i
активирует нечувствительность к регистру.!
говорит Retina напечатать спички, а не считать их.2=
говорит Retina напечатать только второй матч, в отличие от всех.источник
2=
.05AB1E,
1512 байтРазъяснения
Попробуйте онлайн
Сохранено 3 байта благодаря @Adnan
источник
l©v®y¢iy}}1@
:).Python 2,
5958 байтВозвращает список из одного символа или пустой список, если нет выходных данных. (Глупая нечувствительность к регистру ...)
Попробуйте онлайн
источник
Желе , 11 байт
Попробуйте онлайн! или проверьте все контрольные примеры .
Как это устроено
источник
Пакет, 171 байт
Альтернативная формулировка, также 171 байт:
источник
Pyth,
1615 байт1 байт благодаря @ mbomb007
Тестирование.
источник
[1:2]
хитрость.t<…2
вместо:…1 2
. Вы можете сохранить другие байты, перемещая=rz1
его первое использование, если вы также изменить1
наZ
(для нижнего регистра вместо верхнего регистра выхода):t<fq1/zT=rzZ2
.На самом деле, 19 байтов
Попробуйте онлайн!
Объяснение:
источник
C #,
129128 байтовработает отлично. Жаль, что мне не нужно все в нижнем регистре
источник
C # лямбда с Linq, 63 байта
источник
.Skip(1).First()
на.ElementAt(1)
.ToList()[1]
C #, 141 байт
Без разрыва (самый маленький), 135 байт
С для (;;), 150 байтов
Разгромленный с комментариями
12 байтов, сохраненных TuukkaX (изменить счетчик на c).
3 байта, сохраненные TuukkaX (измените строку на var).
4 байта, сохраненные TuukkaX в «With for (;;)» (изменено, в то время как (true) на for (;;)).
2 байта сохранены TuukkaX (изменено c ++; if (c == 2) на if (++ c == 2)).
14 байтов, сохраненных Брайсом Вагнером (изменено x.ToCharArray () на x).
источник
var
вместоstring
и иметь что-то вродеc
вместоcount
.машинный код x86, 43 байта
В шестнадцатеричном виде:
Функция берет указатель на входную строку в (E) SI и целое число в (E) DX и возвращает (E) DX-й неповторяющийся символ или ноль, если такого символа нет. Как побочный эффект это преобразовывает строку в верхний регистр.
Разборка:
источник
APL, 32 байта
Попробуй это || Все тесты
Объяснение:
Я собирался опубликовать его с 16 байтами, но я понял, что это должно быть без учета регистра ...
источник
(⎕UCS ⍵)+32×⍵∊⎕A
→819⌶⍵
⌶
вообще и для обслуживания 819 («819» - «BIg»). Попробуйте онлайн!Retina,
4336 байтПопробуйте онлайн!
источник
Mathematica, 49 байтов
Анонимная функция. Принимает список символов в качестве входных данных. Проигнорируйте любые сгенерированные ошибки.
источник
JavaScript (Firefox 48 или более ранняя версия), 60 байт
Возвращает,
undefined
если есть только ноль или один неповторяющийся символ. Работает без учета регистра, удаляя все вхождения символов, которые встречаются в строке более одного раза. Полагается на нестандартное расширение Firefox, которое было удалено в Firefox 49.11991-байтовая версия ES6:Рекурсивно ищет все символы, которые появляются в строке как минимум дважды. Если символ появляется ровно дважды, тогда оба вхождения удаляются, в противном случае удаляется только первое вхождение (остальные вхождения будут удалены позже). Это позволяет вхождениям иметь разностный регистр.
источник
m[1]
наnew RegExp(`${m[1]}`,"gi")
J, 25 байт
использование
объяснение
источник
Баш, 58 байт
Внимание: это создает временный файл с именем t . Если он уже существует, он будет перезаписан.
источник
C 174 байта
Это не самая короткая, но довольно эффективная реализация. По сути, он использует двойной связанный список для поддержания упорядоченного набора символов-кандидатов и сканирует входную строку только один раз. Возвращает код символа или ноль, если ничего не найдено.
Немного негольфированная версия:
источник
C #, 143 байта
источник
TSQL, 128 байт
Golfed:
Ungolfed:
скрипка
источник
Рубин, 53 байта
Вход STDIN, выход STDOUT. В Ruby позиции вне индекса в массиве или строке возвращаются
nil
, что не печатается.String#count
странная функция в Ruby, потому что вместо подсчета количества вхождений для строки, которая была передана, она подсчитывает количество вхождений для каждой буквы в этой строке. Обычно это раздражает, но на этот раз мы можем использовать это в своих интересах.String#swapcase
меняет прописные и строчные буквыСтарая версия, которая не была защищена от специальных символов, таких как
.
- 46 байтисточник
Java 8,
172157 байт-15 байт .. Черт, я тогда плохо играл в гольф. ;)
Объяснение:
Попробуй это здесь.
источник
R , 79 байт
Попробуйте онлайн!
Я определенно чувствую, что здесь можно играть в гольф. Но мне очень понравился этот вызов.
Этот ответ разбивает строку на вектор символов, изменяет их все на строчные и ставит их в таблицу (считает их). Символы, которые встречаются один раз, выбираются и сравниваются с символами в вышеупомянутом векторе, а затем возвращается второе значение true, которое выводится. Пустая строка или строка без повторяющихся символов выводит NA.
источник
Perl 6 ,
3832 байта-6 байт благодаря nwellnhof, переходя
.comb
на регистронезависимое регулярное выражениеПопробуйте онлайн!
источник
m:g:i/$^a/
для 32 байтов .К (ок) / K4 , 11 байтов
Решение:
Попробуйте онлайн!
Объяснение:
источник
Желе, 15 байт
Попробуйте онлайн!
Проверьте все тестовые случаи. (Немного изменен, чтобы обслужить все тестовые случаи)
источник
Perl, 75 байт
источник
Javascript (с использованием внешней библиотеки) (107 байт)
Сокрушил это, используя библиотеку, которую я написал. Не уверен, должен ли я считать объявление переменной "s", которая является рассматриваемой строкой.
Это будет обрабатывать ввод пустой строки, ввод только с одним неповторяющимся символом и ввод с 2+ неповторяющимися символами
источник
s=> ...
)Clojure, 109 байт
Ох, я надеюсь, что есть более краткий путь.
источник