Вы когда-нибудь хотели спросить компилятор "Почему?" Большинство из нас были разочарованы, когда код не работает должным образом. Поэтому 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
функцию на вашем языке. Функция должна работать как с входным аргументом, так и без него (в качестве альтернативы используйте ввод 0
или -1
). Функция должна быть названа why
(или запись why(n)
в STDIN должна привести к печати соответствующей строки).
Если аргумент не указан или аргумент нулевой или отрицательный, выходная строка должна быть случайной, допустимой фразой. Таким образом, должна быть функция why
, why()
, why(0)
или why(-1)
что возвращает случайное предложение.
Если n
задан входной аргумент (аргумент функции, а не STDIN), вывод должен быть n-й строкой (определенной ниже). Поэтому 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
приемлемым?