Ви коли-небудь хотіли запитати у компілятора "Чому?" Більшість з нас були розчаровані, коли код не працює як слід. Таким чином, Mathworks реалізував приємну маленьку функцію why, яка відповідає на питання. Щоб навести кілька прикладів з 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.
Ваше завдання - реалізувати whyфункцію вашою мовою. Функція повинна працювати з вхідним аргументом і без нього (альтернативно використовувати input 0або -1). Функція повинна бути названа why(або, написання why(n)на STDIN, має призвести до друку відповідного рядка).
Якщо аргумент не наводиться, або аргумент дорівнює нулю або негативному, вихідний рядок повинен бути випадковою, допустимою фразою. Таким чином, повинна бути функція why, why(), why(0)або why(-1)що повертає випадкове пропозицію.
Якщо nзадано аргумент введення (аргумент функції, а не STDIN), вихід повинен бути п’ятою рядком (визначено нижче). Отже, why(1)завжди слід виводити (друкувати / відображати) однаковий результат.
Речення будуються так (Тип 1, Тип 2 та Особливі). Усі речення закінчуються на !.
"Person" "ending" !
"Verb" "adjective" "Person" !
A list of special cases
Список осіб:
Stewie
Peter
Homer
The programmer
The system manager
You
Список закінчень:
suggested it
insisted on it
did it
Список дієслів:
To fool
To satisfy
To please
Список прикметників:
the smart
the bald
the tall
the rich
the stupid
Перелік особливих випадків:
How should I know?
Stop asking!
Don't ask!
Спосіб вибору нумерованого:
Тип речень:
Odd number => Type 1
Even number => Type 2
n % 7 = 0 => Type 3 (% is the modulus operator)
Імена: n-е ім'я визначається за допомогою модуля (%).
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!
Закінчення: n-е закінчення також визначається за допомогою модуля. Припустимо, закінчення (1, 2 і 3) перераховані як (1 2 2 3). Оскільки цифри завжди непарні, використовуйте((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
Прикметники: n-й прикметник визначається за допомогою модуля. Оскільки цифри завжди парні, використовуйте:(n % 10)/2
n = 2: (2 % 10)/2 => Smart
n = 6: (6 % 10)/2 => The tall
...
Дієслова: n-е дієслово також визначається за допомогою модуля. Припустимо, що дієслова (1, 2 і 3) перераховані так, (1 2 2 3)як цифри завжди рівні для дієслів, використовуйте(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
Тепер спосіб створення випадкового має бути досить простим, просто виберіть випадковий n.
Деякі приклади:
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!
Діють стандартні правила гольф-коду. Переможець буде обраний через тиждень з дня опублікування виклику.
/2працювати. Це дає дробові значення. 13також має бути insisted(14/2 = 7% 4 = 3 = 2-е наполягання).
the rich The programmerіз-за вказаних the?
Theта Toу ваших списках, мабуть, повинні бути малими літерами, щоб відповідати вашим прикладам ...
whyабо цеWHYбуде прийнятним?