Você já quis perguntar ao compilador "Por quê?" Muitos de nós ficamos frustrados quando o código não está funcionando como deveria. Portanto, o Mathworks implementou uma pequena função agradável why, que responde à pergunta. Para dar alguns exemplos do 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.
Sua tarefa é implementar a whyfunção no seu idioma. A função deve funcionar com e sem um argumento de entrada (use alternativamente input 0ou -1). A função deve ser nomeada why(ou, escrever why(n)STDIN deve resultar na impressão da string apropriada).
Se nenhum argumento for fornecido, ou o argumento for zero ou negativo, a sequência de saída deve ser uma frase válida e aleatória. Então, deve haver uma função why, why(), why(0)ou why(-1)que os retornos uma frase aleatória.
Se nfor fornecido um argumento de entrada (argumento de função, não STDIN), a saída deve ser a n-ésima sequência (definida abaixo). Portanto, why(1)sempre deve imprimir (imprimir / exibir) o mesmo resultado.
As frases são construídas da seguinte forma (Tipo 1, Tipo 2 e Especial). Todas as frases terminam com !.
"Person" "ending" !
"Verb" "adjective" "Person" !
A list of special cases
A lista de pessoas:
Stewie
Peter
Homer
The programmer
The system manager
You
A lista de finais:
suggested it
insisted on it
did it
A lista de verbos é:
To fool
To satisfy
To please
A lista de adjetivos:
the smart
the bald
the tall
the rich
the stupid
A lista de casos especiais:
How should I know?
Stop asking!
Don't ask!
A maneira de selecionar uma numerada é:
Tipo de frases:
Odd number => Type 1
Even number => Type 2
n % 7 = 0 => Type 3 (% is the modulus operator)
Nomes: o enésimo nome é definido usando o módulo (%).
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!
Finais: O enésimo final também é definido usando o módulo. Suponha que os finais (1, 2 e 3) estejam listados como (1 2 2 3). Como os números são sempre ímpares, use((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
Adjetivos: O enésimo adjetivo é definido usando o módulo. Como os números são sempre pares, use:(n % 10)/2
n = 2: (2 % 10)/2 => Smart
n = 6: (6 % 10)/2 => The tall
...
Verbos: O enésimo verbo também é definido usando o módulo. Suponha que os verbos (1, 2 e 3) estejam listados como (1 2 2 3)Como os números são sempre pares para verbos, use(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
Agora, a maneira de criar uma aleatória deve ser bastante simples, basta selecionar uma aleatória n.
Alguns exemplos:
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!
Aplicam-se as regras de código padrão Um vencedor será selecionado uma semana a partir do dia em que o desafio foi lançado.
/2funcionar. Isso fornece valores fracionários. 13também deve ser insisted(14/2 = 7% 4 = 3 = 2º do insistido).
the rich The programmeros especificados the?
Thee Toem suas listas provavelmente deve estar em letras minúsculas para combinar com seus exemplos ...
whyou seriaWHYaceitável?