Ваша задача состоит в сортировке строки, но вместо обычного алфавитного порядка (abc..xyz) вы будете сортировать строки по заданному алфавиту.
Вы должны написать программу или функцию , которая принимает два входа: алфавит A и строки S . Оба будут содержать только строчные английские буквы, и оба будут содержать хотя бы один символ.
Вы должны переместить буквы в S так, чтобы буква, которая появляется первой в A, появлялась первой, затем какая бы буква появлялась второй в A , и т. Д. В S могут быть некоторые буквы, которые не появляются в A , их следует оставить в конце и не перемещаться относительно друг друга.
Тестовые случаи:
A S Result
axd haxuizzxaxduxha aaaxxxxdhuizzuh
a xyz xyz
abc dcba abcd
il nmiuplliu iillnmupu
asdf qwerty qwerty
Побеждает несколько байтов!
Ответы:
05AB1E , 4 байта
Попробуйте онлайн!
объяснение
источник
Σ²sk>
.R۠
работать, как ожидалось, хотя :). Иногда это может работать как меньшийvy
цикл. Хороший ответ мужчина.Python 3 ,
50 47 4644 байта-3 байта благодаря ngn!
-1 байт благодаря mypetlion
Попробуйте онлайн!
Принимает строку как алфавит и список символов как строку и сортирует список по месту.
В
%27
гарантирует , что если символ не в алфавите, то возвращаемый индекс помещает его после того, как остальная часть алфавита.источник
-a[::-1].find(c)
->(a+c).find(c)
(a+c).find(c)
->a.find(c)%27
сохранить 1 байтHaskell, 42 байта
Попробуйте онлайн!
источник
Perl 6 ,
5543 байтаПопытайся
Попытайся
Expanded:
источник
Haskell ,
4034 байта-6 байт огромное спасибо Лайкони .
Попробуйте онлайн!
Первая строка является выражением , которое принимает два аргумента: S и A .
источник
f=
потому что анонимные функции разрешены.(<>)
, теперь в Prelude, так что это может быть сокращено доfoldr(\c->r(==c)<>r(/=c))
34 байтов: попробуйте онлайн!Stax , 6 байт
Запустите и отладьте его
Это сортирует по блоку, который делает это.
источник
Python 2 , 38 байт
a должен быть строкой, s список строк длиной 1. f сортирует s на месте.
Попробуйте онлайн!
Альтернативная версия, строковый ввод / вывод, 48 байтов
Попробуйте онлайн!
Как это работает
s.sort(None,a[::-1],1)
это сокращение дляs.sort(cmp=None,key=a[::-1],reverse=1)
.Из документов :
источник
cmp
и сделалkey
иreverse
ключевые слова , только аргументы, так что егоlist.sort
принимает только один позиционный аргумент.J , 5 байт
Диадический глагол, с алфавитом слева и строкой для сортировки справа.
i.
находит значения символов строки в алфавите, длину алфавита, если не найден./:
сортирует свой левый набор в порядке, указанном в правом.]
правый аргумент (строка)Попробуйте онлайн!
источник
Python 2 ,
3550 байтПопробуйте онлайн!
принимает
a
иs
как строки; возвращает список строк Singelton.Примечание: Ой! Получил 15 байтов, чтобы исправить ...
источник
К (нгн / к) , 9 байт
Попробуйте онлайн!
{
...}
это функция с аргументамиx
иy
x?y
находит для каждого элемента вy
индексе его первое вхождение вx
; если элемент не найден вx
, его индекс считается0N
(-2 63 )-
отменяет все индексы, за исключением того, что сохраняет0N
-s нетронутыми, потому что 2 63 ≡-2 63 (мод 2 64 )>
возвращает сортировку по убываниюy@
индексыy
с этимисточник
Древесный уголь , 13 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
источник
Желе , 4 байта
Диадическая ссылка принимает строку слева и алфавит справа (в виде списков символов) и возвращает результат (также в виде списка символов).
Попробуйте онлайн!
Как?
источник
APL (Dyalog Unicode) , 5 байтов SBCS
Функция анонимного молчаливого префикса, принимающая в
[string,ordering]
качестве аргумента.Попробуйте онлайн!
…
/
Уменьшить с помощью следующей функции:...
⍨
именно версия с обратными аргументами следующей функции:⍋
оцените правую строку в соответствии с левым порядком (пропущенные буквы идут в конце)⌷
использовать это для индексации в ...⊃
первый элемент аргумента (то есть строка)источник
JavaScript (SpiderMonkey), 50 байт
Вводится в синтаксисе карри
(a)(s)
, где a - строка, а s - массив символов. Возвращает массив символов.Попробуйте онлайн!
Как?
Мы определяем вспомогательную функцию g () как:
который возвращает:
Мы сортируем s [] , вычисляя g (b) - g (c) для каждой пары символов (b, c), переданных обратному вызову sort () .
Поскольку реализация sort () в SpiderMonkey стабильна, все символы s [], которые не принадлежат алфавиту, просто перемещаются в конце в порядке появления и не изменяются при сравнении друг с другом.
JavaScript (ES6), 61 байт
Принимает ввод в синтаксисе карри
(a)(s)
, где и a, и s являются массивами символов. Возвращает строку.Попробуйте онлайн!
источник
R ,
69 6258 байтПопробуйте онлайн!
Вход и выход - векторы отдельных символов.
Объяснение:
источник
Brain-Flak (Брейнхак) , 118 байт
Попробуйте онлайн!
Ввод - первая строка, за которой следует ноль, а затем вторая строка. Версия, которая использует перевод строки в качестве разделителя, добавляет 24 байта:
Brain-Flak , 142 байта
Попробуйте онлайн!
объяснение
источник
C (gcc) , 97 байт
Все пробелы (пробелы и новые строки) в приведенном выше коде предназначены только для удобства чтения и должны быть удалены.
Словарь передается
D
и имеет длинуd
, строка передаетсяS
и имеет длинуs
.i
иo
должен быть опущен.Попробуйте онлайн!
источник
Pyth ,
95 байтПопробуй это здесь!
источник
Java 8, 98 байт
Попробуйте онлайн.
Объяснение:
источник
String.repeat(int)
методом Java 11 . Ницца! :).repeat(n)
выглядит многообещающе, хотя. : DPerl 5 с
-pF
, 43 байтаПопробуйте онлайн!
источник
$_=<>;
бесплатно?@F
, но я не добавил его в шапку! Я сделаю это сейчас! Спасибо!Пролог (SWI) , 136 байт
Попробуйте онлайн! Пример использования:
источник
Чисто , 61 байт
Попробуйте онлайн!
Определяет функцию
$ :: [Char] [Char] -> [Char]
.Неудивительно, что это ответ Хаскелла буквально Ними, но дольше.
источник
Желе , 7 байт
Попробуйте онлайн!
источник
APL + WIN, 12 байт
Запрашивает ввод на экране S, затем A:
Попробуйте онлайн! Предоставлено Dyalog Classic
источник
PynTree , 13 байт
Попробуйте онлайн!
Порт Джо Кинга Python ответ.
объяснение
источник