Định nghĩa
Một ma trận đầu mũi tên là một ma trận có tất cả các mục tương đương với 0 , ngoại trừ những người trên đường chéo chính, hàng đầu tiên và cột tận cùng bên trái. Nói cách khác, ma trận sẽ trông như thế này:
* * * * * * * * 0 0 0 0 * 0 * 0 0 0 * 0 0 * 0 0 * 0 0 0 * 0 * 0 0 0 0 *
Trong đó mỗi * là bất kỳ mục nhập khác không.
Bài tập
Cho một ma trận vuông của các số nguyên không âm, kiểm tra xem nó có phải là đầu mũi tên theo định nghĩa ở trên không.
Bạn không thể lấy kích thước của ma trận làm đầu vào, trừ khi ngôn ngữ của bạn tương đương với một mảng là một cái gì đó giống như một con trỏ và độ dài (như C). Nó sẽ luôn luôn có ít nhất 3 x 3.
Mã ngắn nhất tính theo byte trong mỗi ngôn ngữ sẽ thắng.
Đầu vào và đầu ra
Bạn có thể chọn một trong các định dạng sau để nhận đầu vào:
- Một ma trận trong loại ma trận gốc (nếu ngôn ngữ của bạn có một)
- Mảng 2D 1 (một mảng gồm các mảng 1D, mỗi mảng tương ứng với một hàng)
- Mảng 1D (vì ma trận luôn vuông)
- Một chuỗi (bạn đã chọn khoảng cách, nhưng xin vui lòng không lạm dụng điều này theo bất kỳ cách nào).
Khi nói đến việc cung cấp đầu ra, bạn có thể báo cáo giá trị trung thực / sai lệch theo định nghĩa vấn đề quyết định tiêu chuẩn hoặc chọn bất kỳ hai giá trị riêng biệt và nhất quán nào.
Hơn nữa, bạn có thể nhận đầu vào và cung cấp đầu ra thông qua bất kỳ phương thức tiêu chuẩn nào , trong bất kỳ ngôn ngữ lập trình nào , trong khi lưu ý rằng các lỗ hổng này bị cấm theo mặc định. Nếu muốn chọn bất kỳ định dạng nào khác hoặc không chắc chắn về điều gì đó, vui lòng hỏi trong các nhận xét.
1: hoặc tương đương với ngôn ngữ của bạn (danh sách, vectơ, v.v.)
Ví dụ
Hãy xem các ví dụ sau:
1 2 2 2 2 1 0 0 3 0 1 0 4 0 0 1
Đây là ma trận đầu mũi tên (các chương trình của bạn phải báo cáo giá trị trung thực), bởi vì các phần tử trên đường chéo chính là 1 1 1 1
, các phần tử trên hàng trên cùng là 1 2 2 2
và các phần tử trên cột ngoài cùng bên trái là 1 2 3 4
. Tất cả các mục khác là 0 , vì vậy điều này thỏa mãn tất cả các điều kiện.
3 5 6 7 1 0 8 0 0
Ma trận này không phải là đầu mũi tên vì có 0 trên đường chéo chính.
9 9 9 9 9 9 0 0 9 7 9 0 9 0 0 9
Cái này cũng không phải là đầu mũi tên, vì nó chứa số 7 thay cho số 0 .
Nhiều trường hợp kiểm tra
Sự thật:
[[1, 1, 1], [1, 1, 0], [1, 0, 1]] [[1, 2, 3, 4], [1, 1, 0, 0], [1, 0, 1, 0], [1, 0, 0, 1]] [[1, 2, 2, 2], [2, 1, 0, 0], [3, 0, 1, 0], [4, 0, 0, 1]] [[34, 11, 35, 5], [56, 567, 0, 0], [58, 0, 679, 0], [40, 0, 0, 7]]
Giả mạo:
[[3, 5, 6], [7, 1, 0], [8, 0, 0]] [[9, 9, 9, 9], [9, 9, 0, 0], [9, 7, 9, 0], [9, 0, 0, 9]] [[1, 0, 3, 4], [1, 1, 0, 0], [1, 0, 1, 0], [1, 0, 0, 1]] [[1, 6, 3, 4], [13, 2, 0, 6], [29, 0, 1, 0], [2, 0, 0, 4]]