Удалите все повторяющиеся слова из введенного предложения.
На входе будет что-то похожее, cat dog cat dog bird dog Snake snake Snake
а на выходе должно быть cat dog bird Snake snake
. Там всегда будет один пробел, разделяющий слова.
Порядок вывода должен совпадать с порядком ввода. (См. Пример)
Вам не нужно обрабатывать знаки препинания, но требуется обработка заглавных букв.
Snake
иsnake
рассматриваются просто как разныеОтветы:
gs2 , 3 байта
Закодировано в CP437 .
STDIN выдвигается в начале программы.
,
разбивает его на пробелы.É
естьuniq
, который фильтрует дубликаты.-
соединяется пробелами.источник
CJam, 7 символов
Возможно, может быть намного короче ... но все, что я почти никогда не использовал CJam. ^. ^
q
считывает ввод,S/
разбивает на пробелы,_&
дублирует и применяет заданное AND (следовательно, избавляется от дубликатов) иS*
повторно объединяет пробелы.Онлайн переводчик ссылка
источник
Haskell, 34 байта
Пример использования:
(unwords.nub.words) "cat dog cat dog bird dog Snake snake Snake"
->"cat dog bird Snake snake"
.источник
APL,
2220 байтЭто создает безымянную монадическую функцию, которая принимает строку справа и возвращает строку.
Объяснение:
Попробуйте онлайн
Сохранено 2 байта благодаря Денису!
источник
Рубин, 21 символ
источник
JavaScript (ES6) 33
(см. этот ответ )
Протестируйте приведенный ниже фрагмент в браузере, совместимом с EcmaScript 6 (реализуя Set, оператор распространения, строки шаблонов и функции стрелок - я использую Firefox).
Примечание: при преобразовании в Set удаляются все дубликаты, а в Set сохраняется исходный порядок.
источник
TeaScript , 12 байт
TeaScript - это JavaScript для игры в гольф.
Это довольно коротко. Он разделяется на каждое пространство, отфильтровывает дубликаты, а затем возвращается.
Попробуйте онлайн
источник
tee-a script
илиtee script
?cdfghijklmnopstuvw
зарезервированы для переменных, все они предварительно инициализированы в 0.b
также зарезервированы для имени переменной, предварительно инициализированы в пустую строкуPowerShell, 15 байт
Вау, реальная запись, где PowerShell несколько конкурентоспособен? Это невозможно!
Принимает строку в качестве входных аргументов, передает
Select-Object
с-Unique
флагом. Выплевывает массив строк, сохраняя порядок и заглавные буквы в соответствии с запросом.Использование:
Если это слишком «обманчиво», если предположить, что входные данные могут быть аргументами командной строки, тогда перейдите к следующему, в
2421 байт (сэкономлено несколько байтов благодаря blabb ) . Интересно, что использование унарного оператора в этом направлении также работает, если входная строка разграничена кавычками или отдельными аргументами, поскольку по умолчанию-split
используется пробел. Бонус.источник
Юлия, 29 байт
Это создает безымянную функцию, которая разбивает строку на вектор по пробелам, сохраняет только уникальные элементы (сохраняя порядок) и объединяет массив обратно в строку с пробелами.
источник
R, 22 байта
Это читает строку из STDIN и разбивает ее на вектор по пробелам, используя
scan(,"")
, выбирает только уникальные элементы, затем объединяет их в строку и печатает ее в STDOUT, используяcat
.источник
Сетчатка , 22 байта
Сохраните файл с завершающим переводом строки и запустите его с
-s
флагом.Это довольно просто в том смысле, что оно соответствует одному слову, и просмотр за спиной проверяет, появилось ли то же слово в строке ранее. Конечный перевод строки заставляет Retina работать в режиме Replace с пустой строкой замены, удаляя все совпадения.
источник
Mathematica,
4339 байтисточник
StringRiffle[]
.Keys@Counts
вместоDeleteDuplicates
Keys@Counts
порядок?Counts[list]
дает ассоциацию, ключи которой расположены в том же порядке, в котором они сначала появляются, как элементы списка.Pyth - 9 байт
Вот почему мы все ждем Pyth5, возможно, было 5 байт.
Попробуйте это онлайн здесь .
источник
C ++ 11, 291 байт
Я не вижу много ответов C ++ по сравнению с языками игры в гольф, так почему бы и нет. Обратите внимание, что здесь используются функции C ++ 11, и поэтому, если ваш компилятор
застрял вдостаточнотемном возрасте, вам может потребоваться передать специальный параметр компиляции, чтобы он использовал стандарт C ++ 11. Дляg++
, это-std=c++11
(необходимо только для версий <5.2). Попробуйте онлайнисточник
set
? Это позволяет не дублировать дизайн. Просто нажмите на это.set
не гарантирует, что элементы будут в том же порядке, в котором они были добавлены.К5, 9 байт
К вашему сведению, это функция.
объяснение
источник
Matlab: 18 байт
где
d
находитсяd = {'cat','dog','cat','dog','bird','dog','Snake','snake','Snake'}
.Результат
'cat' 'dog' 'bird' 'Snake' 'snake'
источник
d
уже назначена. Вы можете исправить это, используя функцию handle:@(d)unique(d,'stable')
стоимостью 4 байта.Python 3, 55
Да, это долго. К сожалению, Python
set
не сохраняет порядок элементов, поэтому мы должны сделать работу сами. Мы перебираем входные слова, сохраняя списокl
элементов, которых еще нетl
. Затем мы печатаем содержимое черезl
пробел.Строковая версия
l
не будет работать, если некоторые слова являются подстрока других слов.источник
C #, 38 байт
источник
s
, я думаю, вы должны получить его в качестве аргумента.Perl 6, 14 байт
В целом для программы единственный способ написать ее - длина 21 байт
Как лямбда-выражение самое короткое составляет 14 байтов
Хотя выводом является список, если вы поместите его в строковый контекст, он поместит пробел между элементами. Если требовалось вернуть строку, вы можете просто добавить a
~
в начало~*.words.unique
.Если фрагменты были разрешены, вы можете сократить их до 13 байтов, удалив
*
.источник
Python 3,
8780 байтоказывается полная версия программы короче
Сделал это без регулярных выражений, я счастлив
Попробуйте онлайн
источник
Луа, 94 байта
источник
... return""else l[b]=true end end...
на...return""end l[b]=""end...
.awk, 25
Выход:
источник
JavaScript,
106102100 байт// слишком долго для JS :(
источник
Калий , 91 байт
Запустите онлайн и посмотрите расширенный здесь
источник
PHP
6459 байтисточник
explode()
→split()
,implode()
→join()
?split
, что это унижается, но, думаю, это не имеет значения для разработки кода.AppleScript, 162 байта
Интересно, что это почти идентично неповторяющимся символам.
Я на самом деле не знал рассматриваемого ключевого слова до этого. чем больше ты знаешь...
источник
Бурлеск, 6 байтов
Довольно просто: разделить слова, nub (nub = удалить дубликаты), преобразовать обратно в слова.
источник
Гема, 21 персонаж
(Очень похоже на уникальное решение для персонажей , так как в Gema нет массивов, поэтому использование встроенных уникальных функций не очень нам помогает.)
Образец прогона:
источник
Scala,
4447 байтРЕДАКТИРОВАТЬ : использование
toSet
может не сохранить порядок, поэтому я теперь использую различные //, которые просто стоят мне 3 байта :(источник
PHP, 37 байт
Предполагается
$s
, что входная строка.источник