вход
Строка , которая содержит не более одного из каждых из букв A
, B
и C
. Они могут быть в любом порядке. Пустая строка является допустимым вводом.
Примечание. В предыдущей версии этого задания LEJ
вместо букв использовались буквы, ABC
и они могут при желании использоваться.
Выход
Строка из A
, B
, C
букв , которые не присутствовали на входе. Они могут быть в любом порядке.
Если выводом будет пустая строка, то просто отсутствие вывода допустимо, если это имеет смысл для вашей реализации. (например, вам не нужно фактически вызывать print
пустую строку.)
Примеры
- Если на входе ,
B
то выход должен быть либоCA
илиAC
такA
иC
нет на входе. - Если на входе есть пустая строка, то на выходе должна быть
ABC
или любая перестановка, так как ни одна из трех букв не присутствует на входе. - Если на входе
CAB
вывод, то на выходе должна быть пустая строка, потому что на входе присутствуют все три буквы.
Тестовые случаи
Есть так мало входных случаев, что мы можем перечислить все из них:
in -> out1 | out2 | out3 | ...
ABC -> ""
ACB -> ""
BCA -> ""
BAC -> ""
CAB -> ""
CBA -> ""
AB -> C
AC -> B
BC -> A
BA -> C
CA -> B
CB -> A
A -> BC | CB
B -> CA | AC
C -> AB | BA
"" -> ABC | ACB | BCA | BAC | CAB | CBA
Все действительные выходы для каждого входа даны, разделенные символом |
's. ""
представляет пустую строку
счет
Самый короткий код в байтах побеждает. Но имейте в виду, что вы можете получить больше признания за решение задачи уникальным способом, а не коротким путем;)
источник
Ответы:
Python 3,
292722 байта-2 байта благодаря Джонатану Аллану
-5 байт благодаря штанге
источник
print(*{*"LEJ"}-{*input()})
сохраняет 2. (проверено на 3.5 и 3.6).Желе , 4 байта
Спасибо @DuctrTape за побуждение об изменении и наличии "ABC" в словаре Jelly.
Попробуйте онлайн!
“ḃ»
ищет запись "ABC" в словаре Jelly,ḟ
является фильтром, отбрасывающим диаду, которая отбрасывает символы, найденные во входных данных из этого списка символов. Результат неявно печатается.Для строчной версии словарной записи можно использовать «abac» (
“c»
) или «abaca» (“i»
).Когда задание было «LEJ», в верхнем регистре можно было получить только 6 байтов, поскольку в этом наборе символов нет словарных записей, что позволяет нам создать список символов
“LEJ”
(или его перестановку).Вариант в нижнем регистре сработал лучше на 5 байтов из-за присутствия слова «желе» (
“ẎṄ»
)источник
Bash + coreutils, 15 байт
Попробуйте онлайн!
Я хотел бы опустить
x
, но тогдаtr -d
будет отсутствовать аргумент, когда входная строка была пустой. (Этоx
не приносит никакого вреда, так как в строке LEJ здесь нет символов x). Я обычно пишуtr -d "$1"
, но делаю так, как делал, на один байт короче этого.источник
Сетчатка , 14 байт
Количество байтов предполагает кодировку ISO 8859-1.
Попробуйте онлайн!
объяснение
Добавить вторую строку, содержащую
ABC
.Дублируйте персонажей. При этом удаляются все символы из второй строки, которые уже появляются в первой строке.
Откажитесь от первой строки.
источник
1`
часть антигреп-стадии?1
обычно означает «делай X только один раз». Как именно работает лимит (то есть, что такое X), зависит от типа сцены, которую вы используете. Для этапов antigrep Retina сначала проверяет, какие строки соответствуют регулярному выражению (здесь каждая строка, поскольку регулярное выражение пусто), но затем ограничение означает «только отбросить первую соответствующую строку». Точно так же, если бы это был этап grep, это означало бы «только сохранять первую совпадающую строку». Семантика всех ограничений указана в вики .05AB1E ,
64 байтаСохранено 2 байта с использованием новой
žR
команды, предложенной Кевином КруйссеномПопробуйте онлайн! или как тестовый набор
объяснение
источник
J
возвратEL, LE
?"""{input}"""
, что также работает для пустых строк :).LE
).Java 7,
7358 байт15 байтов сохранено благодаря @KritixiLithos .
Тестовый код:
Попробуй это здесь.
Выход:
источник
"["+s+"]"
вместоs.replaceAll("(.)","$1|")
?EJL
), он снова работает, что все еще намного короче. :)На самом деле , 7 байтов
Попробуйте онлайн!
источник
Pyth, 5 байт
Проверьте это здесь
Расширяется до
источник
<G3
MATL,
108 байтСохранено два байта благодаря Suever.
setdiff
короче чемismember
.Попробуй это здесь!
объяснение
Да, это могло быть тривиальной задачей, но я вполне доволен, что мне удалось решить ее с помощью MATL самостоятельно. Я никогда не говорил, что это было самое короткое решение ... Спасибо, Суэвер!
источник
JavaScript ES6,
41 3938 байтСохранено 2 байта благодаря Арно. Сохранено 1 байт благодаря LarsW.
источник
s=>eval`'ABC'.replace(/[${s}]/g,'')`
.join``
спасает вас два символа над решением я придумал:f=s=>"ABC".replace(RegExp(`[${s}]`,'g'),"")
.V , 10 байт
Попробуйте онлайн!
HexDump:
объяснение
Вход находится в первой строке буфера. Так что-то вроде:
и курсор находится на первом символе. Таким образом, мы удаляем вход (который сохраняет его в регистре
"
) и вводим режим вставки одновременно, используяC
.В режиме вставки вставляются символы
LEJ
, после чего я возвращаюсь в обычный режим с помощью<ESC>
.Теперь мы должны удалить все символы, которые присутствуют на входе.
И как только это произойдет, мы останемся с оставшимися буквами в буфере.
источник
Рубин,
27 1918 байт-1 байт благодаря Мартину Эндеру
источник
Haskell ,
2726 байтовПопробуйте онлайн! Использование:
("ABC"\\) "CB"
урожайность"A"
.\\
является оператором разности множеств, скобки образуют так называемый раздел, который является краткой формой для лямды(\x -> "ABC" \\ x)
.Без импорта: (одинаковое количество байтов благодаря @nimi)
Попробуйте онлайн! Использование:
f "CB"
урожайность"A"
.Другие подходы:
источник
(\\)
скоро будет перенесен в Prelude.Data.Set.difference
.(\\)
не уважает ничего из этого. Типы данных, предназначенные для этого поведения, имеют структуру, которая делает их, как правило, немного более эффективными, более безопасными (потому что никакие возможные предположения о стабильности и т. Д. Не могут быть нарушены) и предоставляет более удобный интерфейс.GNU sed ,
3429 байтВключает +1 для
-r
-5 благодаря цифровой травме
Попробуйте онлайн!
По какой-то причине TIO не работает с расширенным regex (
-r
), поэтому мне пришлось обернуть его в BASH.источник
-n
иP
не нужна. Также вы можете обернуть это в bash, чтобы заставить его работать в TIO. Понятия не имею, почему-r
не работает. tio.run/nexus/bash#DcmxDYAwDATA/qdIR4JELCjp7F8jooIFCPubb@/…Brain-Flak , 120 + 3 = 123 байта
Запускается с
-c
флагом, добавляя 3 байтаПопробуйте онлайн!
объяснение
В целом, эта программа в значительной степени выполняет установку правого стека за вычетом левого стека с правым стеком, инициализированным для,
CBA
и левым стеком, инициализированным для ввода.Аннотированный код
Больше объяснений, чтобы прийти ...
источник
Mathematica, 37 байт
источник
Characters
Морковь , 15 байтов, неконкурирующая
неконкурентный из-за ошибки, которую я обнаружил при возвращении совпадений и пустых строк. Так что я просто исправил
Попробуйте онлайн! (копировать вставить)
объяснение
источник
CJam , 7 байтов
Попробуйте онлайн! (Как набор тестов с разделением строк).
источник
MATLAB / Octave, 20 байтов
Демо онлайн
источник
Октава,
2927 байтБлагодаря Suever удалось сохранить два байта, создав строку
'ABC'
внутриismember
вызова.Мы используем в
~ismember()
качестве логических индексов для переменнойx
. Особенность в том, что мы создаемx='ABC'
внутриismember
, а не перед ним. Орден видит это следующим образом:источник
C #,
50 байтов32 байта47 байтов35 байтовгде
i
вход:Полное приложение протестировано в LINQPad
Результаты теста
источник
string.Join("",...)
->string.Concat(...)
Сохраняет 1 байтAPL, 7 байт
~
установлено вычитание,∘
составить, так что это функция, которая возвращаетABC
минус символы на входе.источник
Медуза , 9 байт
Попробуйте онлайн!
В более привычных обозначениях эта программа переводится как:
I
является вводом,N
является разницей в списке иP
является выводом.источник
Perl 5.9.9
79 38 3735 байт(не уверен в правилах подсчета здесь - включены ключи, но не команда perl).
(скорректированное количество после комментария решения ниже)
источник
-l
флаг). :)perl -pe'$_=eval"ABC=~y/$_//dr"'
только 23 байта (22 + 1 для-p
).Common Lisp, 71 байт
Самая большая запись на данный момент, но, по крайней мере, она читаема ;-)
источник
Japt ,
1312 байтСохраненный байт благодаря ETHproductions.
Попробуйте онлайн!
источник
Pyth, 4 байта
Попробуй это здесь!
Обратите внимание, что здесь используется нижний регистр, который может быть неприемлемым
источник
C, 53 байта
Если неявные объявления string.h не разрешены, 72 байта , для добавления
#include<string.h>
Попробуйте онлайн!
или что-то более веселое в 75 байтов
Попробуйте онлайн!
источник
Пакет, 101 байт
Принимает ввод в STDIN, что означает, что
%1
он пуст, когда код падает в подпрограмму помощника и ничего не печатается.источник
R ,
4740 байтПопробуйте онлайн!
Заменяет любые буквы во входной строке пустой строкой.
источник