Entrada
Uma string que contém no máximo um de cada uma das cartas A
, B
e C
. Eles podem estar em qualquer ordem. A cadeia vazia é uma entrada válida.
Nota: Uma versão anterior deste desafio usava as letras em LEJ
vez de ABC
e elas ainda podem ser usadas, se desejado.
Saída
Uma corda dos A
, B
, C
letras que não estavam presentes na entrada. Eles podem estar em qualquer ordem.
Se a saída for a sequência vazia, simplesmente não fornecer saída é válida, se isso fizer sentido para sua implementação. (por exemplo, você não precisa realmente chamar print
uma string vazia.)
Exemplos
- Se a entrada for
B
, a saída deve serCA
ouAC
desdeA
eC
não está presente na entrada. - Se a entrada for a sequência vazia, a saída deverá ser
ABC
ou qualquer permutação, pois nenhuma das três letras está presente na entrada. - Se a entrada for
CAB
, a saída deve ser a sequência vazia, porque todas as três letras estão presentes na entrada.
Casos de teste
Existem tão poucos casos de entrada que podemos enumerar todos eles:
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
Todas as saídas válidas para cada entrada são fornecidas, separadas por |
's. ""
representa a cadeia vazia
Pontuação
O código mais curto em bytes vence. Mas lembre-se de que você pode obter mais reconhecimento por resolver o desafio de uma maneira única , e não de uma maneira curta;)
fonte
Respostas:
Python 3,
292722 bytes-2 bytes graças a Jonathan Allan
-5 bytes graças a Rod
fonte
print(*{*"LEJ"}-{*input()})
salva 2. (testado em 3.5 e 3.6).Gelatina , 4 bytes
Obrigado a @DuctrTape pelo prod sobre a mudança e a presença de "ABC" no dicionário de Jelly.
Experimente online!
“ḃ»
procura a entrada "ABC" no dicionário de Jelly,ḟ
é o díodo de descarte do arquivador que descarta os caracteres encontrados na entrada dessa lista de caracteres. O resultado é impresso implicitamente.Para uma versão em minúscula, a entrada do dicionário a ser usada pode ser "abac" (
“c»
) ou "abaca" (“i»
).Quando o desafio era "LEJ", apenas 6 bytes podiam ser alcançados na variante maiúscula, pois não existem entradas de dicionário com esse conjunto de caracteres, deixando-nos criar a lista de caracteres
“LEJ”
(ou uma permutação dos mesmos).A variante minúscula apresentou melhor desempenho em 5 bytes devido à presença da palavra "gelatina" (
“ẎṄ»
).fonte
Bash + coreutils, 15 bytes
Experimente online!
Gostaria de omitir o
x
, mastr -d
estaria faltando um argumento quando a string de entrada estivesse vazia. (Elex
não causa nenhum dano, pois não há x no LEJ da string aqui.) Normalmentetr -d "$1"
, eu escreveria , mas fazê-lo da maneira que fiz é um byte menor que isso.fonte
Retina , 14 bytes
A contagem de bytes assume a codificação ISO 8859-1.
Experimente online!
Explicação
Acrescente uma segunda linha contendo
ABC
.Desduplicar os caracteres. Isso exclui todos os caracteres da segunda linha que já aparece na primeira linha.
Descarte a primeira linha.
fonte
1`
parte do estágio antigrep funciona?1
geralmente significa "apenas faça X uma vez". Como exatamente os limites funcionam (ou seja, o que é X) depende do tipo de estágio que você está usando. Para estágios antigrep, Retina primeiro verifica quais linhas correspondem ao regex (aqui, todas as linhas, uma vez que o regex está vazio), mas o limite significa "apenas descartar a primeira linha correspondente". Da mesma forma, se fosse um estágio grep, significaria "apenas manter a primeira linha correspondente". A semântica de todos os limites está listada no wiki .05AB1E ,
64 bytes2 bytes salvos usando o novo
žR
comando, conforme sugerido por Kevin CruijssenExperimente online! ou como testes
Explicação
fonte
J
retornar apenasEL, LE
?"""{input}"""
, o que também funciona para cadeias vazias :).LE
).Java 7,
7358 bytes15 bytes salvos graças a @KritixiLithos .
Código do teste:
Experimente aqui.
Saída:
fonte
"["+s+"]"
vez des.replaceAll("(.)","$1|")
?EJL
), ele funciona novamente, o que ainda é muito mais curto. :)Na verdade , 7 bytes
Experimente online!
fonte
Pitão, 5 bytes
Teste aqui
Expande para
fonte
<G3
MATL,
108 bytesEconomizou dois bytes graças a Suever.
setdiff
é mais curto queismember
.Experimente aqui!
Explicação
Sim, isso pode ter sido uma tarefa trivial, mas estou bastante satisfeito por conseguir resolvê-lo sozinho com o MATL. Eu nunca disse que era a solução mais curta ... Obrigado Suever!
fonte
JavaScript ES6,
41 3938 bytesEconomizou 2 bytes graças a Arnauld. Economizou 1 bytes graças ao LarsW.
fonte
s=>eval`'ABC'.replace(/[${s}]/g,'')`
.join``
poupa dois personagens sobre a solução que eu tinha vindo acima com:f=s=>"ABC".replace(RegExp(`[${s}]`,'g'),"")
.V , 10 bytes
Experimente online!
Hexdump:
Explicação
A entrada está na primeira linha do buffer. Então, algo como:
e o cursor está no primeiro caractere. Portanto, excluímos a entrada (que a armazena no registro
"
) e entramos no modo de inserção simultaneamente usandoC
.Uma vez no modo de inserção, os caracteres
LEJ
são inseridos, após o que eu volto ao modo normal usando<ESC>
.Agora temos que remover todos os caracteres presentes na entrada.
E uma vez que isso acontece, ficamos com as letras restantes no buffer.
fonte
Ruby,
27 1918 bytes-1 byte graças a Martin Ender
fonte
Haskell ,
2726 bytesExperimente online! Uso:
("ABC"\\) "CB"
rendimentos"A"
.\\
é o operador de diferença definida, os parênteses formam uma seção chamada que é uma forma abreviada para a lamda(\x -> "ABC" \\ x)
.Sem importação: (mesma contagem de bytes graças a @nimi)
Experimente online! Uso:
f "CB"
rendimentos"A"
.Outras abordagens:
fonte
(\\)
que seja transferido para o Prelude em breve.Data.Set.difference
.(\\)
não respeita nada disso. Os tipos de dados que se destinam a esse comportamento têm uma estrutura que os torna geralmente um pouco mais eficientes, mais seguros (porque nenhuma suposição possível de estabilidade etc. pode ser quebrada) e expondo uma interface mais confortável.GNU sed ,
3429 bytesInclui +1 para
-r
-5 graças ao Digital Trauma
Experimente online!
Por alguma razão, o TIO não funciona com o regex estendido (
-r
), então tive que envolvê-lo no BASH.fonte
-n
eP
são desnecessários. Também é possível agrupar isso no bash para que ele funcione no TIO. Não-r
faço ideia por que não funciona. tio.run/nexus/bash#DcmxDYAwDATA/qdIR4JELCjp7F8jooIFCPubb@/…Flak cerebral , 120 + 3 = 123 bytes
É executado com o
-c
sinalizador, adicionando 3 bytesExperimente online!
Explicação
No geral, esse programa praticamente faz o conjunto da pilha direita menos a pilha esquerda, com a pilha direita inicializada
CBA
e a pilha esquerda inicializada na entrada.Código anotado
Mais explicações por vir ...
fonte
Mathematica, 37 bytes
fonte
Characters
Cenoura , 15 bytes, não concorrente
não concorrente por causa de um erro que encontrei ao retornar correspondências e seqüências de caracteres vazias. Então eu apenas consertei
Experimente online! (copiar colar)
Explicação
fonte
CJam , 7 bytes
Experimente online! (Como um conjunto de testes separado por avanço de linha.)
fonte
MATLAB / oitava, 20 bytes
Demo Online
fonte
Oitava,
2927 bytesEconomizou dois bytes graças ao Suever, criando a string
'ABC'
dentro daismember
chamada.Usamos
~ismember()
como índices lógicos para a variávelx
. O que é peculiar é que criamosx='ABC'
dentroismember
, não na frente dele. A ordem em que o Octave vê isso:fonte
C #,
50 bytes32 bytes47 bytes35 bytesOnde
i
está a entrada:Aplicativo completo testado no LINQPad
Resultado dos testes
fonte
string.Join("",...)
->string.Concat(...)
Salva 1 byteAPL, 7 bytes
~
é definida como subtração,∘
é composta, portanto, esta é uma função que retornaABC
menos os caracteres em sua entrada.fonte
Água-viva , 9 bytes
Experimente online!
Em notação mais convencional, este programa se traduz em:
I
é a entrada,N
é a diferença da lista eP
é emitida.fonte
Perl 5.9.9
79 38 3735 bytes(não tenho certeza das regras de contagem aqui - incluímos opções, mas não o comando perl).
(contagem ajustada após comentário de adjudicação abaixo)
fonte
-l
flag). :)perl -pe'$_=eval"ABC=~y/$_//dr"'
for only 23 bytes (22 + 1 for-p
).Common Lisp, 71 bytes
The largest entry at the moment, but at least it is readable ;-)
fonte
Japt,
1312 bytesSaved a byte thanks to ETHproductions.
Try it online!
fonte
Pyth, 4 bytes
Try it here!
Note this uses lower case which might not be acceptable
fonte
C, 53 bytes
If implicit declarations of string.h are not allowed, 72 bytes, to add
#include<string.h>
Try it online!
or something a bit more fun at 75 bytes
Try it online!
fonte
Batch, 101 bytes
Takes input on STDIN, which means that
%1
is empty when the code falls through into the helper subroutine and nothing gets printed.fonte
R,
4740 bytesTry it online!
Replaces any letters in the input string with the empty string.
fonte