Dadas duas seqüências, produza uma terceira sequência que não é igual a nenhuma das duas entradas, mas tem o mesmo comprimento (em caracteres) que qualquer uma das entradas. É garantido que haja pelo menos uma saída válida.
Casos de teste
Os casos de teste são citados para mostrar que são cadeias. As saídas são uma das muitas possíveis.
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"
Regras
- Você pode escolher seu domínio de entrada, mas ele deve ser composto de pelo menos ASCII imprimível e seu domínio de saída deve ser o mesmo que seu domínio de entrada.
- Os comprimentos de entrada podem ser iguais ou diferentes.
- A saída deve ser válida com probabilidade 1; isto é, você pode gerar seqüências aleatórias até que uma seja válida (e teoricamente você pode executar um loop infinito), mas não pode simplesmente gerar uma sequência aleatória e esperar que seja válida. Observe que isso significa que sua saída não precisa ser determinística.
- Novas linhas de rastreamento automáticas são permitidas, mas elas não contam para o comprimento da saída.
- Devido a perguntas relacionadas a erros de memória, ele deve funcionar dentro de 60 segundos até os comprimentos de entrada de
6
. Uma resposta que funciona para isso e teoricamente funciona para seqüências mais longas é OK, mas algo que Erros de memória no computador moderno para o comprimento da entrada4
não seja válido.
Isso é código-golfe , então a resposta mais curta em bytes vence.
Respostas:
05AB1E ,
87 bytesUsa a codificação 05AB1E . Experimente online!
fonte
Haskell, 43 bytes
Pega a string max (lexicograficamente mais tarde), que sabemos que não é vazia; substitui todos os caracteres por um de "a", "b" e "c" usando
<$
; e retorna o primeiro que não é uma das entradas. Acho que isso é semelhante à resposta do Neil's Charcoal e / ou da resposta do geokavel CJam .(Eu espreitei por um tempo, mas esta é minha primeira vez respondendo neste site; oi!)
fonte
Brainfuck, 97 bytes
Execute o código online (observe que "memória dinâmica" deve ser selecionada no canto inferior direito)
Desafio incrível! Eu pensei que seria trivial, mas acabou sendo realmente difícil. Continuo voltando, porque sinto que deve haver uma solução elegante de BF de 20 ou mais bytes. Neste ponto, estou muito feliz por ter (aparentemente) conseguido que funcionasse no BF.
A entrada é tomada como
str1
+\0
+str2
, onde as seqüências de caracteres são caracteres consecutivos diferentes de zero byte.Retorna
(first str1 + first str2) or (first str1 + 1) or 2
. Este algoritmo foi pensado pelo brilhante ØrjanJohansen, (presumivelmente) baseado no meu (quebrado) original.Comentado:
fonte
a=2
,b=1
. Você precisa adicionar em vez de subtrair.S
problema vazio adicionando>
no início e depois executando[<]>
no byte mais à esquerda deS
- se for diferente de zero, não fará nada, caso contrário, alterna as strings.b
. Mas nãoa
.!= a
apenas, se eu imprimir emS/0, S/1, ...
vezS/0, F/1, ...
dele, deve funcionar.Gelatina , 8 bytes
Experimente online!
Quão?
fonte
B
TIOX
ouẊ
lá ...Python 3 ,
6247575451 bytesEdit: - 5 bytes graças a @ Mr.Xcoder
Editar: +10 bytes para corrigir um erro
Edit: -3 bytes graças a @betaveros
Editar: -3 bytes usando max em vez de pop
Experimente online!
fonte
{"a","b","c"}
==>{*"abc"}
( 57 bytes )(x[1:]or y[1:])
==>max(x,y)[1:]
?(x or y)[1:]
, acho que você só precisa evitar a string vazia.{*"abc"}
em{*`id`}
...*len(x or y)
vez de+max(x,y)[1:]
.Carvão , 22 bytes
Experimente online! Link é a versão detalhada do código. Gera todas as seqüências de caracteres em maiúsculas repetidas para o comprimento da entrada mais longa e superimprime todas as que não aparecem na entrada. Em outras palavras, a saída é normalmente, a
ZZZ...
menos que seja uma das entradas; nesse caso, aYYY...
menos que seja a outra entrada; nesse caso, éXXX...
.fonte
Mathematica, 111 bytes
experimente online (cole o código com ctrl + v, insira a entrada no final e pressione Shift + Enter)
entrada
thanx @Não existe uma árvore para verificar e jogar golfe -21 bytes
fonte
Perl 6 ,
3830 bytesExperimente online!
Código de bloqueio anônimo que recebe entrada como uma lista de duas cadeias e retorna o primeiro número
1111...
com uma quantidade não vazia de 1s que não está na entrada.Explicação:
fonte
long long
infelizmente.Zsh ,
51473736 bytes-4 bytes usando incorporado matriz
argv
, -10 bytes usando remoção prefixo eRC_EXPAND_PARAM
, -1 byte por inlining a expansão cinta.Experimente online!
Primeiro, este foi um desafio incrível, passei por uma tonelada de idéias antes de aterrar nessa.
@
e*
não são identificadores, por isso${ :|@}
e${ :|*}
não fazer o trabalho, portanto, o uso de${ :|argv}
Zsh ,
4847 bytes *Experimente online!
Método completamente novo, cortesia da submissão Perl 6 do JoKing, mas não funciona em strings grandes (n> 20) devido a restrições de tamanho inteiro.
$@[(I)$i]
é uma pesquisa de matriz reversa para o maior índice, ele produzirá zero (falsidade na expansão aritmética) se $ i não for encontrado nos parâmetros da linha de comando.fonte
MATL , 12 bytes
Input é uma matriz de células que contém caracteres ASCII imprimíveis. A saída é formada a partir das letras
'ABC'
e, portanto, pertence ao domínio de entrada.Experimente online!
Explicação
A saída é tão longa quanto a maior string de entrada. Sua n caráter -ésima é a primeira letra do
'ABC'
que é diferente do n caráter -ésimo de ambas as cadeias de entrada.fonte
Haskell,
565248 bytesExperimente online!
Substituir o primeiro caractere da máxima das duas cadeias de entrada com
a
,b
ec
e escolher o primeiro que é diferente de ambas as cadeias de entrada.fonte
Ruby , 53 bytes
Experimente online!
Basicamente gera as cadeias
a...a
,b...b
ec...c
e seleciona o primeiro não na entrada.fonte
ES6, 54 bytes
fonte
Pitão, 7
8bytes1 byte graças a Jakube
Suíte de teste
Utilizamos a
.T
transposição de preservação de comprimento, e não aC
transposição de truncamento, para que funcione nas entradas em que uma sequência está vazia.Dadas duas seqüências de caracteres como uma tupla, nós
.T
as transpomos ()-LG
, em seguida, mapeamos o par de caracteres resultante ou o caractere único subtraindo o (s) caractere (s) do alfabeto inferior com , depois transpomos a lista resultante de strings de caracteres não utilizados com eC
, em seguida, retornamos a primeira dessas cordas comh
. Consiste na primeira letra alfabética que não está em nenhuma das seqüências, para cada posição.fonte
Java (OpenJDK 8) ,
10073 bytes-27 bytes graças ao toque mágico de @ Nevay! :)
Experimente online!
Domínio de entrada = ASCII imprimível + ponto de código 127.
fonte
Ruby, 56 bytes
fonte
Pitão ,
2322 bytesExperimente aqui!
Pitão , 22 bytes
Suíte de teste!
Explicação
fonte
Perl 5,
8279 bytesRecebe a entrada como dois argumentos separados e retorna a terceira sequência.
A sub-rotina tenta produzir uma sequência muito semelhante à primeira, mas com o primeiro não
z
caractere substituído por az
. Em seguida, lida com os casos de canto, substituindo o primeiro caractere por ,y
oux
, conforme necessário, se descobrir que uma das entradas era de fato uma sequência de todasz
.fonte
Perl 5 , 68 bytes
Explicação:
Partir de "a" s era evitar incrementar até o ponto em que Perl alonga a string; com apenas duas cordas para evitar ser o mesmo, não poderia transbordar.
Executar com:
fonte
C (gcc) ,
7065736761 bytesA função precisa que as seqüências fornecidas sejam mutáveis (ou seja, matrizes ou alocadas dinamicamente).
Experimente online!
Funciona para a linha ASCII padrão
Explicação:
fonte
*a==255
e*b==0
?R,
8967 bytes@Giuseppe salvou 9 bytes, @ user2390246 salvou 13 bytes
função
demonstração
fonte
x
ey
dentro do mesmosubstr
comando. Além disso, chaves ereturn
são desnecessários:function(x,y)sub("^.",letters[!letters%in%substr(c(x,y),1,1)][1],x)
return
já que essa é uma função, e o aparelho, uma vez que é uma linha.f("","1")
os rendimentos""
, que é igual à primeira entrada ... talvez este deve ser adicionado como um outro caso de testeJava 8, 119 bytes
Lambda (ao curry) de
String
para lambda deString
paraString
. Atribuir aFunction<String, Function<String, String>>
.Experimente Online
Lambda ungolfed
Esta solução gira caracteres ASCII aleatórios na cadeia mais longa até que as condições necessárias sejam atendidas. As entradas são UTF-8 e as saídas são ASCII.
Não conheço os detalhes do Unicode, mas parece plausível para mim que essa solução possa falhar quando um anexo
char
se une ao ponto de código anterior para formar uma única unidade de código. Se alguém que souber mais sobre isso puder verificar isso, alterarei o domínio de entrada para ASCII.Java 8, 126 bytes
Mesmo tipo que acima.
Experimente Online
Lambda ungolfed
Isso incrementa o primeiro byte da cadeia mais longa, quebrando dentro do ASCII, até que as condições necessárias sejam atendidas. Entradas e saídas são sequências ASCII.
fonte
APL (Dyalog Unicode) , 11 bytes SBCS
Programa completo, recebe entrada como uma lista aninhada de 2 elementos.
Experimente online!
fonte
Bash,
115.. 77 bytesSubstitui o primeiro caractere da primeira sequência de entrada (não vazia) por 1,2,3 até que nenhuma correspondência seja encontrada em nenhuma das entradas. Experimente Online!
-9, -12, -9, -8 bytes, tudo graças à GammaFunction
(uma melhoria em relação ao original ... )
fonte
=
e||
na última linha e usar${x:-empty_fallback}
para remover o ternário inicial. Além disso, você precisa de aspas no eco final para o caso de espaços à direita. TIO obrigatórioshift
, consegui amarrar meu método em dois métodos diferentes .@($1|$2)
correspondência de padrõesPerl 5 , 79 + 1 (-p) = 80 bytes
Experimente online!
fonte
Japonês , 17 bytes
Repete as letras
A-Z
para o comprimento da entrada mais longa, remove os valores na entrada e obtém o primeiro item da matriz.Experimente online!
Solução antiga, 18 bytes
Experimente online!
Escolhe um caractere aleatório do alfabeto e o repete no comprimento da string de entrada mais longa, até que ele não esteja presente na entrada.
fonte
["abcdefghijklmnopqrstuvwxyz", "AAAAAAAAAAAAAAAAAAAAAAAAAA"]
. Quando executá-lo várias vezes, ele retornou"AAAAAAAAAAAAAAAAAAAAAAAAAA"
(assim como a minha resposta Pyth fez, até que eu fixo que)Ì
deve funcionar no lugar deg1
uma economia de 2 bytes (em uma matriz de 2 elementosg1
=gJ
), mas parece haver um erroÌ
ao usar;
.J
não é mais-1
por causa da;
mudança,
. É por isso que eu usei1
em primeiro lugar.Python 3,
7473 bytes-1 byte graças a Step Hen
Imprime o número inteiro mais baixo com o mesmo comprimento que a primeira das entradas que possui um comprimento diferente de zero.
fonte
i
como um parâmetro de função padrão:def f(x,y,i=1):
. Acho que você pode salvar outro byte,while10*i
mas não tenho certeza.while i*10<10**len(x or y)or str(i)in x+y
porwhile i<10**~-len(x or y)or str(i)in x+y
( 72 bytes )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 bytes )Python 2, 77 bytes
Eu acho que tem algum potencial. A idéia é que ele adicione 1 ao 1º caractere na 1ª sequência e verifique se o 1º caractere da outra entrada é o mesmo.
** Observe que ^ não manipula 0 strings de comprimento, portanto, ele realmente não funciona nesse comprimento.
Aqui está uma solução super longa que funciona com 0 comprimento
146 bytes
Qualquer melhoria seria apreciada!
fonte
CJam,
313023 bytesToma ASCII imprimível como entrada. Emite uma sequência de 0, 1 ou 2 com o mesmo comprimento de uma das sequências de entrada. A lógica é que uma dessas não pode ser uma das cadeias de entrada!
Experimente Online
fonte
:+!
.C # (Mono) , 94 bytes
Experimente online!
fonte