Вызов
Напишите программу, которая применяет инъективную функцию, которая принимает упорядоченную пару строк в качестве входных данных и одну строку в качестве выходных. Другими словами, каждый вход должен отображаться на уникальный выход.
конкретика
- Входными данными могут быть любые две строки произвольной длины, но они будут состоять только из печатных символов ASCII (коды ).
- Аналогично, выходная строка не имеет ограничений по длине, но она должна состоять только из печатных символов ASCII.
- Если ваш язык не может обрабатывать строки произвольной длины, программа может просто теоретически работать для строк любого размера.
- Соотношение между входами и выходами должно быть согласованным между выполнениями программы. В противном случае, используемое вами отображение полностью зависит от вас, если это инъекция.
- Вход упорядочен. Если две входные строки различаются, они должны выдавать другой вывод, чем если бы они были поменяны местами.
- Не каждая строка должна быть возможным выводом.
- Самый короткий ответ на каждом языке выигрывает!
Контрольные примеры
Следующие входы должны привести к различным выходам. Чтобы избежать путаницы, строки окружены гильеметами («») и разделены пробелами.
"Привет, мир" «Лельхо» «дроул» "разные" "не то же самое" «Код» «Гольф» «Ко» «ДеГольф» «CodeGolf» «» «» «» «» «» «» «» «» «» «» «» «Abc», »« def » «Abc» «,« def » «Abc» »« def » «Abc» »« def » «\» «" » «\\» «\" »
Ответы:
бред,
30292723 байтаПопробуйте онлайн!
Входы разделены
0x01
байтом.Это превращается
["foo", "bar"]
вfUToUToUTUTbUTaUTrUT
. Чтобы восстановить исходные две строки, возьмите группы из 3 символов, найдите ту, в которой нет второй буквыU
, и разбейте ее там.источник
JavaScript (ES6), 14 байт
Принимает ввод как массив из 2 строк. Вдохновлен ответом Луиса .
Попробуйте онлайн!
JavaScript (ES6),
2120 байтПринимает вход как
(a)(b)
.Попробуйте онлайн!
Возвращает длинуa , за которой следует запятая, а затем конкатенация a и b .
источник
stringify
трюк сам!a="hello",""
b="world"
иa="hello"
b="","world"
["\"hello\",\"\"","\"world\""]
и["\"hello\"","\"\",\"world\""]
.JSON.stringify()
определенно убегает"
. Смотрите шестнадцатеричный дамп .jq -c, 0 байт
Попробуйте онлайн!
Это определенно похоже на обман ...? Но, похоже, соответствует правилам вызова.
По умолчанию
jq
выводит вводимые данные в удобочитаемом формате JSON.-c
(Компактный) флаг , который указываетjq
на выход в «компактном» стиле, который удаляет символ новой строки (так как вызов запрещает непечатаемых ASCII).источник
["","x"]
и["x",""]
соответственноPython 3 , 3 байта
(Встроенная) функция, которая, учитывая список из двух строк, дает строковое представление списка
Попробуйте онлайн!
источник
Japt
-S
, 3 байтаЯ все еще чувствую, что, должно быть, что-то здесь упускаю
Попытайся
Возможно 2 байта:
Попытайся
Или растягивая его с помощью этого 1 байта:
Попытайся
Первая версия отображает каждую строку в массиве на его кодовые точки и выводит их вместе с пробелом.
Вторая версия разбивает каждую строку на массив символов и выводит их вместе с пробелом.
И третья версия, которая выглядит как мошенничество, просто выводит ввод с
-Q
флагом, выполняя тяжелую работу надsrringify
ним.источник
Pyth , 4 байта
Попробуйте онлайн!
Это преобразует каждую строку в базу 256, а затем соединяет их в порядке с
"
. Поскольку результаты представляют собой числа, они"
однозначно разделяют их, и исходные строки можно восстановить с помощьюmCsdczN
.источник
T-SQL, 38 байт
varchar
Использует
QUOTENAME
, который окружает строки,[]
а также экранирует любые внутренние скобки. Должен отображаться на уникальный выход.источник
SELECT CONCAT(QUOTE(a),QUOTE(b))FROM t
попробуйте онлайнЗш , 7 байт
Попробуйте онлайн!
Неявно объединяет аргументы на пространствах.
q
Модификатор говорит ЗШ цитировать аргументы, которые кардинально ускользают пространства, обеспечивая неэкранированное пространство однозначно разделяет два аргумента.(Без
q
,"a " "b"
и"a" " b"
оба дали бы"a b"
.)источник
MATL , 1 байт
Код принимает массив из двух строк в качестве входных данных и выводит строковое представление этого массива.
Попробуйте онлайн!
объяснение
Код просто читает входные данные в виде строки, без оценки.
источник
Желе , 2 байта
Монадическая ссылка, принимающая список из двух списков символов в качестве аргумента, который выдает один список символов.
Попробуйте онлайн!
Как?
Это встроенный способ получения строкового представления Python, просто.
источник
Haskell, 4 байта
Haskell встроен, чтобы превратить вещи в строки. Ввод принимается в виде пары строк.
Попробуйте онлайн!
источник
05AB1E , 2 байта
Попробуйте онлайн! Интерпретирует каждую строку как целое число-256, а затем печатает их в форме
[1, 2]
.05AB1E, 1 байт (срок действия неизвестен)
Попробуйте онлайн!
Принимает декартово произведение ввода с собой. Кавычки во входных данных не экранируются, что может привести к путанице. Я перебрал все комбинации до 12
", "
и"], ["
столкновения не нашел; тем не менее, я не могу доказать, что для более длинных строк нет столкновений. Если кто-нибудь может придумать доказательства или контрпример, я был бы очень признателен!Тривиальный 0-байтовый код завершается ошибкой из-за того, что кавычки не экранированы: входные данные (
", "
, пустая строка) и (пустая строка", "
) оба выдают результат["", "", ""]
.1-байт
º
(зеркально отображает каждую входную строку) также дает сбой из-за этого: входные данные (", "" ,"
, пустая строка) и (пустая строка" ,"", "
) оба выдают результат["", "" ,"", "" ,"", ""]
.источник
C # с 26 байтами (спасибо Лукасу Лангу, Кевину Круйссену и Джо Кингу)
tio.run лямбда
источник
$"{a.Length}.{a}{b}"
- вы всегда можете извлечьa
иb
из этого без каких-либо двусмысленность (просто читайте до тех пор, пока первым не.
a
b
Древесный уголь , 12 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
источник
PowerShell , 22 байта
Много исправлений благодаря Маззи
Попробуйте онлайн!
Возьми пять, о боже.
источник
"ab" "c"
и"a" "bc"
оба выдают одинаковый результат.р , 4 байта
Попробуйте онлайн!
Встроенная функция, которая возвращает строковое представление ввода (вдохновленный ответом Джонатана Аллана )
источник
Wolfram Language (Mathematica) , 8 байт
Попробуйте онлайн!
источник
{"Hello, ","World"}
и{"Hello",", World"}
они не дают одну и ту же строку?Compress
это тогдаCSS + HTML, 55 + 20 = 75 байт
Введите входные данные в HTML после
<code>
тегов. Визуально вводит буквы по одной из каждого ввода в вывод. Когда вход длиннее, чем другой, визуальные пробелы отображаются для пропущенной буквы (букв) более короткого ввода. Также одна запятая добавлена в HTML для обеспечения уникальности визуального вывода (я надеюсь).источник
C # (интерактивный компилятор Visual C #) , 5 байт
Попробуйте онлайн!
источник
Perl 6 ,
63 байтаПопробуйте онлайн!
Выводит представление объекта в STDERR.
источник
["Hello, ", "World!"]
Луа , 27 байт
Попробуйте онлайн!
Полная программа, принять входные данные в качестве аргументов.
Вдохновлен ответом zsh, так как он также использует
%q
модификатор для использования внутреннего движка безопасной строки.Кроме того, я могу думать только о
но я не уверен, что это приемлемый ответ.
источник
('%q%q'):format
как не приводит к объекту, который, например, может быть назначен переменной. Это просто вызывает синтаксическую ошибку самостоятельно. Синтаксис двоеточия - это просто сокращение,'%q%q'.format('%q%q', ...)
а Lua не допускает частичного применения функцийsed , 19 байт
Попробуйте онлайн!
источник
JavaScript (SpiderMonkey) , 6 байт
Попробуйте онлайн!
Введите массив строк, выведите одну строку.
Вдохновленный ответом JSON.stringify Арно .
источник
C (gcc) , 59 байт
Спасибо Грими за предложение.
Принимает массив входных строк (из которых «2» - правильный номер для этой задачи) и печатает их значения символов, включая завершающий
NUL
. Технически%p
форматер используетсяprintf
для указателей, но он отлично работает для отображения шестнадцатеричных значений произвольных целых чисел, если вы не разборчивы в том, как они выглядят!Попробуйте онлайн!
источник
Брахилог , 0 байт
Ввод в виде массива из 2 строк, вывод в формате:
Z = ["{{string 1 stringified}}","{{string 2 stringified}}"]
Вдохновленный JSON.stringify ответ Arnauld в и пустой JQ ответ дверную ручку в
Попробуйте онлайн!
источник
PHP , 9 байт
Попробуйте онлайн!
Входной массив из 2 строк , как это:
['abc', 'def']
. Использует сериализацию PHP для сериализации ввода в строку.источник
Баш , 11 байт
Попробуйте онлайн!
${parameter@Q}
цитирует параметр для повторного использования в качестве ввода. В случае массива он цитирует каждый элемент.источник
Рубин , 12 байт
Попробуйте онлайн!
источник