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!


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:






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

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

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!


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)

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>


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

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.


É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



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

0

PHP, 27 octets

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

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


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

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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.