FizzBuzz mit ternären bedingten Operator

8

Ich habe Ausdrücke mit Bedingungsstil in Ruby gelesen. Allerdings stieß ich auf eine, die ich nicht ganz verstehen konnte, um das klassische FizzBuzz-Problem zu definieren. Ich verstehe das FizzBuzz-Problem und schrieb sogar mein eigenes, bevor ich die folgende schnelle Lösung unter Verwendung des ternären Operators fand. Wenn mir jemand erklären kann, wie diese Kette funktioniert, um das FizzBuzz-Problem zu lösen, würde es sehr geschätzt werden:)

%Vor%     
Damian 22.10.2008, 09:42
quelle

5 Antworten

16

Einige Klammern helfen möglicherweise:

%Vor%

Also, wenn i durch 3 teilbar ist, dann prüft es, ob i auch durch 5 teilbar ist. Wenn ja, druckt es "FizzBuzz", sonst nur "Buzz". Wenn i nicht durch drei teilbar ist, wird die Teilbarkeit erneut durch 5 überprüft und "Fizz" wird gedruckt, wenn dies der Fall ist, andernfalls nur i.

    
Greg Hewgill 22.10.2008, 09:47
quelle
11

Hier ist eine Beschreibung des FizzBuzz-Problems, das in diesem Jeff-Atwood-Artikel aufgeführt ist.

>
  

Schreiben Sie ein Programm, das die   Zahlen von 1 bis 100. Aber für   Vielfache von drei Drucken "Fizz"   anstelle der Nummer und für die   Vielfache von fünf Drucken "Buzz". Zum   Zahlen, die Vielfache von beiden sind   drei und fünf drucken "FizzBuzz".

Ein ternärer Operator ist eine Kurzschrift für eine if-else-Anweisung. Das allgemeine Format ist:

%Vor%

Wenn ich also schreibe:

%Vor%

Entspricht dem folgenden Code:

%Vor%

Wo ist i % 2 == 0 , evaluate_if_cond_is_true ist 1 und evaluate_if_cond_is_false ist 0 .

Das Schöne an ternären Betreibern ist, dass sie kombiniert werden können. Dies bedeutet, dass die Anweisung, die ausgeführt wird, wenn eine der beiden Bedingungen wahr oder falsch ist, ein anderer ternärer Operator sein kann.

Lassen Sie die gesamte Bedingung lesbarer erscheinen:

%Vor%

Und diese Zuordnung zu if-else-Anweisungen ist einfach mit den oben erläuterten Regeln:

%Vor%

Dies ist kein gültiger Code, aber da das Ergebnis des ternären Operators im Ergebnisausdruck inline ist, wird es als Eingabe für den Befehl puts verwendet.

    
Jorge Ferreira 22.10.2008 09:58
quelle
7

Zum Spaß, hier ist ein anderer Weg:

%Vor%

Und noch eins:

%Vor%     
glenn mcdonald 22.10.2008 19:57
quelle
3

Das Ternär ist eine grundlegende Wenn-Dann-Struktur.

Das obige ist äquivalent zu ...

%Vor%

Oder mit einigen Parens ...

%Vor%     
Jarrett Meyer 22.10.2008 09:49
quelle
1

Der Fluss ist:

%Vor%     
Nathan Fellman 22.10.2008 09:47
quelle