Wollten Sie schon immer den Compiler fragen "Warum?" Die meisten von uns waren frustriert, als der Code nicht so funktionierte, wie er sollte. Mathworks hat daher eine nette kleine Funktion implementiert why, die die Frage beantwortet. Um einige Beispiele aus MATLAB zu nennen:
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.
Ihre Aufgabe ist es, die whyFunktion in Ihrer Sprache zu implementieren . Die Funktion sollte mit und ohne Eingabeargument funktionieren (alternativ kann auch input 0oder verwendet werden -1). Die Funktion muss benannt werden why(oder why(n)wenn Sie in STDIN schreiben, wird die entsprechende Zeichenfolge gedruckt).
Wenn kein Argument angegeben wird oder das Argument null oder negativ ist, sollte die Ausgabezeichenfolge eine zufällige, gültige Phrase sein. So soll es eine Funktion sein why, why(), why(0)oder why(-1)dass die Rendite eines zufälliger Satz.
Wenn ein Eingabeargument nangegeben wird (Funktionsargument, nicht STDIN), sollte die Ausgabe die n-te Zeichenfolge sein (unten definiert). Soll also why(1)immer das gleiche Ergebnis ausgeben (drucken / anzeigen).
Die Sätze setzen sich wie folgt zusammen (Typ 1, Typ 2 und Spezial). Alle Sätze enden mit !.
"Person" "ending" !
"Verb" "adjective" "Person" !
A list of special cases
Die Liste der Personen:
Stewie
Peter
Homer
The programmer
The system manager
You
Die Liste der Endungen:
suggested it
insisted on it
did it
Die Liste der Verben ist:
To fool
To satisfy
To please
Die Liste der Adjektive:
the smart
the bald
the tall
the rich
the stupid
Die Liste der Sonderfälle:
How should I know?
Stop asking!
Don't ask!
Die Art, eine Nummer auszuwählen, ist:
Art der Sätze:
Odd number => Type 1
Even number => Type 2
n % 7 = 0 => Type 3 (% is the modulus operator)
Namen: Der n-te Name wird mit dem Modul (%) definiert.
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!
Endungen: Die n-te Endung wird ebenfalls mit dem Modul definiert. Angenommen, die Endungen (1, 2 und 3) sind wie folgt aufgeführt (1 2 2 3). Verwenden Sie, da die Zahlen immer ungerade sind((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
Adjektive: Das n-te Adjektiv wird über den Modul definiert. Da die Zahlen immer gerade sind, verwenden Sie:(n % 10)/2
n = 2: (2 % 10)/2 => Smart
n = 6: (6 % 10)/2 => The tall
...
Verben: Das n-te Verb wird ebenfalls mit dem Modul definiert. Angenommen, die Verben (1, 2 und 3) sind wie (1 2 2 3)folgt aufgeführt: Verwenden Sie, da die Zahlen für Verben immer gerade sind(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
Nun sollte der Weg zum Erstellen eines Zufalls ziemlich einfach sein. Wählen Sie einfach einen Zufallsgenerator aus n.
Einige Beispiele:
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!
Es gelten die Standard-Code-Golfregeln. Ein Gewinner wird eine Woche nach dem Tag ausgewählt, an dem die Herausforderung veröffentlicht wurde.
/2funktionieren müssen. Das ergibt gebrochene Werte. 13sollte auch sein insisted(14/2 = 7% 4 = 3 = 2nd of beharrt).
the rich The programmeraufgrund der angegebenen enden the?
Theund Toin Ihren Listen sollten wahrscheinlich Kleinbuchstaben sein, um Ihren Beispielen zu entsprechen ...
whyoder wäreWHYes akzeptabel?