Avec deux chaînes, génère une troisième chaîne qui n'est pas égale à l'une des deux entrées, mais a la même longueur (en caractères) que l'une ou l'autre des entrées. Il est garanti qu’il existe au moins une sortie valide.
Cas de test
Les cas de test sont cités pour montrer qu'ils sont des chaînes. Les sorties sont l’un des nombreux possibles.
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"
Règles
- Vous pouvez choisir votre domaine d'entrée, mais celui-ci doit au moins être composé d'ASCII imprimable et votre domaine de sortie doit être identique à votre domaine d'entrée.
- Les longueurs d’entrée peuvent être identiques ou différentes.
- La sortie doit être valide avec la probabilité 1; Autrement dit, vous pouvez générer des chaînes aléatoires jusqu'à ce qu'une chaîne soit valide (et théoriquement, vous pourriez créer une boucle infinie), mais vous ne pouvez pas simplement générer une chaîne aléatoire en espérant qu'elle est valide. Notez que cela signifie que votre sortie n'a pas besoin d'être déterministe.
- Les retours à la ligne automatiques sont autorisés, mais ils ne comptent pas dans la longueur de la sortie.
- En raison de questions relatives aux erreurs de mémoire, il doit fonctionner dans un délai de 60 secondes et atteindre une longueur maximale de
6
. Une réponse qui fonctionne pour cela et fonctionne théoriquement pour des chaînes plus longues est OK, mais les erreurs de mémoire sur l'ordinateur moderne pour la longueur d'entrée4
ne sont pas valides.
C'est du code-golf , donc la réponse la plus courte en octets est gagnante.
Réponses:
05AB1E ,
87 octetsUtilise le codage 05AB1E . Essayez-le en ligne!
la source
Haskell, 43 octets
Prend la chaîne max (lexicographiquement plus tard), que nous savons non vide; remplace tous les caractères par l'un de "a", "b" et "c" using
<$
; et retourne le premier qui n'est aucune des entrées. Je pense que cela ressemble à la réponse de Neil sur Charcoal et / ou celle de geokavel à CJam .(Je me suis caché pendant un moment, mais c'est la première fois que je réponds sur ce site; salut!)
la source
Brainfuck, 97 octets
Exécuter le code en ligne (notez que "mémoire dynamique" doit être sélectionné en bas à droite)
Super défi! Je pensais que ce serait trivial, mais cela a fini par être très difficile. J'y reviens sans cesse parce que j'estime qu'il devrait y avoir une solution élégante de BF d'une vingtaine d'octets. À ce stade, je suis assez heureux de l'avoir (apparemment) mis au travail en BF.
L'entrée est considérée comme
str1
+\0
+str2
, où les chaînes sont des caractères consécutifs non nuls de 1 octet.Retours
(first str1 + first str2) or (first str1 + 1) or 2
. Cet algorithme a été conçu par le génial @ ØrjanJohansen, basé (vraisemblablement) sur mon original (brisé).Commenté:
la source
a=2
,b=1
. Vous devez ajouter au lieu de soustraire.S
problème vide en ajoutant>
au début et en faisant plus tard[<]>
sur l'octet le plus à gauche deS
- si ce n'est pas nul, cela ne fait rien, sinon il change les chaînes.b
. Mais pasa
.!= a
que, si j’imprimeS/0, S/1, ...
au lieu deS/0, F/1, ...
cela, cela devrait fonctionner.Gelée , 8 octets
Essayez-le en ligne!
Comment?
la source
B
TIOX
ouẊ
là-dedans ...Python 3 ,
6247575451 octetsEdit: - 5 octets grâce à @ Mr.Xcoder
Edit: +10 octets pour corriger un bogue
Edit: -3 octets grâce à @betaveros
Edit: -3 octets en utilisant max au lieu de pop
Essayez-le en ligne!
la source
{"a","b","c"}
==>{*"abc"}
( 57 bytes )(x[1:]or y[1:])
==>max(x,y)[1:]
?(x or y)[1:]
, je pense que vous devez seulement éviter la chaîne vide.{*"abc"}
dans{*`id`}
...*len(x or y)
au lieu de+max(x,y)[1:]
.Charbon de bois , 22 octets
Essayez-le en ligne! Le lien est vers la version verbeuse du code. Génère toutes les chaînes de caractères majuscules répétées à la longueur de l'entrée la plus longue et surimprime toutes celles qui n'apparaissent pas dans l'entrée. En d’autres termes, la sortie est normalement
ZZZ...
sauf s’il s’agit d’une des entrées, auquel cas c’estYYY...
l’autre, c’est le casXXX...
.la source
Mathematica, 111 octets
essayez-le en ligne (collez le code avec ctrl + v, placez l'entrée à la fin et appuyez sur shift + entrée)
contribution
Thanx @Not un arbre pour le contrôle et le golf -21 octets
la source
Perl 6 ,
3830 octetsEssayez-le en ligne!
Codeblock anonyme qui prend en entrée une liste de deux chaînes et renvoie le premier nombre
1111...
avec une quantité non vide de 1 qui n'est pas dans l'entrée.Explication:
la source
long long
malheureusement.Zsh ,
51473736 octets-4 octets en utilisant réseau intégré
argv
, -10 octets en utilisant l' enlèvement et de préfixeRC_EXPAND_PARAM
, -1 octet par inline le développement des accolades.Essayez-le en ligne!
Premièrement, c’était un défi formidable, j’ai eu une tonne d’idées avant d’atterrir sur celui-ci.
@
et*
ne sont pas des identificateurs, donc${ :|@}
et${ :|*}
ne fonctionnent pas, d'où l'utilisation de${ :|argv}
Zsh ,
4847 octets *Essayez-le en ligne!
Méthode complètement nouvelle, gracieuseté de la soumission de JoKing Perl 6, mais ne fonctionnant pas sur les grandes chaînes (n> 20) en raison de restrictions de taille.
$@[(I)$i]
Si la recherche inverse est inversée vers le plus grand des index, la sortie sera zéro (valeur faussée dans le développement arithmétique) si $ i n’est pas trouvé dans les paramètres de ligne de commande.la source
MATL , 12 octets
L'entrée est un tableau de cellules de chaînes contenant des caractères imprimables ASCII. La sortie est formée à partir des lettres
'ABC'
et appartient donc au domaine en entrée.Essayez-le en ligne!
Explication
La sortie est aussi longue que la plus longue chaîne d'entrée. Son n caractère -ème est la première lettre de
'ABC'
qui est différent du n caractère -ème des deux chaînes d'entrée.la source
Haskell,
565248 octetsEssayez-le en ligne!
Remplacer le premier caractère du maximum des deux chaînes d'entrée avec
a
,b
etc
et choisir le premier qui est différent des deux chaînes d'entrée.la source
Ruby , 53 octets
Essayez-le en ligne!
Fondamentalement génère les cordes
a...a
,b...b
etc...c
et sélectionne le premier pas dans l'entrée.la source
ES6, 54 octets
la source
Pyth, 7
8octets1 octet grâce à Jakube
Suite de tests
Nous utilisons
.T
une transposition préservant la longueur plutôt que laC
transposition tronquée, de sorte que cela fonctionne sur les entrées où une chaîne est vide.Étant donné deux chaînes comme un tuple, nous les transposons (
.T
), puis mappons la paire de caractères ou le caractère unique obtenu en soustrayant le ou les caractères de l'alphabet minuscule avec-LG
, puis nous transposons la liste résultante de chaînes de caractères inutilisésC
, puis nous retournons. la première chaîne avech
. Il s’agit de la première lettre alphabétiquement qui ne figure pas dans l’une ou l’autre chaîne, pour chaque position.la source
Java (OpenJDK 8) ,
10073 octets-27 octets grâce à la touche magique de @ Nevay! :)
Essayez-le en ligne!
Domaine d'entrée = ASCII imprimable + code 127.
la source
Ruby, 56 octets
la source
Pyth ,
2322 octetsEssayez-le ici!
Pyth , 22 octets
Suite de tests!
Explication
la source
Perl 5,
8279 octetsPrend les entrées sous forme de deux arguments distincts et retourne la troisième chaîne.
Le sous-programme tente de produire une chaîne très similaire à la première chaîne mais avec le premier non-
z
caractère remplacé par unz
. Ensuite, il traite les cas de coin en remplaçant le premier caractère pary
oux
, au besoin, s'il constate que l'une des entrées était en fait une séquence de tousz
les éléments.la source
Perl 5 , 68 octets
Explication:
En partant de "a", il fallait éviter d’augmenter au point où Perl allongeait la chaîne; avec seulement deux chaînes pour éviter d'être identique à, il ne pourrait pas déborder.
Exécuter avec:
la source
C (gcc) ,
7065736761 octetsLa fonction a besoin que les chaînes fournies soient modifiables (c'est-à-dire des tableaux ou allouées dynamiquement).
Essayez-le en ligne!
Fonctionne pour la gamme standard ASCII
Explication:
la source
*a==255
et*b==0
?R,
8967 octets@ Giuseppe a enregistré 9 octets, @ user2390246 a enregistré 13 octets
une fonction
démo
la source
x
ety
dans la mêmesubstr
commande. En outre, les accolades etreturn
sont inutiles:function(x,y)sub("^.",letters[!letters%in%substr(c(x,y),1,1)][1],x)
return
puisqu'il s'agit d'une fonction et des accolades puisqu'il s'agit d'une seule ligne.f("","1")
rendements""
, ce qui est égal à la première entrée ... peut-être que cela devrait être ajouté comme un autre cas de testJava 8, 119 octets
Lambda (au curry) de
String
à lambda deString
àString
. Attribuer àFunction<String, Function<String, String>>
.Essayez-le en ligne
Lambda Ungolfed
Cette solution fait pivoter des caractères ASCII aléatoires dans la chaîne la plus longue jusqu'à ce que les conditions requises soient remplies. Les entrées sont UTF-8 et les sorties sont ASCII.
Je ne connais pas les détails précis d'Unicode, mais il me semble plausible que cette solution puisse échouer lorsqu'un annexé
char
joint le point de code précédent pour former une seule unité de code. Si quelqu'un qui en sait plus à ce sujet peut le vérifier, je changerai le domaine d'entrée en ASCII.Java 8, 126 octets
Même type que ci-dessus.
Essayez-le en ligne
Lambda Ungolfed
Cela incrémente le premier octet de la chaîne la plus longue, en l'habillant d'ASCII, jusqu'à ce que les conditions requises soient remplies. Les entrées et les sorties sont des chaînes ASCII.
la source
APL (Dyalog Unicode) , SBCS de 11 octets
Programme complet, prend les entrées sous forme de liste imbriquée à 2 éléments.
Essayez-le en ligne!
la source
Frapper,
115.. 77 octetsRemplace le premier caractère de la première chaîne d'entrée (non vide) par 1,2,3 jusqu'à ce qu'aucune correspondance ne soit trouvée pour l'une ou l'autre des entrées. Essayez-le en ligne!
-9, -12, -9, -8 octets, tous grâce à GammaFunction
(une amélioration par rapport à l' original ... )
la source
=
et||
dans la dernière ligne, et utiliser${x:-empty_fallback}
pour supprimer le ternaire de départ. En outre, vous avez besoin de guillemets sur l'écho final pour le cas d'espaces de fin. TIO obligatoireshift
, je l'ai obligé à lier ma méthode de deux manières différentes .@($1|$2)
correspondance de modèlePerl 5 , 79 + 1 (-p) = 80 octets
Essayez-le en ligne!
la source
Japt , 17 octets
Répète les lettres
A-Z
à la longueur de l'entrée la plus longue, supprime les valeurs de l'entrée et récupère le premier élément du tableau.Essayez-le en ligne!
Ancienne solution, 18 octets
Essayez-le en ligne!
Choisit un caractère aléatoire de l'alphabet et le répète jusqu'à la longueur de la chaîne d'entrée la plus longue, jusqu'à ce qu'il ne soit plus présent dans l'entrée.
la source
["abcdefghijklmnopqrstuvwxyz", "AAAAAAAAAAAAAAAAAAAAAAAAAA"]
. Lorsque"AAAAAAAAAAAAAAAAAAAAAAAAAA"
je l'ai exécuté plusieurs fois, il est revenu (tout comme ma réponse Pyth, jusqu'à ce que jeÌ
devrait fonctionner à la place deg1
pour une sauvegarde de 2 octets (dans un tableau de 2 élémentsg1
=gJ
), mais il semble y avoir un bogueÌ
lors de l'utilisation;
.J
c'est-1
parce que le;
changement n'a plus lieu,
. C'est pourquoi j'ai utilisé1
en premier lieu.Python 3,
7473 octets-1 octet grâce à Step Hen
Imprime le plus petit entier avec la même longueur que la première des entrées dont la longueur est différente de zéro.
la source
i
comme paramètre de fonction par défaut:def f(x,y,i=1):
. Je pense que vous pouvez enregistrer un autre octet avecwhile10*i
mais je ne suis pas sûr.while i*10<10**len(x or y)or str(i)in x+y
parwhile i<10**~-len(x or y)or str(i)in x+y
( 72 octets )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 octets )Python 2, 77 octets
Je pense que cela a du potentiel. L'idée est qu'il ajoute 1 au premier caractère de la première chaîne, puis vérifie si le premier caractère de l'autre entrée est identique.
** Remarque, ^ ne gère pas les chaînes de longueur 0, il ne fonctionne donc pas vraiment avec cette longueur.
Voici une solution super longue qui fonctionne avec 0 longueur
146 octets
Toute amélioration serait appréciée!
la source
CJam,
313023 octetsPrend ASCII imprimable en entrée. Sort une chaîne de 0, 1 ou 2 de la même longueur que l'une des chaînes d'entrée. La logique est qu'une de celles-ci ne peut être l'une des chaînes d'entrée!
Essayez-le en ligne
la source
:+!
.C # (Mono) , 94 octets
Essayez-le en ligne!
la source