Contribution
Une chaîne qui contient au plus un de chacune des lettres A
, B
et C
. Ils peuvent être dans n'importe quel ordre. La chaîne vide est une entrée valide.
Remarque: Une version précédente de ce défi utilisait les lettres LEJ
au lieu de ABC
et elles peuvent toujours être utilisées si vous le souhaitez.
Sortie
Une chaîne des A
, B
, des C
lettres qui ne sont pas présents dans l'entrée. Ils peuvent être dans n'importe quel ordre.
Si la sortie est la chaîne vide, donner simplement aucune sortie est valide, si cela a du sens pour votre implémentation. (par exemple, vous n'avez pas besoin d'appeler réellement print
une chaîne vide.)
Exemples
- Si l'entrée est
B
alors la sortie doit êtreCA
ouAC
depuisA
etC
n'est pas présente dans l'entrée. - Si l'entrée est la chaîne vide, la sortie doit être
ABC
ou toute permutation, car aucune des trois lettres n'est présente dans l'entrée. - Si l'entrée est
CAB
alors la sortie doit être la chaîne vide car les trois lettres sont présentes dans l'entrée.
Cas de test
Il y a si peu de cas d'entrée que nous pouvons tous les énumérer:
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
Toutes les sorties valides pour chaque entrée sont données, séparées par |
des. ""
représente la chaîne vide
Notation
Le code le plus court en octets gagne. Mais gardez à l'esprit que vous pouvez obtenir plus de reconnaissance pour résoudre le défi d'une manière unique plutôt que d'une manière courte;)
la source
Réponses:
Python 3,
292722 octets-2 octets grâce à Jonathan Allan
-5 octets grâce à Rod
la source
print(*{*"LEJ"}-{*input()})
enregistre 2. (testé sur 3.5 et 3.6).Gelée , 4 octets
Merci à @DuctrTape pour l'info sur le changement et la présence de "ABC" dans le dictionnaire de Jelly.
Essayez-le en ligne!
“ḃ»
recherche l'entrée "ABC" dans le dictionnaire de Jelly,ḟ
est la dyade de rejet de filer qui supprime les caractères trouvés dans l'entrée de cette liste de caractères. Le résultat est implicitement imprimé.Pour une version minuscule, l'entrée de dictionnaire à utiliser peut être "abac" (
“c»
) ou "abaca" (“i»
).Lorsque le défi était "LEJ", seuls 6 octets pouvaient être atteints dans la variante majuscule, car aucune entrée de dictionnaire n'existe avec cet ensemble de caractères, nous laissant créer la liste des caractères
“LEJ”
(ou une permutation de ceux-ci).La variante minuscule résiste mieux à 5 octets en raison de la présence du mot "jell" (
“ẎṄ»
).la source
Bash + coreutils, 15 octets
Essayez-le en ligne!
Je voudrais omettre le
x
, mais iltr -d
manquerait alors un argument lorsque la chaîne d'entrée était vide. (Lex
ne fait aucun mal, car il n'y a pas de x dans le LEJ ici.) J'écrirais normalementtr -d "$1"
, mais le faire comme je l'ai fait est un octet plus court que cela.la source
Rétine , 14 octets
Le nombre d'octets suppose un codage ISO 8859-1.
Essayez-le en ligne!
Explication
Ajoutez une deuxième ligne contenant
ABC
.Dédupliquez les caractères. Cela supprime chaque caractère de la deuxième ligne qui apparaît déjà dans la première ligne.
Jetez la première ligne.
la source
1`
partie de l'étape antigène?1
signifie généralement "ne faire X qu'une seule fois". La façon dont les limites fonctionnent exactement (c'est-à-dire ce qu'est X) dépend du type de scène que vous utilisez. Pour les étapes antigéniques, Retina vérifie d'abord quelles lignes correspondent à l'expression régulière (ici, chaque ligne, car l'expression régulière est vide), mais ensuite la limite signifie «ne supprimer que la première ligne correspondante». De même, s'il s'agissait d'une étape grep, cela signifierait "ne conserver que la première ligne correspondante". La sémantique de toutes les limites est répertoriée sur le wiki .05AB1E ,
64 octetsEnregistré 2 octets en utilisant la nouvelle
žR
commande comme suggéré par Kevin CruijssenEssayez-le en ligne! ou comme suite de tests
Explication
la source
J
revenirEL, LE
?"""{input}"""
, ce qui fonctionne également pour les chaînes vides :).LE
).Java 7,
7358 octets15 octets enregistrés grâce à @KritixiLithos .
Code de test:
Essayez-le ici.
Sortie:
la source
"["+s+"]"
place des.replaceAll("(.)","$1|")
?EJL
), cela fonctionne à nouveau, ce qui est encore beaucoup plus court. :)En fait , 7 octets
Essayez-le en ligne!
la source
Pyth, 5 octets
Testez-le ici
S'étend à
la source
<G3
MATL,
108 octetsEnregistré deux octets grâce à Suever.
setdiff
est plus court queismember
.Essayez-le ici!
Explication
Oui, cela aurait pu être une tâche triviale, mais je suis assez satisfait d'avoir réussi à le résoudre avec MATL tout seul. Je n'ai jamais dit que c'était la solution la plus courte ... Merci Suever!
la source
JavaScript ES6,
41 3938 octetsEnregistré 2 octets grâce à Arnauld. 1 octets enregistrés grâce à LarsW.
la source
s=>eval`'ABC'.replace(/[${s}]/g,'')`
.join``
vous permet d' économiser deux personnages sur la solution que j'étais venu avec:f=s=>"ABC".replace(RegExp(`[${s}]`,'g'),"")
.V , 10 octets
Essayez-le en ligne!
Hexdump:
Explication
L'entrée se trouve sur la première ligne du tampon. Donc quelque chose comme:
et le curseur se trouve sur le premier caractère. Nous supprimons donc l'entrée (qui la stocke dans le registre
"
) et passons simultanément en mode insertionC
.Une fois en mode insertion, les caractères
LEJ
sont insérés, après quoi je reviens en mode normal en utilisant<ESC>
.Nous devons maintenant supprimer tous les caractères présents dans l'entrée.
Et une fois que cela se produit, nous nous retrouvons avec les lettres restantes dans le tampon.
la source
Rubis,
27 1918 octets-1 octet grâce à Martin Ender
la source
Haskell ,
2726 octetsEssayez-le en ligne! Utilisation:
("ABC"\\) "CB"
rendements"A"
.\\
est l'opérateur de différence d'ensemble, les parenthèses forment une soi-disant section qui est une forme courte pour le lamda(\x -> "ABC" \\ x)
.Sans importation: (même nombre d'octets grâce à @nimi)
Essayez-le en ligne! Utilisation:
f "CB"
rendements"A"
.Autres approches:
la source
(\\)
serai bientôt transféré à Prelude.Data.Set.difference
.(\\)
ne respecte rien de tout cela. Les types de données qui sont destinés à ce comportement ont une structure qui les rend généralement un peu plus efficaces, plus sûrs (car aucune hypothèse possible de stabilité, etc. ne peut être rompue) et exposant une interface plus confortable.GNU sed ,
3429 octetsComprend +1 pour
-r
-5 grâce à Digital Trauma
Essayez-le en ligne!
Pour une raison quelconque, TIO ne fonctionne pas avec regex (
-r
) étendu , j'ai donc dû l'encapsuler dans BASH.la source
-n
etP
sont inutiles. Vous pouvez également terminer cela en bash pour le faire fonctionner dans TIO. Aucune idée pourquoi-r
ça ne marche pas. tio.run/nexus/bash#DcmxDYAwDATA/qdIR4JELCjp7F8jooIFCPubb@/…Brain-Flak , 120 + 3 = 123 octets
Il est exécuté avec l'
-c
indicateur, en ajoutant 3 octetsEssayez-le en ligne!
Explication
Dans l'ensemble, ce programme fait à peu près l'ensemble de pile de droite moins la pile de gauche avec la pile de droite initialisée à
CBA
et la pile de gauche initialisée à l'entrée.Code annoté
Plus d'explications à venir ...
la source
Mathematica, 37 octets
la source
Characters
Carotte , 15 octets, non concurrente
non compétitif à cause d'un bug que j'ai trouvé avec le retour des matchs et des chaînes vides. Donc je l'ai juste réparé
Essayez-le en ligne! (copier coller)
Explication
la source
CJam , 7 octets
Essayez-le en ligne! (En tant que suite de tests séparés par des sauts de ligne.)
la source
MATLAB / Octave, 20 octets
Démo en ligne
la source
Octave,
2927 octetsEnregistré deux octets grâce à Suever, en créant la chaîne
'ABC'
, à l'intérieur de l'ismember
appel.Nous utilisons
~ismember()
comme indices logiques la variablex
. Ce qui est particulier, c'est que nous créons à l'x='ABC'
intérieurismember
, pas devant. L'ordre d'Octave voit ceci:la source
C #,
50 octets32 octets47 octets35 octetsoù
i
est l'entrée:Application complète testée dans LINQPad
Résultats de test
la source
string.Join("",...)
->string.Concat(...)
Enregistre 1 octetAPL, 7 octets
~
est défini soustraction,∘
est composé, c'est donc une fonction qui renvoieABC
moins les caractères dans son entrée.la source
Méduse , 9 octets
Essayez-le en ligne!
En notation plus conventionnelle, ce programme se traduit par:
I
est l'entrée, laN
différence de liste et laP
sortie.la source
Perl 5.9.9
79 38 3735 octets(pas sûr des règles de comptage ici - ont inclus des commutateurs mais pas la commande perl).
(comptes ajustés après le commentaire d'arbitrage ci-dessous)
la source
-l
drapeau). :)perl -pe'$_=eval"ABC=~y/$_//dr"'
pour 23 octets (22 + 1 pour-p
).Lisp commun, 71 octets
La plus grande entrée pour le moment, mais au moins elle est lisible ;-)
la source
Japt ,
1312 octetsUn octet enregistré grâce à ETHproductions.
Essayez-le en ligne!
la source
Pyth, 4 octets
Essayez-le ici!
Notez que cela utilise des minuscules qui pourraient ne pas être acceptables
la source
C, 53 octets
Si les déclarations implicites de string.h ne sont pas autorisées, 72 octets , à ajouter
#include<string.h>
Essayez-le en ligne!
ou quelque chose d'un peu plus amusant à 75 octets
Essayez-le en ligne!
la source
Lot, 101 octets
Prend l'entrée sur STDIN, ce qui signifie qu'il
%1
est vide lorsque le code tombe dans le sous-programme d'assistance et que rien n'est imprimé.la source
R ,
4740 octetsEssayez-le en ligne!
Remplace toutes les lettres de la chaîne d'entrée par la chaîne vide.
la source