Имея упорядоченный список чисел (возможно, с ведущими нулями), расположите числа по вертикали, затем позвольте всем нулям опуститься до самого дна, а все выступы упадут до самого нижнего открытого отверстия. Выведите полученные целые числа, удалив начальные нули.
Работал пример
Скажем, нам дали следующее:
['0000312941295', '239124000124581598', '32852353800451258', '10235923505185190', '1491359102149']
Сначала мы расположим это вертикально:
0000312941295
239124000124581598
32852353800451258
10235923505185190
1491359102149
Затем, столбец за столбцом, опускайте нули «через» другие числа, чтобы они располагались внизу, и «подталкивали» другие числа вверх. Это приведет к тому, что первые два шага будут следующими:
2000312941295
339124000124581598
12852353800451258
10235923505185190
0491359102149
^
2300312941295
329124000124581598
14852353800451258
10235923505185190
0091359102149
^
2390312941295
328124000124581598
14252353800451258
10935923505185190
0001359102149
^
...
2391312941295
328524538124581598
14232323525451258
10915991001185190
0000350000049
^
Затем отбросьте все выступы, как будто гравитация тянет их вниз, как песок.
2391312941295
3285245381245 1598
14232323525458258
10915991001181190
00003500000495
^
2391312941295
3285245381245 598
14232323525458158
10915991001181290
000035000004951
^
...
2391312941295
3285245381245
14232323525458159
10915991001181258
000035000004951908
^
Наконец, выведите эти числа, удалив начальные нули. Для нашего сработавшего примера выведите:
[2391312941295, 3285245381245, 14232323525458159, 10915991001181258, 35000004951908]
Для другого примера предположим ввод [1234000,12345678,1234,12340608,12341234]
.
1234000
12345678
1234
12340608
12341234
Сбросьте нули:
1234
12345678
1234163
12340208
12340004
Удалите оставшиеся нависающие цифры:
1234
1234567
12341638
12340208
12340004
Выход есть [1234, 1234567, 12341638, 12340208, 12340004]
.
правила
- Ввод может содержать начальные нули. Выход не должен содержать начальных нулей.
- Если применимо, вы можете предположить, что ввод / вывод будет соответствовать целочисленному типу вашего языка.
- Вход и выход могут быть заданы любым удобным способом. .
- Либо полная программа или функция приемлемы. Если функция, вы можете вернуть вывод, а не распечатать его.
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
источник
14232323525458159
до14232323525458160
)and all overhangs drop to the bottom-most open slot
был хорошим решением для моего сломанного вызова :).. 1234
сильно отличается от вывода1234
.Ответы:
Желе , 8 байт
Попробуйте онлайн!
Как это устроено
источник
Sort each row of the transpose by logical NOT, pushing 0's to the end.
Это гарантированно будет стабильным видом?sorted
, который гарантированно стабилен.ṚZẸÞ€ZṚḌ
:)05AB1E , 11 байт
Попробуйте онлайн!
источник
†
раньше, хороший.Шелуха , 12 байт
Попробуйте онлайн!
объяснение
источник
Python 2 , 118 байт
Попробуйте онлайн!
Неуправляемая версия
Первые две строки соответствуют
map(lambda*a...)
поведению по умолчанию, если formap
заполняетсяNone
s, если один список короче другого.e>'0'
эквивалентноcell != '0' and cell != None
, потому что если это любая цифра (1 ~ 9), она будет иметь более высокую кодовую точку, а (любая) строка выше, чемNone
.источник
Pyth , 11 байт
Попробуйте онлайн!
источник
Retina 0.8.2 ,
9592 байтаПопробуйте онлайн! Объяснение: На первом этапе удаляются нависающие цифры, поскольку это облегчает (редактирование: еще проще для 3-байтового сохранения) на втором этапе удаление нулей. Третий этап затем удаляет ведущие нули.
источник
Рубин , 104 байта
Попробуйте онлайн!
объяснение
источник
APL (Dyalog Unicode) , 26 байтов SBCS
Функция анонимного неявного префикса, принимающая символьную матрицу в качестве аргумента и возвращающая список чисел.
Попробуйте онлайн!
⍉
транспонировать вход (как нам нужно работать над столбцами)' 0'(
...)⍤1⍨
применять следующую молчаливую функцию к каждой строке (суб-массив тензорного ранга 1) с' 0'
как правый аргумент (⍨
свопами аргументов):∩
Пересечение строки и∘
и⊃
первое' 0'
(то есть
row∩' '
, все пространства из каждой строки),
с последующим…~
Разница набора(т. е.
row~' 0'
строка, но без пробелов и нулей),
с последующим…∩
Пересечение строки и∘
и⊃
первой∘
из⌽
обращенного' 0'
(то есть
row∩'0'
, все нули из каждой строки)⍎⍤1
оценить каждую строку (суб-массив тензора ранга 1)∘
из⍉
транспонированной , что (т.е. каждого столбца, в настоящее измененные входные строки)источник
⍎⍤1∘⍉{⍵[⍋3|2×' 0'⍳⍵]}⍤1∘⍉
(⎕io←0
) Это может быть в дальнейшем пригодно для игры в гольф, например, я не⍋
⍎⍤1⍉{⍵[⍋3|2×' 0'⍳⍵]}⍤1⍉⎕
Perl 5 , -p0 77 байт
Подсчет по старому стилю: 79 байт (
+2
дляp0
)Введите входные данные в виде строк на STDIN без окончательного перевода строки (в противном случае все будет выглядеть как выступ, а последний перевод строки поднимается наверх при падении входной строки). Например:
Было немного сложно заставить свисать и
0
свисать в одном регулярном выраженииПопробуйте онлайн!
источник
Рубин , 203 байта
Попробуйте онлайн!
Лямбда, принимающая массив строк и возвращающая массив целых чисел. Я чувствую, что что-то упустил; это кажется огромным: /
источник
APL (Dyalog Classic) ,
242322 байтаПопробуйте онлайн!
основанный на решении Адама
источник