Учитывая две строки, выведите третью строку, которая не равна ни одному из двух входов, но имеет ту же длину (в символах), что и любой из входов. Там гарантированно будет хотя бы один действительный вывод.
Тестовые случаи
Тестовые случаи цитируются, чтобы показать, что они являются строками. Выходы являются одними из многих возможных.
input, input -> output
"test", "test" -> "tttt"
"do", "don't" -> "dnut_"
"ye s", "yes" -> "fals"
"yes", "yes" -> "noo"
"maybe", "mayue" -> "false"
"false", "false" -> "truee"
"false", "true" -> "fatr"
"1", "" -> "0"
"", "t" -> "s"
"", "abcabc" -> "testst"
"abcdefghijklmnopqrstuvwxyz", "aaaaaaaaaaaaaaaaaaaaaaaaaa" -> "zbcdefghijklmnopqrstuvwxya"
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" -> "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
правила
- Вы можете выбрать свой входной домен, но он должен состоять как минимум из печатного ASCII, и ваш выходной домен должен совпадать с вашим входным доменом.
- Длина ввода может быть одинаковой или разной.
- Вывод должен быть действительным с вероятностью 1; то есть вы можете генерировать случайные строки до тех пор, пока одна из них не будет действительной (и теоретически вы можете создать бесконечный цикл), но вы не можете просто вывести случайную строку и надеяться, что она действительна. Обратите внимание, что это означает, что ваш вывод не должен быть детерминированным.
- Разрешены автоматические трейлинг-строки, но они не учитываются в зависимости от длины вывода.
- Из-за вопросов, касающихся ошибок памяти, он должен работать в течение 60 секунд, вплоть до длины ввода
6
. Ответ, который работает для этого и теоретически работает для более длинных строк, в порядке, но что-то, что Ошибки памяти на современном компьютере для длины ввода4
недопустимы.
Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Ответы:
05AB1E ,
87 байтИспользует кодировку 05AB1E . Попробуйте онлайн!
источник
Haskell, 43 байта
Принимает максимальную (лексикографически позднее) строку, которая, как мы знаем, непуста; заменяет все символы одним из символов "a", "b" и "c" с помощью
<$
; и возвращает первое, которое не является ни одним из входов. Я думаю, что это похоже на ответ Нила на уголь и / или ответ геокавела на CJam .(Я скрывался некоторое время, но я впервые отвечаю на этом сайте; привет!)
источник
Brainfuck, 97 байт
Запустите код онлайн (обратите внимание, что «динамическая память» должна быть выбрана в правом нижнем углу)
Потрясающий вызов! Я думал, что это будет тривиально, но это оказалось очень сложно. Я продолжаю возвращаться к этому, потому что я чувствую, что должно быть какое-то элегантное 20-байтовое BF-решение. На данный момент, я очень рад, что (по-видимому) заставил его работать вообще в BF.
Ввод принимается как
str1
+\0
+str2
, где строки - это последовательные ненулевые 1-байтовые символы.Возвращает
(first str1 + first str2) or (first str1 + 1) or 2
. Этот алгоритм был придуман блестящим @ ØrjanJohansen, (предположительно) на основе моего (сломанного) оригинала.комментарии:
источник
a=2
,b=1
. Вы должны добавить вместо вычитания.S
пустую проблему, добавив>
в начале, а затем выполнив[<]>
самый левый байтS
- если он ненулевой, он ничего не делает, иначе он переключает строки.b
. Но нетa
.!= a
только, если я печатаю,S/0, S/1, ...
а неS/0, F/1, ...
он должен работать.Желе , 8 байт
Попробуйте онлайн!
Как?
источник
B
TIOX
Ẋ
Python 3 ,
6247575451 байтИзменить: - 5 байт благодаря @ Mr.Xcoder
Изменить: +10 байт, чтобы исправить ошибку
Изменить: -3 байта благодаря @betaveros
Изменить: -3 байта, используя максимум вместо поп
Попробуйте онлайн!
источник
{"a","b","c"}
==>{*"abc"}
( 57 байт )(x[1:]or y[1:])
==>max(x,y)[1:]
?(x or y)[1:]
, я думаю, вам нужно только избегать пустой строки.{*"abc"}
в{*`id`}
...*len(x or y)
вместо+max(x,y)[1:]
.Древесный уголь , 22 байта
Попробуйте онлайн! Ссылка на подробную версию кода. Создает все строки символов в верхнем регистре, повторяемые по длине более длинного ввода, и перезаписывает все те, которые не отображаются во вводе. Другими словами, выходной сигнал обычно есть,
ZZZ...
если только он не является одним из входов, в этом случае он являетсяYYY...
исключением, если это не другой вход, в этом случае этоXXX...
.источник
Mathematica, 111 байт
попробуйте онлайн (вставьте код с помощью Ctrl + V, поместите ввод в конец и нажмите Shift + Enter)
вход
спасибо @ Не дерево для проверки и игры в гольф -21 байт
источник
Perl 6 ,
3830 байтПопробуйте онлайн!
Анонимный кодовый блок, который принимает входные данные в виде списка из двух строк и возвращает первое число из
1111...
с непустым значением 1, которого нет во входных данных.Объяснение:
источник
long long
к сожалению.Zsh ,
51473736 байт-4 байт, используя встроенный массив
argv
, -10 байт с помощью удаления префикса иRC_EXPAND_PARAM
, -1 байт за встраивание расширения скобки.Попробуйте онлайн!
Во-первых, это был потрясающий вызов, перед тем как приземлиться, я изучил массу идей.
@
и*
не являются идентификаторами, поэтому${ :|@}
и${ :|*}
не работают, отсюда и использование${ :|argv}
Zsh ,
4847 байтов *Попробуйте онлайн!
Полностью новый метод любезно предоставлен JoKing Perl 6, но не работает с большими строками (n> 20) из-за целочисленных ограничений размера.
$@[(I)$i]
обратный поиск в массиве по наибольшему индексу, он будет выводить ноль (ложь в арифметическом расширении), если $ i не найден в параметрах командной строки.источник
MATL , 12 байт
Input - это массив ячеек, содержащий печатные символы ASCII. Выходные данные формируются из букв
'ABC'
и поэтому принадлежат домену ввода.Попробуйте онлайн!
объяснение
Вывод равен длине самой длинной входной строки. Его n-й символ - это первая буква,
'ABC'
которая отличается от n-го символа обеих входных строк.источник
Haskell,
565248 байтПопробуйте онлайн!
Заменить первый символ максимума двух входных строк с
a
,b
иc
и выбрать первый , который отличается от обоих входных строк.источник
Рубин , 53 байта
Попробуйте онлайн!
В основном генерирует строки
a...a
,b...b
иc...c
и выбирает первую, не входную.источник
ES6, 54 байта
источник
Pyth, 7
8байт1 байт благодаря Якубе
Тестирование
Мы используем
.T
транспонирование с сохранением длины, а неC
усечение транспонирования, чтобы оно работало на входах, где одна строка пуста.Учитывая две строки как кортеж, мы транспонируем их (
.T
), затем отображаем полученную пару символов или один символ, вычитая символ (ы) из алфавита lowerase с помощью-LG
, затем транспонируем полученный список строк неиспользуемых символов с помощьюC
, затем возвращаем первая такая строка сh
. Он состоит из первой буквы в алфавитном порядке, которой нет ни в одной строке, для каждой позиции.источник
Java (OpenJDK 8) ,
10073 байта-27 байт благодаря волшебному прикосновению @ Nevay! :)
Попробуйте онлайн!
Домен ввода = ASCII для печати + кодовая точка 127.
источник
Рубин, 56 байт
источник
Pyth ,
2322 байтаПопробуй это здесь!
Pyth , 22 байта
Тестирование!
объяснение
источник
Perl 5,
8279 байтПринимает input как два отдельных аргумента и возвращает третью строку.
Подпрограмма пытается создать строку, очень похожую на первую строку, но с первым не-
z
символом, замененным наz
. Затем он обрабатывает угловые случаи, заменяя первый символ наy
илиx
, если необходимо, если обнаруживает, что один из входных данных на самом деле был последовательностью всехz
.источник
Perl 5 , 68 байт
Объяснение:
Начиная с "a", нужно было избегать увеличения до точки, где Perl удлиняет строку; только две строки, чтобы избежать того же самого, он не мог переполниться.
Выполнить с:
источник
C (GCC) ,
7065736761 байтФункция требует, чтобы предоставленные строки были изменяемыми (т. Е. Либо массивами, либо динамически размещаемыми).
Попробуйте онлайн!
Работает для стандартного диапазона ASCII
Объяснение:
источник
*a==255
и*b==0
?R
8967 байт@Giuseppe сохранил 9 байтов, @ user2390246 сохранил 13 байтов
функция
демонстрация
источник
x
и вy
пределах однойsubstr
команды. Также фигурные скобки иreturn
не нужны:function(x,y)sub("^.",letters[!letters%in%substr(c(x,y),1,1)][1],x)
return
этого, поскольку это функция, а скобки - от одного лайнера.f("","1")
доходность""
, которая равна первому входу ... может быть, это следует добавить в качестве еще одного тестового случаяJava 8, 119 байт
Лямбда (карри) из
String
в лямбда изString
вString
. ПрисвоитьFunction<String, Function<String, String>>
.Попробуйте онлайн
Неуправляемая лямбда
Это решение вращает случайные символы ASCII в более длинную строку, пока не будут выполнены требуемые условия. Входы UTF-8 и выходы ASCII.
Я не знаю мельчайших подробностей Unicode, но мне кажется вероятным, что это решение может потерпеть неудачу, когда добавляемый
char
элемент присоединяется к предыдущей кодовой точке, образуя единое кодовое звено. Если кто-то, кто знает больше об этом, сможет это проверить, я изменю домен ввода на ASCII.Java 8, 126 байт
Тот же тип, что и выше.
Попробуйте онлайн
Неуправляемая лямбда
Это увеличивает первый байт более длинной строки, заключая в ASCII, пока не будут выполнены требуемые условия. Входы и выходы являются строками ASCII.
источник
APL (Dyalog Unicode) , 11 байтов SBCS
Полная программа, принимает входные данные в виде 2-элементного вложенного списка.
Попробуйте онлайн!
источник
Баш,
115.. 77 байтЗаменяет первый символ первой (непустой) входной строки на 1,2,3 до тех пор, пока не будет найдено совпадение ни с одним входом. Попробуйте онлайн!
-9, -12, -9, -8 байт все благодаря GammaFunction
(довольно улучшение по сравнению с оригиналом ... )
источник
=
и||
в последней строке, и использовать,${x:-empty_fallback}
чтобы удалить начальный троичный. Кроме того, вам нужны кавычки в конце эхо для случая конечных пробелов. Обязательныйshift
, я получил его , чтобы связать мой метод в двух различных методов .@($1|$2)
сопоставление с образцомPerl 5 , 79 + 1 (-p) = 80 байт
Попробуйте онлайн!
источник
Japt , 17 байт
Повторяет буквы
A-Z
до длины более длинного ввода, удаляет значения из ввода и получает первый элемент в массиве.Попробуйте онлайн!
Старое решение, 18 байт
Попробуйте онлайн!
Выбирает случайный символ из алфавита и повторяет его до длины более длинной входной строки, пока он не будет присутствовать во входных данных.
источник
["abcdefghijklmnopqrstuvwxyz", "AAAAAAAAAAAAAAAAAAAAAAAAAA"]
. Когда он запускался несколько раз, он возвращался"AAAAAAAAAAAAAAAAAAAAAAAAAA"
(так же, как и мой ответÌ
должны работать на местеg1
для сохранения 2 байта (в массиве 2 элементаg1
=gJ
) , но, как представляется, ошибка сÌ
при использовании;
.J
больше не-1
в том, чтобы;
изменить ее на,
. Вот почему я использовал1
в первую очередь.Python 3,
7473 байта-1 байт благодаря Step Hen
Выводит наименьшее целое число с той же длиной, что и первый из входов с ненулевой длиной.
источник
i
качестве параметра функции по умолчанию:def f(x,y,i=1):
. Я думаю, что вы можете сохранить еще один байт,while10*i
но я не уверен.while i*10<10**len(x or y)or str(i)in x+y
наwhile i<10**~-len(x or y)or str(i)in x+y
( 72 байта )f=lambda x,y,i=1:(i<10**~-len(x or y)or str(i)in x+y)and f(x,y,i*2)or i
( 71 байт )Python 2, 77 байт
Я думаю, что у этого есть некоторый потенциал. Идея состоит в том, что он добавляет 1 к 1-му символу в 1-й строке, а затем проверяет, является ли 1-й символ другого входа одинаковым.
** Обратите внимание, ^ не обрабатывает строки 0 длины, поэтому он не работает на этой длине.
Вот очень длинное решение, которое работает с 0 длиной
146 байт
Любые улучшения будут оценены!
источник
CJam,
313023 байтаПринимает для печати ASCII в качестве входных данных. Выводит либо строку из 0, 1 или 2, которая имеет ту же длину, что и одна из входных строк. Логика в том, что одна из них не может быть ни одной из входных строк!
Попробуйте онлайн
источник
:+!
.C # (моно) , 94 байта
Попробуйте онлайн!
источник