Reduce la lista a un número final


9

Entradas

Una lista (matriz) de números o cadenas numéricas si eso lo hace más fácil. Puede suponer que siempre habrá al menos dos elementos en la lista y cada elemento será un número natural (entero mayor que cero).

Salidas

Un solo número, o de nuevo, una cadena numérica.

Problema

La idea es reducir la lista de números eliminando el último dígito del número más grande en esa etapa actual de la lista, terminando finalmente con un número (solo se debe devolver un número, incluso si hay varias instancias)

Ejemplo

[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

Lagunas

Se aplican lagunas estándar

Otras restricciones

Su programa debe funcionar para cualquier lista de números aleatorios (dentro de lo razonable, por supuesto)

Casos de prueba

[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

Puntuación

Este es el , por lo que gana la respuesta más corta en todos los idiomas.


1
Por favor, avíseme si me perdí algo. Primera pregunta.
Henry

14
No sé si es demasiado tarde para cambiar, pero la pregunta podría ser mejor si nos tenemos a la salida de cada etapa. Creo que las respuestas serán bastante sencillas de lo contrario.
DLosc

8
Como nadie más lo ha mencionado, este es el tipo de cosas que con frecuencia quedarían atrapadas en la caja de arena .
James

1
¿Puedes agregar casos de prueba donde la respuesta no sea el primer dígito de la primera entrada de la lista?
JAD

55
La forma en que leí esta pregunta la respuesta para [12, 123, 124]decir 12, lo que hace que todo lo incorrecto Publicado respuesta .
Ørjan Johansen

Respuestas:






3

Japt , 8 6 5 bytes

-1 byte gracias a @Shaggy

n g g

Toma la entrada como una matriz de cadenas numéricas. Pruébalo en línea!

Explicación

        // implicit input: array of strings
n       // sort the array
  g     // get the first element
    g   // get the first character
        // implicit output

5 bytes : ordenar la matriz, obtener el primer elemento, obtener el primer carácter.
Shaggy

@ Shaggy Oh, duh, he complicado demasiado este. ¡Gracias!
Justin Mariner

No hay problema :) n v gtambién funcionaría para 5 bytes. Bienvenido a Japt, por cierto.
Shaggy



2

V , 11 , 5 bytes

ÚxV}p

Pruébalo en línea!

Estaba haciendo esto muuuucho más complicado de lo que realmente es. Esta respuesta simplemente ordena cada línea por valores ASCII y luego devuelve el primer carácter. Como esta es una respuesta amable o aburrida, aquí hay una respuesta más interesante que implementa el algoritmo originalmente descrito:

V , 11 bytes

òún
/äîä
Lx

Pruébalo en línea!


Yo también lo hice cuando hice la pregunta. Su respuesta original fue lo que más esperaba. Gorrón.
Henry

2

Jalea ,  3  2 bytes

ṂḢ

Un programa completo que toma una lista de listas de caracteres (cadenas) e imprime el resultado.

Pruébalo en línea!

¿Cómo?

Solo necesitamos devolver el dígito inicial más pequeño ...

ṂḢ - Main link: list of lists of characters
Ṃ  - minimum (lexicographical ordering ensures this will start with the minimal digit)
 Ḣ - head (get that first digit character)

No hay problema, sucede.
Jonathan Allan

2

JavaScript (ES6), 17 bytes

Toma la entrada como una matriz de cadenas.

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

Intentalo

Ingrese una lista de números separados por comas.

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 bytes

⫰1⊣

Explicación

⫰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 bytes

VVR{Mvd<M&$_R}vvx

Pruébalo en línea!

Explicación

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 otras palabras, construye una pila que consta de solo el primer dígito de cada elemento, luego genera el más bajo.

Este desafío me dio un montón de ideas útiles para agregar a Braingolf, y ahora gracias a la adición del bucle foreach "especial", Braingolf puede hacerlo en 5 bytes:

Braingolf , 5 bytes [no competidor]

(d<)x

Explicación

(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

Pruébalo en línea!

Normalmente estoy en contra de agregar builtins solo para completar un desafío, pero puedo ver una gran cantidad de usos para el nuevo (...)bucle foreach, por lo que realmente no considero que agregue una función solo para este desafío.


Falla por [12,23,12]. La salida esperada es 2, usted regresó 1.
Olivier Grégoire

@ OlivierGrégoire La salida esperada de eso es 1:[12,23,12] > [12,2,12] > [1,2,1] > [1,1]
Skidsdev



0

Pip , 5 bytes

Toma la lista de números de entrada como argumentos de línea de comandos.

@@SSg

Pruébalo en línea!

Alternativamente:

MN@Zg

Pruébalo en línea!

Explicaciones

En ambos programas, ges la lista de argumentos de línea de comandos.

@@SSg

SSordena utilizando la comparación de cadenas, colocando primero los números con los primeros dígitos más pequeños, independientemente de sus magnitudes. Unary @da el primer elemento de una lista o escalar. Lo aplicamos dos veces para obtener el primer dígito del primer número después de la clasificación.

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

Alternativamente:

MN@Zg

Zes zip; su versión unaria se puede usar para transponer una lista. El primer elemento de la lista transpuesta es una lista de los primeros dígitos de todos los números. @obtiene esa lista de dígitos; MNtoma su mínimo.

    g  [24 72 491]
   Z   [[2 7 4] [4 2 9]]
  @    [2 7 4]
MN     2

0

PHP, 27 bytes

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

(Wow, entendí totalmente mal la pregunta. Esto no funciona. Se editará más tarde).


0

Pyth , 9 7 bytes

hSmsh`d

Pruébalo en línea!

Explicación

Esto básicamente devuelve el dígito inicial más pequeño.

       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 bytes

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

Pruébalo en línea!

@DJMcMayhem y @totallyhuman tienen mejores soluciones, pero el mío supone una entrada numérica en lugar de una cadena.


0

Pyth, 3 bytes

hhS

La entrada es una lista de representaciones de cadena de números.

Pruébalo en línea

Explicación:

hhS
    # Q=input
  S # Sort Q
 h  # First Element of sorted list
h   # First element of string
    # Implicitly print result
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.