Xem xét làm thế nào một từ có thể được sắp xếp trên một lưới Boggle lớn tùy ý nếu quy tắc về việc không sử dụng cùng một khối chữ cái nhiều lần được bỏ qua . Cũng giả sử rằng bạn có số lượng chữ cái không giới hạn (có tất cả các chữ cái hiện diện), và Qu
chỉ là Q
.
Từ này MISSISSIPPI
có thể được sắp xếp chỉ sử dụng 6 khối. Đây là một sự sắp xếp có thể:
S
MIS
PP
Bắt đầu từ M
chúng tôi liên tục thực hiện bất kỳ bước nào theo chiều ngang, chiều dọc hoặc đường chéo cho đến khi toàn bộ từ được đánh vần.
Đáng ngạc nhiên, một cụm từ dài hơn AMANAPLANACANALPANAMA
cũng chỉ cần 6 khối:
MAN
PLC
Tuy nhiên, số lượng hình khối tối thiểu cần thiết cho các chuỗi dài hơn, phức tạp hơn không phải lúc nào cũng rõ ràng.
Thử thách
Viết một chương trình lấy một chuỗi và sắp xếp nó theo kiểu giống như Boggle này sao cho số lượng hình khối tối thiểu được sử dụng . (Kích thước của lưới kết quả và số lượng ô trống là không liên quan.)
Giả sử bạn có số lượng hình khối không giới hạn cho mỗi ký tự ASCII có thể in ngoại trừ khoảng trắng (mã hex 21 đến 7E), vì nó được sử dụng như một ô lưới trống. Chỉ các chuỗi ASCII có thể in (không có dấu cách) mới được nhập.
Đầu vào nên được lấy từ stdin hoặc dòng lệnh. Đầu ra nên đi đến thiết bị xuất chuẩn (hoặc thay thế gần nhất).
Các dòng mới và dấu cách hàng đầu hoặc dấu cách trong đầu ra đều ổn (nhưng hy vọng không có số lượng không phù hợp).
Không gian tìm kiếm sẽ tăng theo cấp số nhân khi chuỗi dài hơn, nhưng bạn không bắt buộc phải cố gắng làm cho thuật toán của mình hiệu quả (mặc dù điều đó sẽ rất tốt :)). Đây là môn đánh gôn, vì vậy giải pháp ngắn nhất tính bằng byte sẽ thắng.
Thí dụ
Nếu đầu vào là Oklahoma!
(tối thiểu 8 ký tự), thì tất cả sẽ là đầu ra hợp lệ vì tất cả đều có đúng 8 ô lưới được điền và chúng tuân theo mẫu đọc Boggle (đã sửa đổi):
Oklaho
!m
hoặc là
!
Oamo
klh
hoặc là
lkO
!amo
h
Vân vân.