Lấy cảm hứng từ Tạo một bức tường nhị phân
Đưa ra một danh sách các số nguyên dương, chúng ta có thể viết chúng ra trên tất cả các ví dụ như vậy, [2, 6, 9, 4]
ví dụ:
0010
0110
1001
0100
Chúng ta có thể tưởng tượng đây là một bức tường:
..#.
.##.
#..#
.#..
Tuy nhiên, đây là một bức tường rất yếu, và nó đã sụp đổ! Mỗi 1
( #
) rơi xuống cho đến khi nó chạm "mặt đất" hoặc khác 1
( #
). Các 0
( .
s) có mặt trong các điểm còn lại của 1
s di chuyển .
Điều này trở thành như sau:
....
....
.##.
####
Dịch trở lại:
0000
0000
0110
1111
Mà, như một danh sách các số, là [0, 0, 6, 15]
.
Một trường hợp thử nghiệm
[10, 17, 19, 23]
Điều này trở thành:
01010
10001
10011
10111
trở thành:
00000
10011
10011
11111
dịch lại:
[0, 19, 19, 31]
Thử thách
Đưa ra một danh sách các số nguyên dương, áp dụng phép biến đổi này vào danh sách. Đầu vào / đầu ra dưới dạng danh sách các số nguyên dương ở bất kỳ định dạng hợp lý nào. Tiêu chuẩn áp dụng.
Đây là một môn đánh gôn , vì vậy câu trả lời ngắn nhất bằng byte sẽ thắng!