(Có những câu hỏi liên quan về các hố cát vô hạn và tìm các yếu tố nhận dạng của các hố cát .)
Cho một ma trận các số nguyên không âm, trả về một ma trận có cùng kích thước, nhưng được lật đổ :
- Nếu ma trận không chứa bất kỳ giá trị nào lớn hơn 4, hãy trả về nó.
- Mỗi "ô" lớn hơn 3 được giảm 4 và tất cả các ô lân cận trực tiếp (trên, dưới, trái và phải) đều được tăng lên, nếu chúng tồn tại.
- GOTO 1.
Ví dụ:
0 1 0 0 2 0
2 4 0 -> 3 0 1
0 0 3 0 1 3
1 2 3 2 3 4 2 5 1 4 1 2 0 3 3 0 3 3 0 3 3
4 5 6 -> 2 4 4 -> 4 2 3 -> 0 5 4 -> 3 2 1 -> 3 3 1 -> 3 3 2
7 8 9 5 7 7 2 6 5 4 3 2 0 5 3 1 1 4 1 2 0
(Bạn chỉ cần trả về kết quả cuối cùng. Đường dẫn mà bạn đạt được có thể khác với đường dẫn được hiển thị ở đây: không quan trọng bạn thực hiện các thao tác lật đổ nào, tất cả đều dẫn đến cùng một kết quả.)
Để được giải thích sâu hơn và một số động lực, hãy xem video Numberphile này hoặc bài viết trên Wikipedia về mô hình hố cát Abelian .
Quy tắc:
- Bạn có thể lấy đầu vào và đầu ra theo bất kỳ cách tiêu chuẩn nào
- Lỗ hổng bị cấm
- Đầu vào và đầu ra có thể là:
- một danh sách lồng nhau:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
- một danh sách đơn giản:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
và hình dạng - một số loại ma trận bản địa
- một chuỗi, ví dụ
1 2 3\n4 5 6\n7 8 9
- hoặc bất cứ điều gì khác làm việc trong ngôn ngữ của bạn.
- một danh sách lồng nhau:
- Đầu vào và đầu ra phải ở cùng một dạng
- Đầu vào có thể chứa số lớn hơn số được hiển thị ở đây, nhưng kích thước có thể bị ràng buộc bởi các giới hạn của ngôn ngữ của bạn (tương đương MAXINT, nếu có)
- Ma trận có thể có bất kỳ hình dạng nào (ví dụ: 1x1, 2x2, 3x3, 4x4, 2x7, 11x3, ...)
- Bạn không cần xử lý trường hợp hình dạng là 0xN hoặc Nx0.
Tủ thử
[[2, 5, 4], [8, 6, 4], [1, 2, 3]] -> [[3, 3, 0], [1, 2, 2], [1, 3, 2]]
[[0, 0, 2], [1, 3, 3], [0, 0, 0]] -> [[0, 0, 2], [1, 3, 3], [0, 0, 0]]
[[9, 9, 9], [9, 9, 9], [9, 9, 9]] -> [[1, 3, 1], [3, 1, 3], [1, 3, 1]]
[[4, 5], [2, 3]] -> [[2, 3], [0, 1]]
[[2, 3, 5], [2, 2, 0]] -> [[3, 0, 2], [2, 3, 1]]
[[7]] -> [[3]]
Đây là codegolf , mã ngắn nhất (theo ngôn ngữ) sẽ thắng.