Các lưới lục giác đã trở thành một vòng xoắn khá phổ biến cho những thách thức về dữ liệu 2 chiều gần đây. Tuy nhiên, dường như các lưới tam giác thú vị không kém phần lớn đã bị bỏ quên cho đến nay. Tôi muốn khắc phục điều đó với một thử thách khá đơn giản.
Đầu tiên, làm thế nào để chúng ta đại diện cho một lưới tam giác? Xem xét ví dụ sau (bỏ qua sơ đồ đúng cho bây giờ):
Các ô nằm gọn trong một lưới thông thường (sự khác biệt so với lưới thông thường chỉ là các ô được coi là liền kề):
1234567
89abcde
fghijkl
mnopqrs
Bây giờ, như sơ đồ bên phải cho thấy, một lưới tam giác có ba trục chính: một trục ngang và hai đường chéo.
Làm nổi bật những thứ này trong lưới ASCII:
AVAVAVA
VAabcAV
fVAiAVl
mnVAVrs
Các thách thức
Bạn được cung cấp một chuỗi hình chữ nhật đại diện cho lưới hình tam giác (trong đó góc trên cùng bên trái là hình tam giác hướng lên trên). Hầu hết các ô có be .
, nhưng chính xác là hai ô sẽ là #
, ví dụ:
....#
.#...
.....
Xác định xem hai cái #
có thẳng hàng dọc theo bất kỳ một trong ba trục của lưới hay không (nghĩa là chúng có nằm trên một hàng theo bất kỳ hướng nào trong ba hướng được tô sáng ở trên không). Trong ví dụ này, câu trả lời là "không".
Bạn có thể viết chương trình hoặc hàm, lấy đầu vào qua STDIN (hoặc thay thế gần nhất), đối số dòng lệnh hoặc đối số hàm và xuất kết quả qua tham số STDOUT (hoặc thay thế gần nhất), tham số trả về hàm hoặc tham số hàm (out).
Đầu vào có thể là một chuỗi đơn được phân tách bằng nguồn cấp dữ liệu hoặc một số ký tự thuận tiện khác hoặc danh sách các chuỗi. Bạn có thể sử dụng bất kỳ hai ký tự ASCII có thể in (nhất quán) thay cho .
và #
.
Đầu ra phải là một truthy giá trị nếu các ô được đánh dấu được liên kết và một falsy giá trị khác.
Luật golf tiêu chuẩn được áp dụng.
Các trường hợp thử nghiệm
Lưới thật:
.#..#.
#
#
...........
...#.......
...........
...........
...........
.......#...
...........
...........
.......#...
...........
...........
...........
...#.......
...........
.#.........
...........
...........
...........
...........
.......#...
...........
...........
...#.......
...........
...........
...........
...........
.......#...
.........#.
...........
...........
...........
...........
...#.......
...........
...........
.......#...
...........
...........
...........
...........
...#.......
...........
.#.....#...
...........
...........
...........
Lưới Falsy:
#.....
.....#
.....#
#.....
...#.......
...........
...........
...........
...........
.......#...
...........
...........
...#.......
...........
...........
...........
...........
.........#.
.......#...
...........
...........
...........
...........
...#.......
...........
...........
.......#...
...........
...........
...........
...........
.#.........