Étant donné une liste ordonnée de nombres (éventuellement avec des zéros en tête), organisez les nombres verticalement, puis laissez tous les zéros tomber jusqu'en bas et tous les surplombs tombent dans la fente la plus ouverte en bas. Sortez les entiers résultants, en supprimant les zéros de tête.
Exemple travaillé
Disons que nous avons reçu les éléments suivants en entrée:
['0000312941295', '239124000124581598', '32852353800451258', '10235923505185190', '1491359102149']
Nous l'organisons d'abord verticalement:
0000312941295
239124000124581598
32852353800451258
10235923505185190
1491359102149
Ensuite, colonne par colonne, déposez les zéros "à travers" les autres nombres afin qu'ils reposent sur le bas et "poussez" les autres nombres vers le haut. Cela entraînerait les deux premières étapes comme suit:
2000312941295
339124000124581598
12852353800451258
10235923505185190
0491359102149
^
2300312941295
329124000124581598
14852353800451258
10235923505185190
0091359102149
^
2390312941295
328124000124581598
14252353800451258
10935923505185190
0001359102149
^
...
2391312941295
328524538124581598
14232323525451258
10915991001185190
0000350000049
^
Ensuite, déposez tous les surplombs comme si la gravité les tirait comme du sable.
2391312941295
3285245381245 1598
14232323525458258
10915991001181190
00003500000495
^
2391312941295
3285245381245 598
14232323525458158
10915991001181290
000035000004951
^
...
2391312941295
3285245381245
14232323525458159
10915991001181258
000035000004951908
^
Enfin, affichez ces chiffres en supprimant les zéros non significatifs. Pour notre exemple travaillé, sortie:
[2391312941295, 3285245381245, 14232323525458159, 10915991001181258, 35000004951908]
Pour un autre exemple, supposons l'entrée de [1234000,12345678,1234,12340608,12341234]
.
1234000
12345678
1234
12340608
12341234
Déposez les zéros:
1234
12345678
1234163
12340208
12340004
Déposez les chiffres en surplomb restants:
1234
1234567
12341638
12340208
12340004
La sortie est [1234, 1234567, 12341638, 12340208, 12340004]
.
Règles
- L'entrée peut contenir des zéros non significatifs. La sortie ne doit pas contenir de zéros non significatifs.
- Le cas échéant, vous pouvez supposer que l'entrée / sortie s'adaptera au type Integer natif de votre langue.
- L'entrée et la sortie peuvent être fournies par n'importe quelle méthode pratique .
- Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) gagne.
la source
14232323525458159
à14232323525458160
)and all overhangs drop to the bottom-most open slot
était une bonne solution à mon défi cassé :).. 1234
est très différente de la sortie1234
.Réponses:
Gelée , 8 octets
Essayez-le en ligne!
Comment ça marche
la source
Sort each row of the transpose by logical NOT, pushing 0's to the end.
Est-ce garanti que ce sera un type stable?sorted
, qui est garanti stable.ṚZẸÞ€ZṚḌ
:)05AB1E , 11 octets
Essayez-le en ligne!
la source
†
utilisé auparavant, sympa.Husk , 12 octets
Essayez-le en ligne!
Explication
la source
Python 2 , 118 octets
Essayez-le en ligne!
Version non golfée
Les deux premières lignes sont équivalentes à
map(lambda*a...)
, le comportement par défaut si pourmap
remplir avecNone
s si une liste est plus courte que l'autre.e>'0'
est équivalent àcell != '0' and cell != None
, car s'il s'agit d'un chiffre (1 ~ 9), il aura un point de code plus élevé et (toute) chaîne est supérieure àNone
.la source
Pyth , 11 octets
Essayez-le en ligne!
la source
Rétine 0,8,2 ,
9592 octetsEssayez-le en ligne! Explication: La première étape supprime les chiffres en surplomb car cela facilite (modification: encore plus facile pour une sauvegarde sur 3 octets) la seconde étape pour supprimer les zéros. La troisième étape supprime ensuite les zéros non significatifs.
la source
Rubis , 104 octets
Essayez-le en ligne!
Explication
la source
APL (Dyalog Unicode) , 26 octets SBCS
Fonction de préfixe tacite anonyme prenant une matrice de caractères comme argument et renvoyant une liste de nombres.
Essayez-le en ligne!
⍉
transposer l'entrée (car nous devons travailler sur les colonnes)' 0'(
…)⍤1⍨
Appliquer la fonction tacite suivante à chaque ligne (sous-tableau de rang de tenseur 1) avec' 0'
comme argument de droite (⍨
permute les arguments):∩
intersection de la rangée et∘
et⊃
le premier' 0'
(ie
row∩' '
, tous les espaces de chaque rangée),
suivi par…~
la différence définie(c'est-à-dire
row~' 0'
la ligne mais sans espaces ni zéros),
suivi par…∩
intersection de la ligne et∘
et⊃
le premier∘
de⌽
l'inverse' 0'
(c.-à-d.
row∩'0'
-à- ; tous les zéros de chaque rangée)⍎⍤1
évaluer chaque ligne (sous-tableau de rang de tenseur 1)∘
de⍉
la transposition (c'est-à-dire chaque colonne; les lignes d'entrée maintenant modifiées)la source
⍎⍤1∘⍉{⍵[⍋3|2×' 0'⍳⍵]}⍤1∘⍉
(⎕io←0
) Il peut être golfable plus loin, par exemple, je n'ai pas exploré dyadique⍋
⍎⍤1⍉{⍵[⍋3|2×' 0'⍳⍵]}⍤1⍉⎕
Perl 5 , -p0 77 octets
Comptage à l'ancienne: 79 octets (
+2
pourp0
)Donnez une entrée sous forme de lignes sur STDIN sans retour à la ligne final (sinon tout est considéré comme un surplomb et le retour à la ligne final monte vers le haut lorsque la chaîne d'entrée se bloque). Par exemple:
C'était un peu difficile d'obtenir la chute du surplomb et la
0
chute dans une expression régulièreEssayez-le en ligne!
la source
Rubis , 203 octets
Essayez-le en ligne!
Un lambda acceptant un tableau de chaînes et renvoyant un tableau d'entiers. J'ai l'impression de manquer quelque chose; cela semble énorme: /
la source
APL (Dyalog Classic) ,
242322 octetsEssayez-le en ligne!
basé sur la solution d'Adam
la source