Entrada
Una cadena que contiene a lo sumo uno de cada una de las letras A
, B
y C
. Pueden estar en cualquier orden. La cadena vacía es una entrada válida.
Nota: Una versión anterior de este desafío usaba las letras en LEJ
lugar de ABC
y aún se pueden usar si se desea.
Salida
Una cadena de los A
, B
, C
letras que no estaban presentes en la entrada. Pueden estar en cualquier orden.
Si el resultado sería la cadena vacía, entonces simplemente no dar ningún resultado es válido, si eso tiene sentido para su implementación. (por ejemplo, no es necesario llamar print
a una cadena vacía).
Ejemplos
- Si la entrada es,
B
entonces la salida debería serCA
oAC
desdeA
yC
no estar presente en la entrada. - Si la entrada es la cadena vacía, la salida debería ser
ABC
o cualquier permutación ya que ninguna de las tres letras está presente en la entrada. - Si la entrada es
CAB
entonces, la salida debería ser la cadena vacía porque las tres letras están presentes en la entrada.
Casos de prueba
Hay tan pocos casos de entrada que podemos enumerarlos todos:
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
Se proporcionan todas las salidas válidas para cada entrada, separadas por |
's. ""
representa la cadena vacía
Tanteo
El código más corto en bytes gana. Pero tenga en cuenta que puede obtener más reconocimiento por resolver el desafío de una manera única en lugar de hacerlo de manera breve;)
fuente
Respuestas:
Python 3,
292722 bytes-2 bytes gracias a Jonathan Allan
-5 bytes gracias a Rod
fuente
print(*{*"LEJ"}-{*input()})
ahorra 2. (probado en 3.5 y 3.6).Jalea , 4 bytes
Gracias a @DuctrTape por el comentario sobre el cambio y la presencia de "ABC" en el diccionario de Jelly.
Pruébalo en línea!
“ḃ»
busca la entrada "ABC" en el diccionario de Jelly,ḟ
es la diada de descarte del archivador que descarta los caracteres encontrados en la entrada de esa lista de caracteres. El resultado se imprime implícitamente.Para una versión en minúscula, la entrada del diccionario a utilizar puede ser "abac" (
“c»
) o "abaca" (“i»
).Cuando el desafío era "LEJ", solo se podían lograr 6 bytes en la variante mayúscula, ya que no existen entradas de diccionario con ese conjunto de caracteres, lo que nos permite crear la lista de caracteres
“LEJ”
(o una permutación de los mismos).La variante en minúscula mejoró a 5 bytes debido a la presencia de la palabra "gelatina" (
“ẎṄ»
).fuente
Bash + coreutils, 15 bytes
Pruébalo en línea!
Me gustaría omitir el
x
, pero luego metr -d
faltaría un argumento cuando la cadena de entrada estaba vacía. (Elx
no hace ningún daño, ya que no hay ninguna x en el LEJ de cadena aquí.) Normalmente escribiríatr -d "$1"
, pero hacerlo de la manera que lo hice es un byte más corto que eso.fuente
Retina , 14 bytes
El recuento de bytes asume la codificación ISO 8859-1.
Pruébalo en línea!
Explicación
Agregue una segunda línea que contenga
ABC
.Deduplicar los personajes. Esto elimina todos los caracteres de la segunda línea que ya aparece en la primera línea.
Descarta la primera línea.
fuente
1`
parte de la etapa antigrep?1
generalmente significa "solo hacer X una vez". La forma exacta en que el trabajo limita (es decir, qué es X) depende del tipo de etapa que esté utilizando. Para las etapas antigiro, Retina primero verifica qué líneas coinciden con la expresión regular (aquí, cada línea, ya que la expresión regular está vacía), pero luego el límite significa "solo descartar la primera línea coincidente". Del mismo modo, si se tratara de una etapa grep, significaría "solo mantener la primera línea coincidente". La semántica de todos los límites se enumera en la wiki .05AB1E ,
64 bytesSe guardaron 2 bytes con el nuevo
žR
comando sugerido por Kevin CruijssenPruébalo en línea! o como un conjunto de pruebas
Explicación
fuente
J
retornoEL, LE
?"""{input}"""
, lo que también funciona para cadenas vacías :).LE
).Java 7,
7358 bytes15 bytes guardados gracias a @KritixiLithos .
Código de prueba:
Pruébalo aquí
Salida:
fuente
"["+s+"]"
lugar des.replaceAll("(.)","$1|")
?EJL
) funciona nuevamente, que aún es mucho más corto. :)En realidad , 7 bytes
Pruébalo en línea!
fuente
Pyth, 5 bytes
Pruébalo aquí
Se expande a
fuente
<G3
MATL,
108 bytesGuardado dos bytes gracias a Suever.
setdiff
es más corto queismember
.Pruébalo aquí!
Explicación
Sí, esta podría haber sido una tarea trivial, pero estoy bastante satisfecho de que logré resolverlo con MATL solo. Nunca dije que era la solución más corta ... ¡Gracias, Suever!
fuente
JavaScript ES6,
41 3938 BytesGuardado 2 bytes gracias a Arnauld. Guardado 1 bytes gracias a LarsW.
fuente
s=>eval`'ABC'.replace(/[${s}]/g,'')`
.join``
le ahorra dos personajes más de la solución que había llegado con:f=s=>"ABC".replace(RegExp(`[${s}]`,'g'),"")
.V , 10 bytes
Pruébalo en línea!
Hexdump:
Explicación
La entrada está en la primera línea del búfer. Entonces algo como:
y el cursor está en el primer carácter. Entonces, eliminamos la entrada (que la almacena en el registro
"
) y entramos en modo de inserción simultáneamente usandoC
.Una vez en el modo de inserción,
LEJ
se insertan los caracteres , después de lo cual vuelvo al modo normal usando<ESC>
.Ahora tenemos que eliminar todos los caracteres que están presentes en la entrada.
Y una vez que esto sucede, nos quedan las letras restantes en el búfer.
fuente
Ruby,
27 1918 bytes-1 byte gracias a Martin Ender
fuente
Haskell ,
2726 bytesPruébalo en línea! Uso:
("ABC"\\) "CB"
rendimientos"A"
.\\
es el operador de diferencia de conjunto, el paréntesis forma una sección llamada que es una forma abreviada de lamda(\x -> "ABC" \\ x)
.Sin importación: (mismo número de bytes gracias a @nimi)
Pruébalo en línea! Uso:
f "CB"
rendimientos"A"
.Otros enfoques:
fuente
(\\)
ser trasladado a Preludio pronto.Data.Set.difference
.(\\)
no respeta nada de esto Los tipos de datos destinados a este comportamiento tienen una estructura que los hace generalmente bastante más eficientes, más seguros (porque no se pueden romper los supuestos de estabilidad, etc.) y exponen una interfaz más cómoda.GNU sed ,
3429 bytesIncluye +1 para
-r
-5 gracias a Digital Trauma
Pruébalo en línea!
Por alguna razón, TIO no funciona con regex extendido (
-r
), así que tuve que envolverlo en BASH.fuente
-n
yP
son innecesarios. También puede concluir esto en bash para que funcione en TIO. No tengo idea de por qué-r
no funciona. tio.run/nexus/bash#DcmxDYAwDATA/qdIR4JELCjp7F8jooIFCPubb@/…Brain-Flak , 120 + 3 = 123 bytes
Se ejecuta con la
-c
bandera, agregando 3 bytesPruébalo en línea!
Explicación
En general, este programa hace el conjunto de la pila derecha menos la pila izquierda con la pila derecha inicializada
CBA
y la pila izquierda inicializada en la entrada.Código anotado
Más explicaciones por venir ...
fuente
Mathematica, 37 bytes
fuente
Characters
Zanahoria , 15 bytes, no competitiva
no compite debido a un error que encontré al devolver coincidencias y cadenas vacías. Así que lo arreglé
Pruébalo en línea! (copiar pegar)
Explicación
fuente
CJam , 7 bytes
Pruébalo en línea! (Como un conjunto de pruebas separado por salto de línea).
fuente
MATLAB / Octave, 20 bytes
Demo en línea
fuente
Octava,
2927 bytesAhorré dos bytes gracias a Suever, al crear la cadena
'ABC'
, dentro de laismember
llamada.Usamos
~ismember()
como índices lógicos a la variablex
. Lo peculiar es que creamosx='ABC'
adentroismember
, no enfrente. El orden que Octave ve esto:fuente
C #,
50 bytes32 bytes47 bytes35 bytesdonde
i
esta la entrada:Aplicación completa probada en LINQPad
Resultados de la prueba
fuente
string.Join("",...)
->string.Concat(...)
Ahorra 1 byteAPL, 7 bytes
~
se establece resta,∘
se compone, por lo que esta es una función que devuelveABC
menos los caracteres en su entrada.fuente
Medusa , 9 bytes
Pruébalo en línea!
En notación más convencional, este programa se traduce en:
I
es la entrada,N
es la diferencia de la lista yP
es la salida.fuente
Perl 5.9.9
79 38 3735 bytes(no estoy seguro de las reglas de conteo aquí: han incluido interruptores pero no el comando perl).
(recuentos ajustados después del comentario de adjudicación a continuación)
fuente
-l
bandera). :)perl -pe'$_=eval"ABC=~y/$_//dr"'
por solo 23 bytes (22 + 1 para-p
).Lisp común, 71 bytes
La entrada más grande en este momento, pero al menos es legible ;-)
fuente
Japt ,
1312 bytesGuardado un byte gracias a ETHproductions.
Pruébalo en línea!
fuente
Pyth, 4 bytes
Pruébalo aquí!
Tenga en cuenta que esto usa minúsculas, lo que podría no ser aceptable
fuente
C, 53 bytes
Si no se permiten declaraciones implícitas de string.h, 72 bytes , para agregar
#include<string.h>
Pruébalo en línea!
o algo un poco más divertido a 75 bytes
Pruébalo en línea!
fuente
Lote, 101 bytes
Toma entrada en STDIN, lo que significa que
%1
está vacío cuando el código cae en la subrutina auxiliar y no se imprime nada.fuente
R ,
4740 bytesPruébalo en línea!
Reemplaza cualquier letra en la cadena de entrada con la cadena vacía.
fuente