Voici un défi relativement simple pour vous:
Étant donné une liste d'entiers positifs:
Alignez-les dans une grille et additionnez chaque colonne. Par exemple, si l'entrée était
[123, 7, 49, 681]
, la grille ressemblerait à ceci:1 2 3 7 4 9 6 8 1
Et la somme de chaque colonne serait
[18, 19, 4]
:1 2 3 7 4 9 6 8 1 -------- 18 19 4
Trouvez le maximum de ces sommes, qui dans ce cas serait 19, puis
Sortez chaque chiffre qui est au même index que cette colonne maximale. Dans ce cas, ce serait
2 9 8
Vous n'avez pas besoin de sortir ces numéros dans un ordre particulier. Notez qu'il n'y a que trois sorties, même si nous avions 4 entrées. En cas d'égalité, choisissez le premier indice. Par exemple, si l'entrée était
[25, 223, 302]
, votre grille est:2 5 2 2 3 3 0 2 ------- 7 7 5
Vous devez sortir
2 2 3
Vous pouvez imprimer ces numéros dans le format de votre choix. Format de liste, saut de ligne séparé, espace séparé, etc. Vous ne pouvez pas prendre l'entrée comme un tableau 2D de chiffres, par exemple
[[1, 2, 3],
[7],
[4, 9],
[6, 8, 1]
Mais à part cela, vous pouvez prendre l'entrée comme une liste de chaînes, une liste de chiffres ou tout autre format raisonnable.
Vous pouvez également supposer que toutes les entrées seront valides et contiendront au moins deux nombres.
Comme d'habitude, la réponse la plus courte en octets gagne!
Test 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
. Zéro n'est généralement pas considéré comme positif en anglais.Réponses:
Haskell, 63 octets
Exemple d'utilisation:
argmax sum.transpose.map(map(read.pure).show) $ [12,304,506]
->[4,6]
.Comment ça fonctionne:
la source
Gelée , 6 octets
Essayez-le en ligne! . Il s'agit d'une mise en œuvre relativement simple de la question.
la source
Rubis,
10097 octetsla source
eval e*?+
c'est super! Vous pouvez aussi simplement faire$<.map
; pas besoin de le répartir dans un tableau.Mathematica 82 octets
Cela remplit les chiffres de chaque nombre avec des x à droite, transpose la matrice, supprime les x fictifs, ordonne par la somme des chiffres et prend le plus grand.
Il devrait y avoir un moyen d'utiliser la forme en exposant-T
Transpose
pour économiser quelques octets.la source
Perl,
4948 octetsComprend +1 pour
-p
Exécuter avec l'entrée sur STDIN, imprime dans STDOUT les numéros de colonne préfixés par
+
lcolumn.pl
:la source
Javascript (ES6),
108103100 octetsC'est un peu bavard et pourrait probablement être joué au golf avec une approche différente. J'aimerais pouvoir m'en débarrasser
.filter(n=>n)
.5 octets enregistrés grâce à Neil
3 octets enregistrés grâce à edc65
Démo
la source
(d,x)=>(
...,d)
alors l'intérieurmap
renvoie une copie dek
, vous évitant ainsi d'avoir à assignerk
, ce qui vous fait gagner 4 octets.m
, c'est-à-dire(s[x]=(s[x]|0)-d)<m
vous fait économiser un octet.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 octetsPrend l'entrée comme une liste de chaînes, les sorties comme une liste de chiffres séparés par rien.
Essayez-le en ligne!
Explication:
la source
Pyth, 11 octets
Un programme qui prend l'entrée d'une liste d'entiers sur STDIN et imprime une liste.
Essayez-le en ligne
Comment ça fonctionne
la source
JavaScript (ES6), 90
la source
Pyth - 9 octets
Suite de tests .
la source