Trong thử thách trước đây , tôi đã vẽ sơ đồ đầu tiên chủ yếu bằng tay (với sự trợ giúp của chế độ khối hình ảnh của vim). Nhưng chắc chắn phải có một cách tốt hơn ...
Đưa ra một đầu vào có hai chiều, chiều rộng và chiều cao, xuất ra lưới hình lục giác với các kích thước đó trong nghệ thuật ASCII.
Đây là sơ đồ được tham chiếu trong phần giới thiệu (với các chỉnh sửa nhỏ), đây sẽ là đầu ra của bạn cho đầu vào width=7, height=3
:
_____ _____ _____
/ \ / \ / \
_____/ -2,-1 \_____/ 0,-1 \_____/ 2,-1 \_____
/ \ / \ / \ / \
/ -3,-1 \_____/ -1,-1 \_____/ 1,-1 \_____/ 3,-1 \
\ / \ / \ / \ /
\_____/ -2,0 \_____/ 0,0 \_____/ 2,0 \_____/
/ \ / \ / \ / \
/ -3,0 \_____/ -1,0 \_____/ 1,0 \_____/ 3,0 \
\ / \ / \ / \ /
\_____/ -2,1 \_____/ 0,1 \_____/ 2,1 \_____/
/ \ / \ / \ / \
/ -3,1 \_____/ -1,1 \_____/ 1,1 \_____/ 3,1 \
\ / \ / \ / \ /
\_____/ \_____/ \_____/ \_____/
Lưu ý một số điều:
Chiều rộng và chiều cao về cơ bản tương đương với số lượng hình lục giác có cho tọa độ y và x đã cho tương ứng. Đây sẽ luôn là số lẻ.
Mỗi hình lục giác được thể hiện bằng nghệ thuật ASCII
_____ / \ / \ \ / \_____/
nhưng đường viền được "chia sẻ" giữa các hình lục giác lân cận.
Dấu phẩy trong tọa độ luôn chính xác là hai ký tự bên dưới tâm của cạnh trên. Tọa độ x sau đó được định vị trực tiếp trước dấu phẩy và tọa độ y trực tiếp sau.
Bạn có thể cho rằng tọa độ sẽ không bao giờ quá lớn để chúng trùng với đường viền của hình lục giác.
Đầu vào có thể được lấy dưới dạng một chuỗi được phân tách bằng khoảng trắng / dấu phẩy, một mảng các số nguyên hoặc hai đối số hàm / dòng lệnh. Đầu ra phải là một chuỗi đơn (đến STDOUT, dưới dạng giá trị trả về, v.v.).
Vì đây là môn đánh gôn , mã ngắn nhất tính bằng byte sẽ giành chiến thắng.
Lưới ở trên có thể được sử dụng như một trường hợp thử nghiệm. width=199, height=199
Lưới có kích thước tối đa
rõ ràng là không thực tế để bao gồm ở đây, nhưng một vài hàng và cột đầu tiên sẽ trông như sau:
_____ ___
/ \ /
_____/-98,-99\_____/-96,
/ \ / \
/-99,-99\_____/-97,-99\___
\ / \ /
\_____/-98,-98\_____/-96,
/ \ / \
/-99,-98\_____/-97,-98\___
\ / \ /
\_____/-98,-97\_____/-96,
/ \ / \
/-99,-97\_____/-97,-97\___
\ / \ /