Bạn đã bao giờ muốn hỏi trình biên dịch "Tại sao?" Hầu hết chúng ta đã thất vọng khi mã không hoạt động như bình thường. Mathworks do đó đã thực hiện một chức năng nhỏ why, trả lời câu hỏi. Để đưa ra một vài ví dụ từ MATLAB:
why
The programmer suggested it.
why
To fool the tall good and smart system manager.
why(2)
You insisted on it.
why(46)
Bill insisted on it.
Nhiệm vụ của bạn là thực hiện whychức năng trong ngôn ngữ của bạn. Hàm nên hoạt động có và không có đối số đầu vào (sử dụng thay thế đầu vào 0hoặc -1). Hàm phải được đặt tên why(hoặc, viết bằng why(n)STDIN sẽ dẫn đến chuỗi thích hợp được in).
Nếu không có đối số nào được đưa ra hoặc đối số bằng 0 hoặc âm, chuỗi đầu ra phải là cụm từ ngẫu nhiên, hợp lệ. Vì vậy, cần có một chức năng why, why(), why(0)hoặc why(-1)rằng lợi nhuận một câu ngẫu nhiên.
Nếu một đối số đầu vào, nđược đưa ra (đối số hàm, không phải STDIN), đầu ra phải là chuỗi thứ n (được xác định bên dưới). Vì vậy, why(1)phải luôn luôn xuất (in / hiển thị) cùng một kết quả.
Các câu được xây dựng như sau (Loại 1, Loại 2 và Đặc biệt). Tất cả các câu kết thúc bằng !.
"Person" "ending" !
"Verb" "adjective" "Person" !
A list of special cases
Danh sách những người:
Stewie
Peter
Homer
The programmer
The system manager
You
Danh sách kết thúc:
suggested it
insisted on it
did it
Danh sách các động từ là:
To fool
To satisfy
To please
Danh sách các tính từ:
the smart
the bald
the tall
the rich
the stupid
Danh sách các trường hợp đặc biệt:
How should I know?
Stop asking!
Don't ask!
Cách để chọn một số được đánh số là:
Loại câu:
Odd number => Type 1
Even number => Type 2
n % 7 = 0 => Type 3 (% is the modulus operator)
Tên: Tên thứ n được xác định bằng mô-đun (%).
n = 1: 1 % 7 => Stewie
n = 2: 2 % 7 => Peter
...
n = 6: 6 % 7 => You
n = 7: 7 % 7 => How should I know?
n = 11: 11 % 7 => The programmer
n = 14: 14 % 7 => Stop asking!
n = 21: 21 % 7 => Don't ask!
Kết thúc: Kết thúc thứ n cũng được xác định bằng cách sử dụng mô đun. Giả sử các kết thúc (1, 2 và 3) được liệt kê như thế nào (1 2 2 3). Vì các số luôn là số lẻ, hãy sử dụng((n+1)/2 % 4)
n = 1: ((1+1)/2 % 4) => suggested it
n = 3: ((3+1)/2 % 4) => insisted on it
n = 13: ((13+1)/2 % 4) => did it
Tính từ: Tính từ thứ n được xác định bằng cách sử dụng mô đun. Vì các số luôn luôn chẵn, sử dụng:(n % 10)/2
n = 2: (2 % 10)/2 => Smart
n = 6: (6 % 10)/2 => The tall
...
Động từ: Động từ thứ n cũng được xác định bằng cách sử dụng mô đun. Giả sử các động từ (1, 2 và 3) được liệt kê như (1 2 2 3)As Các số luôn luôn chẵn cho các động từ, sử dụng(n % 8) / 2
n = 2: (2 % 8)/2 => To fool
n = 4: (4 % 8)/2 => To satisfy
n = 6: (6 % 8)/2 => To satisfy
n = 8: (8 % 8)/2 => To please
Bây giờ, cách tạo ngẫu nhiên khá đơn giản, chỉ cần chọn ngẫu nhiên n.
Vài ví dụ:
why
You suggested it!
why
To fool the tall Homer!
why
Don't ask!
why(1)
Stewie suggested it!
why(14)
Stop asking!
why(8)
To please the rich Stewie!
Quy tắc golf tiêu chuẩn áp dụng. Một người chiến thắng sẽ được chọn một tuần kể từ ngày thử thách được đăng.
/2phải làm việc. Điều đó mang lại giá trị phân số. 13cũng nên insisted(14/2 = 7% 4 = 3 = thứ 2 nhấn mạnh).
the rich The programmerdo quy định the?
Thevà Totrong danh sách của bạn có lẽ nên viết thường để phù hợp với ví dụ của bạn ...
whyhoặc sẽWHYđược chấp nhận?