Étonnamment, nous n’avons pas encore lancé le défi «Trouver le chiffre le plus élevé», mais je pense que c’est un peu trop trivial.
Étant donné l'entrée d'un entier non négatif, retourne le chiffre unique le plus élevé (c'est-à-dire non répété) trouvé dans l'entier. S'il n'y a pas de chiffres uniques, votre programme peut tout faire (comportement indéfini).
L'entrée peut être prise sous la forme d'un entier unique, d'une chaîne ou d'une liste de chiffres.
Cas de test
12 -> 2
0 -> 0
485902 -> 9
495902 -> 5
999999 -> Anything
999099 -> 0
1948710498 -> 7
C'est du code-golf, donc le moins d'octets dans chaque langue gagne!
Réponses:
05AB1E ,
43 octetsSauvé 1 octet grâce à M. Xcoder notifiant qu'une entrée de liste de chiffres est valide.
Essayez-le en ligne!
Explication
la source
2
n’est pas la vérité; seulement1
? : oPython 3 , 40 octets
2 octets sauvés grâce à movatica .
Essayez-le en ligne!
42 octets
Fonctionne pour les types de paramètres String et list of digits. Lance une erreur sans chiffres uniques, genre d'abus de cette spécification:
Essayez-le en ligne!
Explication
lambda i:
- Déclare une fonction lambda avec une chaîne ou une liste de paramètres de chiffres i.max(...)
- Trouve la valeur maximale du générateur.x for x in i
- Itère parmi les caractères / chiffres dei
.if i.count(x)<2
- Vérifie si le chiffre est unique.la source
lambda i:max(x*(i.count(x)<2)for x in i)
Alice , 15 octets
Essayez-le en ligne!
Explication
Il s'agit d'un cadre simple pour le code linéaire qui fonctionne entièrement en mode ordinal (ce qui signifie que ce programme fonctionne complètement avec le traitement de chaîne). Le code linéaire déplié est alors juste:
Ce qu'il fait:
la source
Retina , 16 octets
Essayez-le en ligne!
Explication
Triez les chiffres.
Supprimer les chiffres répétés.
Récupère le dernier chiffre (maximum).
la source
Charbon de bois ,
1812 octetsEssayez-le en ligne! (Lien vers la version commentée)
N'imprime rien si aucune solution n'est trouvée. L'astuce est que la
for
boucle imprime chaque numéro unique de la chaîne d'entrée, mais sans déplacer le curseur, la valeur continue ainsi à se réimprimer jusqu'à ce que la solution finale soit trouvée.La version précédente imprimait les caractères de A à Z lorsqu'aucune solution n'était trouvée, d'où les commentaires:
Essayez-le en ligne! (Lien vers la version commentée)
la source
Coque , 7 octets
Essayez-le en ligne! (Suite de tests, se bloque sur le dernier cas de test car il n'a pas de chiffres uniques)
Il s'agit d'une composition de fonctions dans un style sans points (les arguments ne sont mentionnés explicitement nulle part). Prend les entrées et retourne les sorties sous forme de chaîne, ce qui équivaut à Husk à une liste de caractères.
Explication
* La vérification de la longueur 1 est effectuée en prenant la tête de la liste (tous les éléments sauf le dernier) et en la niant (les listes vides sont fausses, les listes non vides sont la vérité).
la source
Haskell, 37 octets
Essayez-le en ligne!
Comment ça marche:
la source
R , 41 octets
Une fonction anonyme qui prend une liste de chiffres, sous forme d'entiers ou de chaînes de caractères uniques. Il précalcule
y
sous forme d'argument facultatif pour éviter d'utiliser des accolades pour le corps de la fonction. Renvoie le chiffre sous forme de chaîne. Cela prend une approche légèrement différente de l'autre réponse R et finit par être le plus petit peu plus court! on dirait que mon commentaire était faux après tout ...table
calcule les occurrences de chaque élément de la liste,names(table(x))
enx
tant que valeurs uniques dans (en tant que chaînes). Puisque les chiffres sont heureusement classés par le même lexicographe que numériquement, nous pouvons toujours utilisermax
.Essayez-le en ligne!
la source
table
soit plus court (en plus, je ne me souviens jamais comment allernames
au travail).<2
pour un autre octet. Il ne devrait jamais y avoir de zéro dans les comptes.y=table(scan());max(names(y[y<2]))
est quelques octets plus court.JavaScript (ES6),
464140 octetsPrend l'entrée sous forme de chaîne. Renvoie RangeError s'il n'y a pas de chiffres uniques.
-7 octets grâce à Rick Hitchcock
-1 octet grâce à Shaggy
Cas de test
Afficher l'extrait de code
la source
(s,i=9)=>s.split(i).length-2?f(s,--i):i
. Vous pouvez éviter le débordement de pile pour 42 octets:(s,i=9)=>s.split(i).length-2?i&&f(s,--i):i
.s=>g=(i=9)=>s.split(i).length-2?g(--i):i
puis appelez-le avecf("12")()
Python 3, 40 octets
Ne fonctionne que pour les listes de chiffres. L'affaire Edge '990' fonctionne bien :)
Essayez-le en ligne!
la source
Brachylog , 8 octets
Essayez-le en ligne!
Explication
la source
Husk ,
9 à8 octetsMerci à Leo d’avoir suggéré une solution légèrement plus nette au même nombre d’octets.
Essayez-le en ligne!
Explication
la source
¬←
pourrait être plus simplement=1
, même bytecount cependant :)Mathematica, 41 octets
merci @Martin Ender
voici l'approche de Martin sur ma réponse
Mathematica, 35 octets
la source
R,
4543 octetsfunction(x)max(setdiff(x,x[duplicated(x)]))
Essayez-le en ligne!
Prend l'entrée en tant que vecteur d'entiers. Trouve les éléments dupliqués, les supprime et prend le maximum. (Retourne
-Inf
avec un avertissement s'il n'y a pas de maximum unique.)Edité dans une fonction anonyme par commentaire
la source
max(x[!duplicated(x)])
est un peu plus court, mais c’est une excellente réponse. Je savais que j'allais faire, ce n'était pas si bon. Vous pouvez également supprimer lef=
début, car les fonctions anonymes sont des réponses parfaitement valables. En outre, vous pouvez utiliser TIO pour tester vos fonctions si vous utilisez ce format: Essayez-le en ligne!duplicated
mais j’ai en fait pensé à une autre réponse plus courte!Ruby , 42 octets
Essayez-le en ligne!
la source
->x{x.chars.select{|r|x.count(r)<2}.max}
APL (Dyalog Unicode) , 10 caractères = 19 octets
Méthode: multipliez les éléments qui apparaissent plusieurs fois par zéro, puis définissez l'élément le plus élevé.
⌸
pour chaque élément unique et ses index dans l'argument:×
multiplier l'élément unique∘(
…)
Avec:1=
le booléen pour savoir si on est égal à≢
le décompte des indices (combien de fois l'élément unique se produit)⌈/
le max de celaEssayez-le en ligne!
APL (Dyalog Classic) , 15 octets
Essayez-le en ligne!
Identique à ce qui précède, mais utilise
⎕U2338
au lieu de⌸
.la source
Bash + coreutils,
3028 octets-2 octets grâce à Digital Trauma
Essayez-le en ligne!
Bash + coreutils, 20 octets
Essayez-le en ligne!
Si l'entrée est donnée sous forme de liste de chiffres, un par ligne, nous pouvons ignorer l'étape de repliement. Cela ressemble à de la triche cependant.
la source
grep -o .
parfold -1
pour sauvegarder 2 octets. Je conviens qu’un nombre entier donné sous forme de liste de chiffres étire trop les règles.Python 2 , 39 octets
Essayez-le en ligne!
la source
C # (.NET Core) ,
279786585775 octetsEssayez-le en ligne!
Merci @CarlosAlejo
la source
using System.Linq;
au nombre d'octets.OrderBy(...).Last()
au lieu de.OrderByDescending(...).First()
, par exemple. Ou mieux encore, changez votre dernière partie.Max(i=>i.Key)
après laWhere
clause.JavaScript (ES6),
5250 octetsPrend la saisie sous forme de liste de chiffres. Renvoie
0
s'il n'y a pas de chiffres uniques.Cas de test
Afficher l'extrait de code
la source
Japt ,
121110 octetsPrend les entrées sous forme de tableau de chiffres.
Essaye-le
Explication
la source
Java (OpenJDK 8) ,
898579 octetsEssayez-le en ligne!
-6 octets grâce à la perspicacité de @ KevinCruijssen!
la source
return i>0?i:0;
avecreturn i;
. Le résultat sera -1 pour le scénario de test[9,9,9,9,9,9]
, mais le problème est résolu: " S'il n'y a pas de chiffres uniques, votre programme peut tout faire (comportement indéfini). ".0
. C'est quelque chose que j'ai supervisé dans le golf précédent! :)APL (Dyalog) , 14 octets
-2 grâce à Two Night.
⌈/
le plus grand des⊢
les arguments×
multiplié par1=(
…)
Le booléen pour chacun où on est égal+/
la somme des rangées de∘.=⍨
leur table d'égalitéEssayez-le en ligne!
la source
0
n'est jamais le chiffre unique le plus élevé sauf pour0
lui-même, vous pouvez enregistrer 1 octet en utilisant à la×
place de/⍨
, puis enregistrez un autre octet convertissant celui-ci en trainPHP , 40 octets
Essayez-le en ligne!
PHP , 42 octets
Essayez-le en ligne!
la source
<?=array_flip(count_chars($argn))[1]-48;
Java (JDK) , 67 octets
Essayez-le en ligne!
la source
Mathematica, 42 octets
la source
F # , 88 octets
Essayez-le en ligne!
Une approche améliorée dès mon premier effort entraîne moins d'octets.
Points d'intérêt:
fst
etsnd
renvoient les premier et deuxième éléments d'un tuple, respectivement.la source
Gelée , 9 octets
Essayez-le en ligne!
la source
Pyth, 6 octets
Suite de tests
Explication:
la source
Perl 5 , 59 octets
Essayez-le en ligne!
la source
-F
drapeau sur Perlrun si nécessaire)