Thử thách này bao gồm hai phần. Người chiến thắng sẽ là giải pháp có tổng số byte thấp nhất. Cùng một ngôn ngữ phải được sử dụng cho cả hai thách thức.
Phần 1:
Viết hàm hoặc chương trình lấy một câu chỉ có các từ hợp lệ làm đầu vào và xuất ra danh sách các ký tự được sử dụng, số lần mỗi chữ cái được sử dụng và số lượng chữ cái trong mỗi từ trong câu gốc. Đầu ra từ chương trình này phải là đầu vào hợp lệ cho chương trình tiếp theo (chính xác như được xuất ra)
Tôi sẽ thêm các ví dụ và quy tắc chi tiết hơn nữa.
Phần 2:
Viết hàm hoặc chương trình lấy đầu ra từ chương trình đầu tiên làm đầu vào và sử dụng danh sách các từ tiếng Anh này và tạo lại một câu với thông tin từ đầu ra. Câu không nhất thiết phải giống với câu gốc.
Thêm thông tin. quy tắc và hạn chế:
Phần 1:
- Đầu vào đầu tiên có thể ở bất kỳ định dạng phù hợp nào, có hoặc không có dấu ngoặc kép, như đối số chức năng hoặc từ STDIN, có hoặc không có dấu ngoặc, v.v.
- Câu đầu vào sẽ không chứa bất kỳ dấu câu hoặc ký tự đặc biệt nào, ngoại trừ dấu chấm / dấu chấm ở cuối. Ngoại trừ ký hiệu dấu chấm, tất cả các ký tự trong đầu vào sẽ nằm trong danh sách từ.
- Chữ cái đầu tiên của câu sẽ là chữ hoa, phần còn lại sẽ là chữ thường.
- Đầu ra của phần 2 phải bắt đầu bằng chữ in hoa giống như câu gốc (vì vậy không nên chuyển đổi đầu vào thành chữ thường (nhưng OK).
- Đầu ra có thể ở bất kỳ định dạng phù hợp:
- Có thể sao chép-dán đầu ra trực tiếp vào chương trình / chức năng tiếp theo
- Không thể thay đổi khi dán sao chép, toàn bộ đầu ra phải được sao chép và dán toàn bộ, không phải trong các phần.
- Ví dụ, bạn có thể xuất một biểu đồ của tất cả các chữ cái trong bảng chữ cái hoặc chỉ những chữ cái được sử dụng (nói chung, bất cứ điều gì cần thiết để hoàn thành phần 2)
- Bạn không thể xuất danh sách các ký tự trong đó nhiều lần xuất hiện được lặp lại. Chẳng hạn,
The queue
không thể mang lại một đầu ra :Teeehquu (3,5)
, nó phải giống như :Tehqu, (1 3 1 1 2),(3 5)
.
Phần 2:
- Chương trình / chức năng phải chấp nhận đầu vào chính xác như từ phần 1 (một ngoại lệ, xem bình luận bên dưới về việc lấy tên tệp làm đầu vào.).
- Nếu dấu ngoặc xung quanh, dấu ngoặc kép hoặc tương tự là cần thiết để phân tích đầu vào thì chúng phải là một phần của đầu ra từ phần 1.
- Danh sách từ có thể được tìm thấy ở đây.
- Danh sách từ có thể được lưu cục bộ dưới dạng
w.txt
hoặc có thể được tìm nạp từ url. Url sẽ chỉ được tính là 5 byte, vì vậy bạn không cần một trình rút ngắn url. - Nếu chương trình không thể mở tệp mà không đọc tên làm đầu vào từ STDIN (tôi tin rằng ít nhất đây
làtrường hợp của Pyth), thì tên tệp có thể được lấy làm đối số đầu vào riêng biệt.
- Danh sách từ có thể được lưu cục bộ dưới dạng
- Đầu ra phải chỉ là một câu (danh sách các từ hợp lệ), kết thúc bằng một dấu chấm và một dòng mới tùy chọn.
- Đầu ra phải có các từ có cùng số lượng chữ cái với câu gốc trong phần 1 (theo đúng thứ tự)
- Tất cả các chữ cái đã được sử dụng trong câu gốc phải được sử dụng trong đầu ra mới.
- Câu phải bắt đầu bằng chữ in hoa giống như câu đầu vào ban đầu và kết thúc bằng một dấu chấm.
Cả hai phần:
- Cả hai phần sẽ không mất hơn 2 phút để thực hiện (chọn ngẫu nhiên các từ cho đến khi đạt được giải pháp không được chấp nhận).
Với các quy tắc được liệt kê ở trên, sẽ có cơ hội công bằng rằng cùng một câu chính xác được sao chép, tuy nhiên đó không phải là một yêu cầu.
Ví dụ:
Trong các ví dụ dưới đây, một vài định dạng đầu vào và đầu ra khác nhau được hiển thị. Nhiều hơn nữa được chấp nhận.
Phần 1:
Đầu vào:
Zulus win.
Đầu ra loại 1:
Z i l n s u w
1 1 1 1 1 2 1
5 3
Loại đầu ra 2:
(('Z',1),('i',1),('l',1),('n',1),('s',1),('u',2),('w',1)), (5,2)
Loại đầu ra 3:
'Zilnsuuw',[1,1,1,1,1,2,1],[5,2]
Phần 2:
Đầu vào: Một bản sao chính xác của đầu ra từ phần 1. Đầu ra:
Zulus win.
Lưu ý rằng các kết hợp từ khác được chấp nhận miễn là chúng bắt đầu bằng a Z
và từ đầu tiên có 5 chữ cái và từ thứ hai có 3 chữ cái.
Mã ngắn nhất trong byte thắng.
f1
đó được dán vào f2
phải chứa tất cả dữ liệu được chỉ định trong thử thách. Không có dữ liệu bổ sung có thể là một phần của đầu ra từ f1
. Không có dữ liệu nào có thể được "lưu trữ" trong f1
việc cung cấp thông tin khi gọi từ đó f2
. f1
chỉ có thể lấy một chuỗi làm đầu vào cho mỗi cuộc gọi.