introduction
Ceci est un journal de longueur 5:
#####
Je veux empiler un tas de ces journaux les uns sur les autres. Pour ce faire, je glisse une nouvelle bûche sur la plus haute à partir de la droite et arrête de glisser lorsque leurs extrémités gauche ou droite s'alignent (ne demandez pas pourquoi). Si le nouveau journal est plus long, il glisse jusqu'à l'extrémité gauche du journal le plus haut:
######## <-
#####
S'il est plus court, il ne glisse que jusqu'à ce que leurs extrémités droites s'alignent:
###### <-
########
#####
Lorsque je glisse plus de bûches dans la pile, leurs positions sont déterminées par la bûche la plus élevée actuelle:
##
######
###
####
##
######
########
#####
Cela semble physiquement impossible, mais supposons que cela fonctionne.
La tâche
Votre entrée doit être une liste non vide d'entiers positifs, représentant la longueur de mes journaux. Le nombre le plus à gauche est le premier rondin que j'ai mis dans la pile, il finit donc en bas. Dans l'exemple ci-dessus, l'entrée serait [5,8,6,2,4,3,6,2]
. Votre sortie sera, pour chaque colonne de la pile résultante, le nombre de journaux qui traversent cette colonne. Dans l'exemple ci-dessus, la sortie correcte serait [2,2,3,3,3,2,4,6,3,3,1,2,2]
.
Règles et notation
L'entrée et la sortie peuvent être dans n'importe quel format raisonnable. La sortie ne peut contenir que des entiers positifs, c'est-à-dire qu'elle ne doit pas avoir de 0
s de début ou de fin . Les règles de code-golf normales s'appliquent: vous pouvez écrire un programme complet ou une fonction, le nombre d'octets le plus bas l'emporte et les failles standard sont interdites.
Cas de test
[1] -> [1]
[4] -> [1,1,1,1]
[3,2] -> [1,2,2]
[2,3] -> [2,2,1]
[2,2,2] -> [3,3]
[2,3,2] -> [2,3,2]
[3,2,3] -> [1,3,3,1]
[1,3,2,2,1,3,1] -> [2,3,5,1,2]
[4,3,4,2,4,3,4,2] -> [1,3,3,5,5,3,4,2]
[5,8,6,2,4,3,6,2] -> [2,2,3,3,3,2,4,6,3,3,1,2,2]
[5,10,15,1,1,1,1,1,2] -> [3,3,3,3,3,2,2,2,2,2,1,1,1,1,7,1]
[13,12,2,10,14,12] -> [1,2,2,2,2,2,2,2,2,2,2,5,5,3,3,3,3,3,3,3,3,2,2,2,2]
[12,14,3,6,13,1,1] -> [2,2,2,2,2,2,2,2,2,2,2,5,4,4,2,2,2,1,1,1,1,1,1,3]
[7,5,12,5,1,10,14,5] -> [1,1,3,3,3,3,3,1,1,2,2,2,2,5,2,2,2,2,2,2,2,2,3,2,2,2,2]
[14,5,1,3,12,6,2,2,1,7,9,15] -> [1,1,1,1,1,1,1,1,1,2,2,2,2,5,2,2,1,1,1,2,2,2,2,4,8,3,3,3,3,3,3,2,2,1,1,1,1,1,1]
Réponses:
Gelée ,
1816 octets-2 octets provoqués par l'aide de miles
Peut-être existe-t-il un moyen plus rapide d'utiliser les mathématiques plutôt que la construction comme celle-ci?
Essayez-le en ligne! ou voir la suite de tests .
Comment?
la source
IN»0+\0;;"x@€0,1S
Gelée ,
1913 octetsEssayez-le en ligne!
Enregistré 2 octets grâce à @Jonathan Allan.
Explication
la source
Python 3 ,
114109 octetsEdit: 5 octets enregistrés grâce à @ Mr.Xcoder
Essayez-le en ligne!
la source
Husk , 16 octets
Essayez-le en ligne!
Explication
la source
Perl 5 , 64 + 1 (
-a
) = 65 octetsEssayez-le en ligne!
la source
Mathematica,
76605857 octetsEssayez-le sur Wolfram Sandbox
la source
Kotlin 1.1,
113103 octetsEmbellie
Tester
la source