Basé sur cette question de Code Review
Étant donné une chaîne non vide de caractères ASCII imprimables, affichez le deuxième caractère non répétitif. Par exemple, pour l'entrée DEFD
, la sortie F
.
Contribution
- Une seule chaîne, dans n'importe quel format approprié .
Production
- Le deuxième caractère qui ne se répète pas, lors de la lecture de gauche à droite, à nouveau dans un format approprié.
- Le caractère de sortie est insensible à la casse.
- Si un tel caractère n'existe pas (par exemple, tous les caractères se répètent), sortez une chaîne vide.
Règles
- L'algorithme doit ignorer la casse. Autrement dit,
D
etd
comptez comme le même personnage. - Un programme complet ou une fonction sont acceptables.
- La chaîne d'entrée sera garantie non vide (c'est-à-dire, au moins un caractère de longueur).
- La chaîne d'entrée est ASCII. Tout caractère valide peut se répéter, pas seulement alphanumérique (cela inclut les espaces).
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
Exemples
L'entrée est sur la première ligne, la sortie est sur la deuxième ligne.
DEFD
F
FEED
D
This is an example input sentence.
x
...,,,..,,!@
@
ABCDefgHijklMNOPqrsTuVWxyz
B
AAAAAABBBBB
Thisxthis
This this.
.
Réponses:
MATL , 11 octets
Cela se termine avec une erreur (autorisée par défaut) s'il n'y a pas de deuxième caractère non répété.
Essayez-le en ligne!
Explication
la source
Rétine , 25 octets
Essayez-le en ligne! (La première ligne permet d'exécuter le code sur une suite de tests de plusieurs entrées.)
Explication
Ceci est juste une correspondance regex unique, la regex étant:
Autrement dit, faites correspondre un caractère et assurez-vous qu'il n'apparaît nulle part ailleurs dans l'entrée. Le reste est la configuration:
i
active l'insensibilité à la casse.!
dit à Retina d'imprimer les correspondances au lieu de les compter.2=
indique à Retina de n'imprimer que la deuxième correspondance, par opposition à toutes.la source
2=
.05AB1E,
1512 octetsExpliqué
Essayez-le en ligne
Sauvegardé 3 octets grâce à @Adnan
la source
l©v®y¢iy}}1@
:).Python 2,
5958 octetsRenvoie une liste d'un seul caractère ou une liste vide si aucune sortie. (Insensibilité à la casse stupide ...)
Essayez-le en ligne
la source
Gelée , 11 octets
Essayez-le en ligne! ou vérifiez tous les cas de test .
Comment ça fonctionne
la source
Lot, 171 octets
Formulation alternative, également 171 octets:
la source
Pyth,
1615 octets1 octet grâce à @ mbomb007
Suite de tests.
la source
[1:2]
astuce.t<…2
au lieu de:…1 2
. Vous pouvez enregistrer un autre octet en déplaçant le=rz1
à sa première utilisation, si vous modifiez également1
àZ
(pour en minuscules au lieu de sortie en majuscules):t<fq1/zT=rzZ2
.En fait, 19 octets
Essayez-le en ligne!
Explication:
la source
C #,
129128 octetsfonctionne bien. J'aimerais ne pas avoir besoin de tout mettre en minuscules
la source
C # lambda avec Linq, 63 octets
la source
.Skip(1).First()
par.ElementAt(1)
.ToList()[1]
C #, 141 octets
Sans interruption (le plus petit), 135 octets
Avec pour (;;), 150 octets
Non golfé avec des commentaires
12 octets enregistrés par TuukkaX (changez le nombre en c).
3 octets enregistrés par TuukkaX (changez la chaîne en var).
4 octets enregistrés par TuukkaX dans "With for (;;)" (changé en (true) en for (;;)).
2 octets enregistrés par TuukkaX (changé c ++; if (c == 2) en if (++ c == 2)).
14 octets enregistrés par Bryce Wagner (changé x.ToCharArray () en x).
la source
var
au lieu destring
et en ayant quelque chose commec
au lieu decount
.code machine x86, 43 octets
En hex:
La fonction prend un pointeur sur la chaîne d'entrée dans (E) SI et un entier dans (E) DX et renvoie le (E) DX-ème caractère non répétitif ou zéro s'il n'y a pas un tel caractère. Comme effet secondaire, il convertit la chaîne en majuscules.
Démontage:
la source
APL, 32 octets
Essayez-le || Tous les cas de test
Explication:
J'étais sur le point de le poster avec 16 octets, mais j'ai réalisé qu'il devait être insensible à la casse ...
la source
(⎕UCS ⍵)+32×⍵∊⎕A
→819⌶⍵
⌶
en général et pour le service 819 ("819" ≈ "BIg"). Essayez-le en ligne!Rétine,
4336 octetsEssayez-le en ligne!
la source
Mathematica, 49 octets
Fonction anonyme. Prend une liste de caractères en entrée. Ignorez toutes les erreurs générées.
la source
JavaScript (Firefox 48 ou version antérieure), 60 octets
Renvoie
undefined
s'il n'y a que zéro ou un caractère non répétitif. Fonctionne en supprimant de manière insensible à la casse toutes les occurrences de caractères qui apparaissent plusieurs fois dans la chaîne. Repose sur une extension Firefox non standard qui a été supprimée dans Firefox 49.119Version ES6 91 octets:Recherche récursivement tous les caractères qui apparaissent au moins deux fois dans la chaîne. Si le caractère apparaît exactement deux fois, les deux occurrences sont supprimées, sinon seule la première occurrence est supprimée (les autres occurrences seront supprimées ultérieurement). Cela permet aux occurrences d'avoir un cas de différence.
la source
m[1]
parnew RegExp(`${m[1]}`,"gi")
J, 25 octets
Usage
Explication
la source
Bash, 58 octets
Attention: Cela crée un fichier temporaire nommé t . S'il existe déjà, il sera écrasé.
la source
C, 174 octets
Ce n'est pas la mise en œuvre la plus courte mais la plus efficace. En substance, il utilise une liste à double liaison pour conserver un ensemble ordonné de caractères candidats et analyse la chaîne d'entrée une seule fois. Renvoie le code de caractère ou zéro s'il n'en trouve aucun.
Une version un peu non golfée:
la source
C #, 143 octets
la source
TSQL, 128 octets
Golfé:
Non golfé:
Violon
la source
Rubis, 53 octets
L'entrée est STDIN, la sortie est STDOUT. En Ruby, les positions hors index dans un tableau ou une chaîne retournent
nil
, qui n'est pas imprimée.String#count
est une fonction étrange dans Ruby car au lieu de compter le nombre d'occurrences pour la chaîne qui a été transmise, elle compte le nombre d'occurrences pour chaque lettre de cette chaîne. C'est généralement ennuyeux, mais nous pouvons l'utiliser à notre avantage cette fois.String#swapcase
permute les lettres majuscules et minuscules.Ancienne version qui n'était pas sûre contre les caractères spéciaux comme
.
- 46 octetsla source
Java 8,
172157octets-15 octets .. Dang j'étais mauvais au golf à l'époque. ;)
Explication:
Essayez-le ici.
la source
R , 79 octets
Essayez-le en ligne!
J'ai vraiment l'impression que quelque chose peut être joué ici. Mais j'ai vraiment apprécié ce défi.
Cette réponse divise la chaîne en un vecteur de caractères, les change tous en minuscules et les table (les compte). Les caractères qui se produisent une fois sont sélectionnés et comparés aux caractères du vecteur susmentionné, puis la deuxième valeur vraie est renvoyée en sortie. Une chaîne vide ou une chaîne sans caractère répétitif génère NA.
la source
Perl 6 ,
3832 octets-6 octets grâce à nwellnhof en passant
.comb
à une expression rationnelle insensible à la casseEssayez-le en ligne!
la source
m:g:i/$^a/
pour 32 octets .K (oK) / K4 , 11 octets
Solution:
Essayez-le en ligne!
Explication:
la source
Gelée, 15 octets
Essayez-le en ligne!
Vérifiez tous les cas de test. (Légèrement modifié pour répondre à tous les cas de test)
la source
Perl, 75 octets
la source
Javascript (à l'aide d'une bibliothèque externe) (107 octets)
Écrasé cela en utilisant une bibliothèque que j'ai écrite. Je ne sais pas si je dois compter la déclaration de la variable "s", qui est la chaîne en question.
Cela gérera une entrée de chaîne vide, une entrée avec un seul caractère non répétitif et une entrée avec 2+ caractères non répétitifs
la source
s=> ...
)Clojure, 109 octets
Ough, j'espère qu'il y a un moyen plus succinct.
la source