Étant donné l'entrée d'une liste de blocs à déposer à certains points, affichez la hauteur de la "tour" résultante.
La meilleure façon d'expliquer ce défi est par l'exemple. L'entrée sera une liste de 2n entiers représentant n blocs. Le premier entier est la position x du bloc, indexé 0, et le second est la largeur du bloc. Par exemple, une entrée de 2 4
représente le bloc (avec les coordonnées x marquées ci-dessous):
####
0123456789
Maintenant, disons que l'entrée est 2 4 4 6
. Autrement dit, un bloc à x = 2 avec une largeur de 4, et un à x = 4 avec une largeur de 6:
######
####
Notez que a.) Les blocs "tombent" toujours du haut de la tour et b.) Les blocs ne "tomberont" jamais (c'est-à-dire qu'ils seront toujours en équilibre). Ainsi, une entrée de
2 4 4 6 12 1
représente:
######
#### #
Notez que le bloc final est tombé jusqu'au «sol».
Votre sortie finale doit être la hauteur maximale de la tour à chaque valeur x jusqu'à la plus grande. Par conséquent, l'entrée 2 4 4 6 12 1
devrait entraîner une sortie
0011222222001
:
######
#### #
0011222222001
L'entrée peut être donnée sous la forme d'une chaîne séparée par des espaces / virgules, un tableau d'entiers ou des arguments de ligne de fonction / commande. Les positions des blocs (valeurs x) seront toujours des entiers 0 ou plus, la largeur sera toujours un entier 1 ou plus, et il y aura toujours au moins un bloc.
La sortie peut être donnée sous la forme d'une chaîne unique séparée par des caractères non numériques (par exemple "0, 0, 1, ..."
), une chaîne unique répertoriant tous les chiffres (par exemple
"001..."
, la hauteur maximale est garantie à 9 ou moins) ou un tableau d'entiers.
Puisqu'il s'agit de code-golf , le code le plus court en octets gagnera.
Cas de test:
In Out
---------------------------------------------------------
2 4 4 6 12 1 0011222222001
0 5 9 1 6 4 2 5 1133333222
0 5 9 1 2 5 6 4 1122223333
0 5 2 5 6 4 9 1 1122223334
20 1 20 1 20 1 00000000000000000003
5 5 000011111
0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 4 123456789999
Réponses:
CJam,
3430 octetsEntrée sous forme de tableau de style CJam, sortie sous forme de chaîne de chiffres.
Exécutez tous les cas de test.
Voici deux variantes d'une autre idée, mais elle est actuellement de 2 octets de plus:
la source
Python 3, 89
Essayez-le en ligne .
La fonction prend et retourne une liste d'entiers.
la source
Rubis,
8887 octetsEssayez-le en ligne.
Inspiré par la réponse de grc, mais dans une langue différente et juste un peu plus courte.
Explication:
la source
APL, 79 octets
Entrée en tant que tableau APL, sortie en tant que tableau APL de chiffres.
la source
{⊃{o←⍵↑⍨z←(≢⍵)⌈a←+/⍺⋄e←z↑(-a)↑⍺[1]⍴1⋄o+0⌈o-⍨e×e⌈.+e×o}/⌽(⊂⍬),↓⍵⍴⍨⌽2,.5×≢⍵}
(Mon dieu, apprends à bien utiliser⍨
)⊃
et1↑
et à cause de cela, vous donnez des suggestions qui font que le programme mis à jour donne le mauvais résultat, mais je ne vous patronne pas.0.5
Java 1,8,
351329 octetsPas ravi de cette première tentative - je suis sûr que la double boucle, et tous ces Integer.valueOf peuvent être joués un peu plus.
Non golfé
la source