[RAILS] Q. Aufzug (Ruby Edition)

Problem bei der Berechnung des Aufzugsbodens (Ruby Edition)

Problem

Schließen Sie ein Programm ab, das berechnet, wie viele Stockwerke der Aufzug zurückgelegt hat. Der Aufzug muss sich jedoch zunächst im ersten Stock befinden.

Beispiel

Vom 1. Stock in den 3. Stock → 2. Stock wurde verlegt, also insgesamt 2. Stock Vom 3. Stock in den 1. Stock → 2. Stock wurde verlegt, also insgesamt 4 Stockwerke Vom 1. Stock in den 4. Stock → 3 Stockwerke wurden verlegt, also insgesamt 7 Stockwerke

Wert eingegeben werden

Die Eingabe erfolgt im folgenden Format:

N f_1 ... f_N -Die erste Zeile erhält die Ganzzahl N, die die Anzahl der Zeilen im Protokoll angibt. ・ In den folgenden N Zeilen wird die Etage f_i (1 ≤ i ≤ N), in der der Aufzug angehalten hat, in der Reihenfolge als Ganzzahl eingegeben. • Die Gesamteingabe beträgt N + 1 Zeilen mit einem Zeilenumbruch am Ende der letzten Zeile.

Erwartete Ausgabe

Bitte geben Sie die Anzahl der Stockwerke, die der Aufzug bewegt hat, als Ganzzahl aus.

Eingabebeispiel 1

3 3 1 4

Ausgabebeispiel 1

7

Meine Antwort (ich habe auf die Seite der Freiwilligen verwiesen)

python


n = gets.to_i
i = 1
s = 0
n.times {
    a = gets.to_i
    s += (a - i).abs
    i = a
}
puts s

Es gibt keinen Fehler im Ausgabeergebnis, aber ich habe den Inhalt von {} nicht verstanden und es als Artikel geschrieben. Es wird für jeden Eingabewert in n.times wiederholt, aber ich habe nicht verstanden, warum s + = (a --i) .abs </ font> in der 6. Zeile so ist. .. Wenn Sie alle beliebigen Zahlen anwenden, wird "0 + = (3-1) .abs". Es macht keinen Sinn. Außerdem ist das i = a </ font> in der 7. Zeile beim Anwenden wie 1 = 3. Warum passiert das? Ich habe viel über den Prozess der Wiederholung von gets.to_i recherchiert, wenn ich nicht weiß, wie viele beliebige Eingabewerte es diesmal gibt, aber die Anzahl der anwendbaren Sites ist recht gering und es war ein schwieriger Code für mich als Anfänger. Ich verstehe jede Methode, aber ich stellte fest, dass ich den Code dieses Mal nicht mit meinem eigenen Wissen wie Zeile 6.7 schreiben konnte, wahrscheinlich weil ich kein Programmierhirn hatte. Aber ich weiß es nicht, also macht es dort Spaß.

das ist alles!

Recommended Posts