Đây là mã golf. Người chiến thắng là mã hợp lệ với số byte nhỏ nhất.
Thử thách
Cho đầu vào M và N , chiều rộng và chiều cao của một ô vuông hình chữ nhật, xuất ra một đa giác thỏa mãn các điều sau:
- Các cạnh đa giác chỉ được tạo thành từ các cạnh vuông: không có cạnh chéo - tất cả đều là dọc hoặc ngang.
- Đa giác không có lỗ: mọi hình vuông bên ngoài đa giác có thể đạt được bằng các bước trực giao trên các hình vuông bên ngoài đa giác, bắt đầu từ một hình vuông bên ngoài đa giác trên ranh giới bên ngoài của hình chữ nhật.
- Đa giác không có giao điểm tự: của các cạnh vuông gặp nhau ở một đỉnh, không quá 2 có thể là một phần của chu vi đa giác.
- Đa giác được kết nối: bất kỳ hình vuông nào trong đa giác đều có thể truy cập được từ bất kỳ hình vuông nào khác trong đa giác thông qua các bước trực giao nằm trong đa giác.
- Đa giác có chu vi tối đa có thể: theo công thức hiển thị bên dưới.
Mã của bạn phải hoạt động cho M và N từ 1 đến 255.
Công thức cho chu vi tối đa
Thách thức ở đây là tìm ra nhiều golf nhất trong số các đa giác với chu vi tối đa. Bản thân chu vi tối đa luôn được xác định bởi công thức:
Điều này đúng bởi vì đối với chu vi tối đa, mỗi đỉnh vuông phải nằm trên chu vi. Đối với một số đỉnh lẻ, điều này là không thể và điều tốt nhất có thể đạt được là một đỉnh ít hơn (vì chu vi luôn luôn là chẵn).
Đầu ra
Xuất hình dạng dưới dạng một chuỗi các ký tự được phân tách dòng mới ( N hàng gồm các ký tự M chính xác ). Ở đây tôi đang sử dụng không gian cho các hình vuông bên ngoài đa giác và '#' cho các hình vuông bên trong đa giác, nhưng bạn có thể sử dụng bất kỳ hai ký tự riêng biệt trực quan nào, miễn là ý nghĩa của chúng phù hợp với tất cả các đầu vào.
Bạn có thể bao gồm tối đa một dòng mới hàng đầu và tối đa một dòng mới.
Nếu bạn muốn, thay vào đó, bạn có thể xuất M hàng có N ký tự chính xác và bạn có thể chọn đầu ra M by N cho một số đầu vào và đầu ra N by M cho các đầu vào khác.
Ví dụ
Không hợp lệ do một lỗ:
###
# #
###
Không hợp lệ do giao nhau (chạm theo đường chéo - một đỉnh có 4 cạnh vuông trên chu vi) và, ngẫu nhiên, một lỗ:
##
# #
###
Không hợp lệ do bị ngắt kết nối:
#
# #
#
Đa giác hợp lệ của chu vi tối đa:
# #
# #
###
Tín dụng
Ban đầu tôi đã đánh giá thấp giá trị của chu vi tối đa có thể được tính toán nhanh như thế nào và sẽ chỉ yêu cầu giá trị đó làm đầu ra. Cảm ơn những người hữu ích tuyệt vời trong trò chuyện vì đã giải thích cách tính chu vi tối đa cho N và M tùy ý và giúp biến điều này thành một thách thức sẽ kéo dài hơn một câu trả lời ...
Cụ thể nhờ:
Sparr , Zgarb , frageum , jimmy23013 .