Réduisez la liste au nombre final

9

Contributions

Une liste (tableau) de nombres ou de chaînes numériques si cela vous facilite la tâche. Vous pouvez supposer qu'il y aura toujours au moins deux éléments dans la liste et que chaque élément sera un nombre naturel (entier supérieur à zéro).

Les sorties

Un seul numéro, ou encore une chaîne numérique.

Problème

L'idée est de réduire la liste des nombres en supprimant le dernier chiffre du plus grand nombre à ce stade actuel de la liste, pour finir par un seul nombre (un seul nombre doit être retourné, même s'il y a plusieurs instances)

Exemple

[123,343,121,76,465,786] -- The last digit in 786 is dropped, so it becomes 78
[123,343,121,76,465,78]  -- New largest number is 465, so the 5 is dropped, making it 46
[123,343,121,76,46,78]   -- Repeat until left with one number
[123,34,121,76,46,78]
[12,34,121,76,46,78]
[12,34,12,76,46,78]
[12,34,12,76,46,7]
[12,34,12,7,46,7]
[12,34,12,7,4,7]
[12,3,12,7,4,7]
[1,3,1,7,4,7]            -- If there are multiple max numbers, you **must** remove the last digit from all of them
[1,3,1,4]
[1,3,1]
[1,1]                    -- You have your answer when there is one number, or multiple numbers that are equal
1                        -- Result

Échappatoires

Des échappatoires standard s'appliquent

Autres contraintes

Votre programme doit fonctionner pour n'importe quelle liste de nombres aléatoires (en raison bien sûr)

Cas de test

[24,72,4]
[24,7,4]
[2,7,4]
[2,4]
[2]
2

[14, 7]
[1, 7]
[1]
1

[1278,232,98273,2334]
[1278,232,9827,2334]
[1278,232,982,2334]
[1278,232,982,233]
[127,232,982,233]
[127,232,98,233]
[127,232,98,23]
[127,23,98,23]
[12,23,98,23]
[12,23,9,23]
[12,2,9,2]
[1,2,9,2]
[1,2,2]
[1]
1

Notation

C'est le , donc la réponse la plus courte dans toutes les langues gagne!

Henri
la source
1
Veuillez me faire savoir si j'ai raté quelque chose. Première question.
Henry
14
J'sais si elle est trop tard pour changer, mais la question pourrait être mieux si nous ne devons sortie chaque étape. Je pense que les réponses seront assez simples sinon.
DLosc
8
Puisque personne d'autre ne l'a mentionné, c'est le genre de chose qui serait fréquemment prise dans le bac à sable .
James
1
Pouvez-vous ajouter des cas de test où la réponse n'est pas le premier chiffre de la première entrée de la liste?
JAD
5
La façon dont je lis cette question , la réponse à [12, 123, 124]est - 12, ce qui rend chaque mauvaise réponse affiché le .
Ørjan Johansen

Réponses:

4

Python 2 , 24 octets

-4 octets grâce à notjagan.

lambda l:min(zip(*l)[0])

Essayez-le en ligne!

totalement humain
la source
2
Cela peut être raccourci de 4 octets tout en gardant la même idée en utilisant min(zip(*l)[0]).
notjagan
3

Mathematica, 29 octets

Min[First@*IntegerDigits/@#]&
J42161217
la source
3

Japt , 8 6 5 octets

-1 octet grâce à @Shaggy

n g g

Prend l'entrée comme un tableau de chaînes numériques. Essayez-le en ligne!

Explication

        // implicit input: array of strings
n       // sort the array
  g     // get the first element
    g   // get the first character
        // implicit output
Justin Mariner
la source
5 octets : triez le tableau, obtenez le premier élément, obtenez le premier caractère.
Shaggy
@Shaggy Oh duh, j'ai totalement compliqué celui-ci. Merci!
Justin Mariner
Pas de problème :) n v gfonctionnerait également pour 5 octets. Bienvenue à Japt, au fait.
Shaggy
2

05AB1E , 3 octets

€нW

Essayez-le en ligne!

Emigna
la source
Échoue pour [12,23,12].
Olivier Grégoire
@ OlivierGrégoire: Comment? La suppression des chiffres dans l'ordre 3,2,2,2,1entraîne 1 comme prévu.
Emigna
Mon mauvais, j'ai mal lu. Voir le commentaire précédent .
Olivier Grégoire
2

PHP , 45 octets

<?foreach($_GET as$v)$r[]=$v[0];echo min($r);

Essayez-le en ligne!

Jörg Hülsermann
la source
Échoue pour [12,23,12].
Olivier Grégoire
@ OlivierGrégoire [12,23,12] -> [12,2,12] -> [1,2,12] -> [1,2,1] -> [1,1] -> [1] -> 1 est à mon avis correct
Jörg Hülsermann
Mon mauvais, j'ai mal lu. Voir le commentaire précédent .
Olivier Grégoire
2

V , 11 , 5 octets

ÚxV}p

Essayez-le en ligne!

Je rendais ce waaay plus compliqué qu'il ne l'est réellement. Cette réponse trie simplement chaque ligne par valeurs ASCII, puis renvoie le tout premier caractère. Puisque c'est une réponse gentille ou ennuyeuse, voici une réponse plus intéressante qui implémente réellement l'algorithme décrit à l'origine:

V , 11 octets

òún
/äîä
Lx

Essayez-le en ligne!

James
la source
Je l'étais aussi quand j'ai posé la question. Votre réponse originale était ce à quoi je m'attendais le plus. Bummer.
Henry
2

Gelée ,  3  2 octets

ṂḢ

Un programme complet qui prend une liste de listes de caractères (chaînes) et imprime le résultat.

Essayez-le en ligne!

Comment?

Nous avons juste besoin de retourner le plus petit chiffre de tête ...

ṂḢ - Main link: list of lists of characters
Ṃ  - minimum (lexicographical ordering ensures this will start with the minimal digit)
 Ḣ - head (get that first digit character)
Jonathan Allan
la source
Pas de problème, ça arrive.
Jonathan Allan
2

JavaScript (ES6), 17 octets

Prend l'entrée comme un tableau de chaînes.

a=>a.sort()[0][0]

Essayez-le

Saisissez une liste de nombres séparés par des virgules.

o.innerText=(f=
a=>a.sort()[0][0]
)((i.value="1278,232,98273,2334").split`,`);oninput=_=>o.innerText=f(i.value.split`,`)
<input id=i><pre id=o>

Hirsute
la source
1

,,,, 3 octets

⫰1⊣

Explication

⫰1⊣

⫰    pop the whole stack and push the minimum element
 1   push 1
  ⊣  pop the minimum and 1 and push the first character of it
totalement humain
la source
1

Braingolf , 17 octets

VVR{Mvd<M&$_R}vvx

Essayez-le en ligne!

Explication

VVR{Mvd<M&$_R}vvx  Implicit input from commandline args
VVR                Create stack2 and stack3, return to stack1
   {.........}     Foreach item in stack..
    M              ..Move item to next stack
     v             ..Switch to next stack
      d            ..Split item into digits
       <M          ..Move first item to next stack
         &$_       ..Clear stack
            R      ..Return to stack1
              vv   Switch to stack3
                x  Reduce to lowest value
                   Implicit output of last item on stack

En d'autres termes, il construit une pile composée uniquement du premier chiffre de chaque élément, puis sort le plus bas.

Ce défi m'a donné un tas d'idées utiles à intégrer à Braingolf, et maintenant grâce à l'ajout de la boucle foreach "spéciale", Braingolf peut le faire en 5 octets:

Braingolf , 5 octets [non concurrent]

(d<)x

Explication

(d<)x  Implicit input from commandline args
(..)   Special foreach loop, iterates over the stack, moving each item to a special
       Sandboxed stack environment, and prepends the last item of the sandboxed
       stack to the real stack at the end of each iteration
 d<    Split into digits, move first digit to end of stack
    x  Reduce to lowest value
       Implicit output of last item on stack

Essayez-le en ligne!

Je suis normalement contre l'ajout de buildins juste pour compléter un défi, mais je peux voir une pléthore d'utilisations pour la nouvelle (...)boucle foreach, donc je ne considère pas vraiment l'ajout d'une fonctionnalité juste pour ce défi.

Skidsdev
la source
Échoue pour [12,23,12]. La sortie attendue est 2, vous avez renvoyé 1.
Olivier Grégoire
@ OlivierGrégoire La sortie attendue de cela est 1:[12,23,12] > [12,2,12] > [1,2,1] > [1,1]
Skidsdev
Mon mauvais, j'ai mal lu. Voir le commentaire précédent .
Olivier Grégoire
0

Pip , 5 octets

Prend la liste des numéros d'entrée comme arguments de ligne de commande.

@@SSg

Essayez-le en ligne!

Alternativement:

MN@Zg

Essayez-le en ligne!

Explications

Dans les deux programmes, se gtrouve la liste des arguments de ligne de commande.

@@SSg

SStrie en utilisant la comparaison de chaînes, plaçant ainsi les nombres avec les plus petits premiers chiffres en premier, indépendamment de leur ampleur. Unary @donne le premier élément d'une liste ou scalaire. Nous l'appliquons deux fois pour obtenir le premier chiffre du premier nombre après le tri.

    g  [24 72 491]
  SS   [24 491 72]
 @     24
@      2

Alternativement:

MN@Zg

Zest zip; sa version unaire peut être utilisée pour transposer une liste. Le premier élément de la liste transposée est une liste des premiers chiffres de tous les nombres. @obtient cette liste de chiffres; MNprend son minimum.

    g  [24 72 491]
   Z   [[2 7 4] [4 2 9]]
  @    [2 7 4]
MN     2
DLosc
la source
0

PHP, 27 octets

<?=substr(max($_GET),0,-1);

(Wow, totalement mal compris la question. Cela ne fonctionne pas. Éditera plus tard.)

Liren
la source
0

Pyth , 9 7 octets

hSmsh`d

Essayez-le en ligne!

Explication

Cela renvoie essentiellement le plus petit chiffre de début.

       Q    # Implicit input
  msh`d     # For each number in Q, convert to string, take the first character, convert to integer
hS          # Return the minimum
Jim
la source
0

Python 3 , 33 octets

lambda l:min(str(x)[0]for x in l)

Essayez-le en ligne!

@DJMcMayhem et @totallyhuman ont de meilleures solutions mais la mienne suppose une entrée numérique au lieu d'une chaîne.

Simon
la source
0

Pyth, 3 octets

hhS

L'entrée est une liste de représentations de chaînes de nombres.

Essayez-le en ligne

Explication:

hhS
    # Q=input
  S # Sort Q
 h  # First Element of sorted list
h   # First element of string
    # Implicitly print result
jacoblaw
la source