Đếm đá quý
Lý lịch
Hộp ngọc của tôi vừa rơi xuống! Có quá nhiều đá quý có hình dạng khác nhau trên mặt đất. Và nhiệm vụ của bạn là đếm số loại đá quý nhất định.
Tôi / O
- Mã của bạn phải có hai đầu vào
S
vàG
, có thể là một chuỗi có dòng mới, một mảng các dòng, một mảng các ký tự hai chiều, một tệp văn bản hoặc ở bất kỳ định dạng hợp lý nào (nếu vậy, vui lòng nêu rõ). - Hai chuỗi này sẽ chỉ chứa
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
(từ0x21
đến0x7E
trong bảng ASCII), dấu cách và dòng mới (dạng nhị phân tùy thuộc vào nền tảng của bạn). - Trong mỗi chuỗi, các dòng có cùng độ dài.
S
là viên ngọc chúng ta muốn đếm. Có hai hoàn cảnh.- Kèm theo và không chứa bất kỳ khu vực kèm theo lồng nhau. (ví dụ 1/2)
- Không chứa bất kỳ khu vực kèm theo. (ví dụ 3/4)
- Không gian xung quanh không được coi là một phần của đá quý.
G
là hình dạng của đá quý trên mặt đất.- Có thể chấp nhận rằng mã của bạn yêu cầu thêm đầu vào để chỉ định (các) thứ nguyên của
S
vàG
- Có thể chấp nhận rằng mã của bạn lấy giá trị ASCII làm đầu vào, thay vì chính các ký tự. Nhưng bạn không nên thay thế các ký tự bằng các số nguyên đơn giản hơn (0,1,2,3). Chương trình của bạn sẽ có thể xử lý các ký tự hoặc các giá trị ASCII.
Ví dụ 1 (Ký tự là đầu vào)
Đầu vào S
:
+-+
| +-+
| | |
| | |
| +-+
+-+
Đầu vào G
:
+-+ +-+
| +-+ +-+ |
| | | | | |
| | | | | |
| +-+ +-+ |
+-+ +-+
+-+
+---+ | +-+
| | | | |
| | | | |
| | | +-++
| | +-+| +-+
+---+ | | |
| | |
+-+ | +-+
| +-+ +-+
| |-|
| |-|
| +-+
+-+
Ouptut:
2
Ví dụ 2 (giá trị ASCII làm đầu vào)
Đầu vào S
:
32 32 32 32 32 32 32 32
32 32 32 32 99 32 99 32
32 32 32 99 32 99 32 99
32 32 32 99 32 32 32 99
32 32 32 99 32 32 32 99
32 32 32 99 32 32 32 99
32 32 32 32 99 32 99 32
32 32 32 32 32 99 32 32
32 32 32 32 32 32 32 32
Đầu vào G
:
32 99 32 99 32 99 32 99 32 32 99 32
99 32 99 32 99 32 99 32 99 99 32 99
99 32 32 32 99 32 32 32 99 32 32 99
99 99 32 32 99 32 32 32 99 32 32 99
99 32 32 32 99 32 32 32 99 32 32 99
32 99 32 99 32 99 32 99 99 32 99 32
32 32 99 32 32 32 99 32 32 99 32 32
Đầu ra:
1
Trực quan hóa S
(32 thay thế bằng -):
-- -- -- -- -- -- -- --
-- -- -- -- 99 -- 99 --
-- -- -- 99 -- 99 -- 99
-- -- -- 99 -- -- -- 99
-- -- -- 99 -- -- -- 99
-- -- -- 99 -- -- -- 99
-- -- -- -- 99 -- 99 --
-- -- -- -- -- 99 -- --
-- -- -- -- -- -- -- --
Hình dung G
:
-- 99 -- 99 -- 99 -- 99 -- -- 99 --
99 -- 99 -- 99 -- 99 -- 99 99 -- 99
99 -- -- -- 99 -- -- -- 99 -- -- 99
99 99 -- -- 99 -- -- -- 99 -- -- 99
99 -- -- -- 99 -- -- -- 99 -- -- 99
-- 99 -- 99 -- 99 -- 99 99 -- 99 --
-- -- 99 -- -- -- 99 -- -- 99 -- --
Ví dụ 3 (Không kèm theo)
Cảm ơn @ Draco18s
Đầu vào S
AB
Đầu vào G
AAB BA CAB
Đầu ra
2
Ví dụ 4 (Không kèm theo 2D)
Đầu vào S
ABCD
GE
F
Đầu vào G
ABCD
BGGED
CDEFE
F
Đầu ra
1
Nhận xét
- Chỉ có hai viên đá quý có hình dạng chính xác được coi là giống nhau.
- Cùng một hình dạng theo các hướng khác nhau không được coi là giống nhau.
- Tuy nhiên, như được mô tả trong I / O ví dụ, việc chồng chéo là có thể. Trong những trường hợp như vậy, chỉ những người hoàn thành được tính.
+
,-
Và|
trong ví dụ này không có ý nghĩa đặc biệt. Họ không chỉ ra bất kỳ góc hoặc cạnh của hình dạng.- Bạn có thể cho rằng đầu vào luôn hợp lệ.
- Bạn có thể giả sử hai viên đá quý mục tiêu không bao giờ chia sẻ một cạnh chính xác.
- Sơ hở tiêu chuẩn bị cấm.
- Đây là một mã golf, vì vậy mã ngắn nhất sẽ thắng!
@LiefdeWen Tôi đã làm cho nó trực quan, bạn có thể tìm thấy
—
Keyu Gan
S
ở giữa G
.
Tôi nghĩ rằng một số ví dụ đơn giản là cần thiết ở đây, chẳng hạn như
—
Draco18 không còn tin tưởng SE
S = "AB"
, G=" AAB BA CAB"
, = đầu ra?
@ Draco18s Cảm ơn bạn, tôi sẽ thêm nó.
—
Keyu Gan
Ví dụ đơn giản đó thực sự đã giúp hiểu hành vi mong muốn. Thật tuyệt
—
Draco18s không còn tin tưởng SE
G
chứa trongS
?