MATL , 20 byte
TiodgvYsG8XQ!"@gto?P
Đầu vào là một mảng cột, sử dụng ;
như dấu phân cách.
Hãy thử trực tuyến!
Giải trình
Hãy xem xét như một ví dụ về mảng đầu vào [1;2;3;5;7;4;6;7;9]
. Phần đầu tiên của mã, Tiodgv
chuyển đổi mảng này thành [1;1;1;0;0;1;0;1;0]
, trong đó 1
chỉ ra sự thay đổi của tính chẵn lẻ . (Cụ thể, mã có được tính chẵn lẻ của từng mục nhập của mảng đầu vào, tính toán các khác biệt liên tiếp, chuyển đổi các giá trị khác không thành 1
và trả trước a 1
.)
Sau đó Ys
tính tổng cộng , cho [1;2;3;3;3;4;4;5;5]
. Mỗi số này sẽ được sử dụng làm nhãn , dựa vào đó các yếu tố của đầu vào sẽ được nhóm lại . Điều này được thực hiện bằng cách G8XQ!
phân tách mảng đầu vào thành một mảng ô chứa các nhóm. Trong trường hợp này nó cho {[1] [2] [3;5;7] [4;6] [7;9]}
.
Phần còn lại của mã lặp ( "
) trên mảng ô. Mỗi mảng số cấu thành được đẩy với @g
. to
tạo một bản sao và tính chẵn lẻ của nó . Nếu ( ?
) kết quả là trung thực, tức là nội dung mảng là số lẻ, mảng được lật ( P
).
Ngăn xếp được hiển thị ngầm ở cuối. Mỗi mảng dọc số được hiển thị, đưa ra một danh sách các số được phân tách bằng các dòng mới.