Fannkuch là một chương trình điểm chuẩn cổ điển. Cái tên này xuất phát từ tiếng Đức "Pfannkuchen" - bánh kếp - vì sự giống nhau của thuật toán với việc lật các chồng bánh kếp. Một dãy số Fannkuch được hình thành như sau:
Lấy một hoán vị của {1 ..... n}, ví dụ: {4.2,1,5,3}. Lấy phần tử đầu tiên, ở đây 4 và đảo ngược thứ tự của 4 phần tử đầu tiên: {5,1,2,4,3}. Lặp lại điều này cho đến khi phần tử đầu tiên là 1, vì vậy lật sẽ không thay đổi gì thêm: {3,4,2,1,5}, {2,4,3,1,5}, {4.2,3, 1,5}, {1,3,2,4,5}
Bạn phải viết một chương trình hoặc hàm tính toán một chuỗi giống Fannkuch cho các chuỗi ký tự chữ cái. Thay vì sử dụng các con số để chỉ ra có bao nhiêu yếu tố của danh sách nên được lật mỗi lần, nên sử dụng vị trí của một chữ cái trong bảng chữ cái. Ví dụ, một hàng đầu c
sẽ chỉ ra rằng bạn nên đảo ngược thứ tự của 3 phần tử đầu tiên, trong khi một phần đầu a
chỉ ra rằng chuỗi đã hoàn tất.
Đầu vào
Đầu vào sẽ được cung cấp dưới dạng chuỗi thông qua stdin hoặc dưới dạng đối số hàm. Chuỗi sẽ chứa từ 1 đến 26 chữ cái viết thường. Các chuỗi sẽ không chứa các chữ cái có chỉ số tương đương sẽ khiến thuật toán Fannkuch lật nhiều phần tử hơn so với tồn tại.
Đầu ra
Các chương trình hoặc hàm nên trả về hoặc in để xuất ra chuỗi các thuật ngữ được tạo bằng cách áp dụng thuật toán Fannkuch cho đến khi a
gặp phải một hàng đầu , bao gồm cả chuỗi ban đầu. Ví dụ: nếu đầu vào là bca
, bạn có thể in:
bca
cba
abc
Kết quả được in có thể sử dụng bất kỳ dấu phân cách hợp lý, dòng mới, v.v ... Mọi sự lựa chọn khoảng trắng đều được chấp nhận.
Một ví dụ khác, nếu đầu vào của bạn là eabdc
bạn có thể trả về:
("eabdc"
"cdbae"
"bdcae"
"dbcae"
"acbde")
Quy tắc và chấm điểm
Đây là code-golf - chương trình chiến thắng ngắn nhất. Lỗ hổng tiêu chuẩn không được phép.
proc fcmp
ở đây.