Nhìn vào chuỗi sau đây. Chú ý một mẫu?
ABEFNOPEFGH DC GQI MHRJ SK SKJI DTL CUM BAZYXWV N EO Sở DP CQ BAZYXWVUTSR
Như một số người có thể nhận thấy, về cơ bản, nó là một vòng xoắn ốc của bảng chữ cái, trong đó khoảng cách giữa các hàng / cột đang dần tăng thêm 1 khoảng trắng / dòng mới.
Định nghĩa khắt khe
- Hãy có một bộ đếm c , ban đầu là 0.
- Chúng tôi viết ra các chữ cái c + 1 đầu tiên của bảng chữ cái từ trái sang phải :
A
. Sau đó, từ trên xuống dưới tiếp theo (c + 1) (c + 2) / 2 chữ cái (thêm
B
) :AB
.Từ trái sang phải, tiếp theo (c + 1) (c + 2) / 2 (thêm
C
):AB C
Và từ dưới lên trên, các chữ cái c + 1 tiếp theo (thêm
D
):AB DC
Đã đến cuối chu kỳ. Do đó, hãy tăng c (trở thành 1). Sau đó, nó bắt đầu trở lại từ bước đầu tiên, sự khác biệt duy nhất là thay vì sử dụng các chữ cái c + 1 đầu tiên của bảng chữ cái, chúng tôi sử dụng các chữ cái c + 1 tiếp theo , bắt đầu từ phần tử cuối cùng của chu kỳ này (
D
trong trường hợp này, vì vậy chúng tôi tiếp tục vớiEFG...
). KhiZ
đạt được, nó quay trở lại từA
.
Bài tập
Cho một số nguyên N (dương cho chỉ số 1 hoặc không âm cho lập chỉ mục 0), xuất ra N chu kỳ đầu tiên của vòng xoắn ốc.
Quy tắc
Bạn có thể sử dụng chữ thường hoặc bảng chữ cái in hoa, nhưng lựa chọn của bạn phải nhất quán (chỉ sử dụng một trong số chúng, không được phép trộn).
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.
Các định dạng đầu ra có thể chấp nhận: chuỗi nhiều dòng, một danh sách các chuỗi biểu thị các dòng, một danh sách chứa nhiều danh sách các ký tự, mỗi danh sách đại diện cho một dòng hoặc bất cứ thứ gì khác mà bạn thấy phù hợp. Trong trường hợp bạn không chọn định dạng đầu tiên, sẽ rất tuyệt nếu bao gồm một phiên bản in đẹp của mã của bạn.
Đây là mã golf , vì vậy mã ngắn nhất tính bằng byte (trong mỗi ngôn ngữ) đáp ứng các yêu cầu sẽ thắng!
Các trường hợp thử nghiệm
Số nguyên đầu vào sẽ được phân tách bằng đầu ra tương ứng của nó thông qua một dòng mới và các kiểm tra sẽ được phân tách bằng dấu gạch ngang. Lưu ý rằng đây là 1 chỉ mục.
1 AB DC -------- 2 ABEF DC G MH LKJI -------- 3 ABEFNOP DC GQ MHR LKJI S DT CU BAZYXWV ------- 4 ABEFNOPEFGH DC GQI MHRJ SK SKJI DTL CUM BAZYXWV N EO Sở DP CQ BAZYXWVUTSR ------- 5 ABEFNOPEFGHFGHIJ DC GQIK MHRJL SKJI DTLN CUMO NP BAZYXWV EOQ Sở DPR CQS BAZYXWVUTSR RU QV PW CON BÒ NMLKJIHGFEDCBAZY ------ 6 ABEFNOPEFGHFGHIJSTUVWX DC GQIKY MHRJLZ SKJI DTLNB CUMOC NPZ BAZYXWV EOQE DPRF CQSG BAZYXWVUTSR RUI QVJ PWK OXL NMLKJIHGFEDCBAZY M SN RO QP PQ HOẶC LÀ NMLKJIHGFEDCBAZYXWVUTS