Aquí hay un desafío relativamente simple para ti:
Dada una lista de enteros positivos:
Alinéelos en una cuadrícula y sume cada columna. Por ejemplo, si la entrada fue
[123, 7, 49, 681]
, la cuadrícula se vería así:1 2 3 7 4 9 6 8 1
Y la suma de cada columna sería
[18, 19, 4]
:1 2 3 7 4 9 6 8 1 -------- 18 19 4
Encuentre el máximo de estas sumas, que en este caso sería 19, y luego
Imprima cada dígito que esté en el mismo índice que esta columna máxima. En este caso, eso sería
2 9 8
No tiene que generar estos números en ningún orden en particular. Tenga en cuenta que solo hay tres salidas, a pesar de que teníamos 4 entradas. En caso de empate, elija el índice más antiguo. Por ejemplo, si la entrada fue
[25, 223, 302]
, su grilla es:2 5 2 2 3 3 0 2 ------- 7 7 5
Usted debe salir
2 2 3
Puede imprimir estos números en cualquier formato que desee. Formato de lista, nueva línea separada, espacio separado, etc. No puede tomar la entrada como una matriz 2D de dígitos, p. Ej.
[[1, 2, 3],
[7],
[4, 9],
[6, 8, 1]
Pero aparte de eso, puede tomar la entrada como una lista de cadenas, una lista de dígitos o cualquier otro formato razonable.
También puede suponer que todas las entradas serán válidas y contendrán al menos dos números.
Como de costumbre, ¡la respuesta más corta en bytes gana!
Prueba IO:
#Input #Output
[1, 11, 111, 1111] --> [1, 1, 1, 1]
[1, 12, 123] --> [2, 2]
[987654321, 111] --> [9, 1]
[111, 123456789] --> [9]
[4, 8, 15, 16, 23, 42] --> [4, 8, 1, 1, 2, 4]
[4, 8, 12, 26, 27, 38] --> [2, 6, 7, 8]
[24, 53] --> [2, 5]
[12, 304, 506] --> [4, 6]
[30, 285, 121] --> [0, 8, 2]
0
. Cero generalmente no se considera positivo en inglés.Respuestas:
Haskell, 63 bytes
Ejemplo de uso:
argmax sum.transpose.map(map(read.pure).show) $ [12,304,506]
->[4,6]
.Cómo funciona:
fuente
Jalea , 6 bytes
Pruébalo en línea! . Esta es una implementación relativamente sencilla de la pregunta.
fuente
Ruby,
10097 bytesfuente
eval e*?+
¡es genial! También puedes simplemente hacer$<.map
; no es necesario dividirlo en una matriz.Mathematica 82 bytes
Esto rellena los dígitos de cada número con las x a la derecha, transpone la matriz, elimina las x falsas, ordena por la suma de los dígitos y toma el mayor.
Debería haber alguna forma de usar la forma de superíndice T
Transpose
para guardar algunos bytes.fuente
Perl
4948 bytesIncluye +1 para
-p
Ejecute con la entrada en STDIN, imprime en STDOUT los números de columna con el prefijo
+
lcolumn.pl
:fuente
Javascript (ES6),
108103100 bytesEs un poco detallado y probablemente podría jugar un poco más con un enfoque diferente. Desearía poder deshacerme de esto
.filter(n=>n)
.Guardado 5 bytes gracias a Neil
Guardado 3 bytes gracias a edc65
Manifestación
fuente
(d,x)=>(
...,d)
, el internomap
devuelve una copia dek
, lo que le ahorra tener que asignark
, lo que le ahorra 4 bytes.m
, es decir(s[x]=(s[x]|0)-d)<m
, te ahorra un byte.a=>a.map(n=>[...n+''].map((d,i)=>(t=s[i]=s[i]||[0],t.push(d),(t[0]-=d)<m?r=t:0)),s=[],m=0)&&r.slice(1)
+''
Pyth,
58 bytesToma la entrada como una lista de cadenas, emite como una lista de dígitos sin nada.
Pruébalo en línea!
Explicación:
fuente
Pyth, 11 bytes
Un programa que toma la entrada de una lista de enteros en STDIN e imprime una lista.
Pruébalo en línea
Cómo funciona
fuente
JavaScript (ES6), 90
fuente
Pyth - 9 bytes
Test Suite .
fuente