[RAILS] Q. Elevator (édition Ruby)

Problème de calcul de plancher d'ascenseur (édition Ruby)

problème

Complétez un programme qui calcule le nombre d'étages parcourus par l'ascenseur. Cependant, l'ascenseur doit d'abord être au premier étage.

Exemple

Du 1er étage au 3ème étage → Le 2ème étage a été déplacé, donc un total de 2ème étage Du 3ème étage au 1er étage → 2ème étage a été déplacé, donc un total de 4ème étage Du 1er étage au 4ème étage → 3 étages ont été déplacés, soit un total de 7 étages

Valeur à saisir

L'entrée est donnée dans le format suivant:

N f_1 ... f_N -La première ligne reçoit l'entier N qui indique le nombre de lignes dans le journal. ・ Sur les N lignes suivantes, l'étage f_i (1 ≤ i ≤ N) où l'ascenseur s'est arrêté est inscrit dans l'ordre sous forme d'entier. • L'entrée totale est de N + 1 lignes, avec un saut de ligne à la fin de la dernière ligne.

Production attendue

Veuillez indiquer le nombre d'étages déplacés par l'ascenseur sous forme de nombre entier.

Exemple d'entrée 1

3 3 1 4

Exemple de sortie 1

7

Ma réponse (j'ai fait référence au site des bénévoles)

python


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

Il n'y a pas d'erreur dans le résultat de sortie avec ceci, mais je n'ai pas compris le contenu de {} donc je l'ai écrit comme un article. Il est répété pour n'importe quelle valeur d'entrée en n. fois, mais je n'ai pas compris pourquoi s + = (a --i) .abs </ font> sur la 6ème ligne est comme ça. .. Si vous appliquez tous les nombres arbitraires, cela devient "0 + = (3-1) .abs". Cela n'a aucun sens. De plus, le i = a </ font> sur la 7ème ligne est comme 1 = 3 lorsqu'il est appliqué. Pourquoi cela se produit-il? J'ai fait beaucoup de recherches sur le processus de répétition de gets.to_i quand je ne sais pas combien de valeurs d'entrée arbitraires il y a comme cette fois, mais le nombre de sites applicables est assez petit, et c'était un code difficile pour moi en tant que débutant. Je comprends chaque méthode, mais j'ai trouvé que je ne pouvais pas écrire le code comme la ligne 6.7 cette fois avec mes propres connaissances, probablement parce que je n'avais pas de cerveau de programmation. Mais je ne sais pas, donc il y a du plaisir là-bas.

c'est tout!

Recommended Posts