Aqui está um desafio relativamente simples para você:
Dada uma lista de números inteiros positivos:
Alinhe-os em uma grade e some cada coluna. Por exemplo, se a entrada fosse
[123, 7, 49, 681]
, a grade ficaria assim:1 2 3 7 4 9 6 8 1
E a soma de cada coluna seria
[18, 19, 4]
:1 2 3 7 4 9 6 8 1 -------- 18 19 4
Encontre o máximo dessas somas, que nesse caso seriam 19 e, em seguida,
Envie todos os dígitos que estão no mesmo índice que essa coluna máxima. Nesse caso, isso seria
2 9 8
Você não precisa emitir esses números em nenhuma ordem específica. Observe que existem apenas três saídas, mesmo tendo quatro entradas. No caso de empate, escolha o índice mais antigo. Por exemplo, se a entrada foi
[25, 223, 302]
, sua grade é:2 5 2 2 3 3 0 2 ------- 7 7 5
Você deve produzir
2 2 3
Você pode imprimir esses números em qualquer formato que desejar. Formato de lista, nova linha separada, espaço separado, etc. Você não pode receber a entrada como uma matriz de dígitos 2D, por exemplo
[[1, 2, 3],
[7],
[4, 9],
[6, 8, 1]
Mas, além disso, você pode considerar a entrada como uma lista de cadeias, uma lista de dígitos ou qualquer outro formato razoável.
Você também pode assumir que todas as entradas serão válidas e conterão pelo menos dois números.
Como sempre, a resposta mais curta em bytes vence!
Teste de E / S:
#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
. Zero geralmente não é considerado positivo em inglês.Respostas:
Haskell, 63 bytes
Exemplo de uso:
argmax sum.transpose.map(map(read.pure).show) $ [12,304,506]
->[4,6]
.Como funciona:
fonte
Gelatina , 6 bytes
Experimente online! . Esta é uma implementação relativamente direta da questão.
fonte
Ruby,
10097 bytesfonte
eval e*?+
é ótimo! Também você pode fazer$<.map
; não há necessidade de dividi-lo em uma matriz.Mathematica 82 bytes
Isso preenche os dígitos de cada número com x para a direita, transpõe a matriz, remove os x fictícios, ordena pela soma dos dígitos e leva o maior.
Deve haver alguma maneira de usar o formato sobrescrito-T
Transpose
para salvar alguns bytes.fonte
Perl,
4948 bytesInclui +1 para
-p
Execute com a entrada STDIN, imprima em STDOUT os números das colunas prefixados por
+
lcolumn.pl
:fonte
Javascript (ES6),
108103100 bytesÉ um pouco detalhado e provavelmente poderia ser jogado mais com uma abordagem diferente. Eu gostaria de poder me livrar disso
.filter(n=>n)
.Economizou 5 bytes graças a Neil
Economizou 3 bytes graças a edc65
Demo
fonte
(d,x)=>(
...,d)
, o interiormap
retornará uma cópia dek
, economizando assim a necessidade de atribuirk
, o que economiza 4 bytes.m
, ou seja(s[x]=(s[x]|0)-d)<m
, economiza um 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)
+''
Pitão,
58 bytesRecebe entrada como uma lista de seqüências de caracteres e gera como uma lista de dígitos separada por nada.
Experimente online!
Explicação:
fonte
Pitão, 11 bytes
Um programa que recebe a entrada de uma lista de números inteiros no STDIN e imprime uma lista.
Experimente online
Como funciona
fonte
JavaScript (ES6), 90
fonte
Pitão - 9 bytes
Conjunto de Teste .
fonte