2014-05-12 4 views
0

Ceci est mon premier post à empiler un débordement donc je m'excuse si c'est une mauvaise question et si j'ai posté incorrectement le code ci-dessous. Je suis assez nouveau pour la programmation informatique et j'essayais d'appliquer l'utilisation de la méthode .each à partir de Ruby pour écrire des paroles de chansons. Il y a cette chanson ridicule/géniale/idiote de Little John appelée "Turn down for what?" La chanson répète fondamentalement les mêmes deux lignes encore et encore."Baissez-vous pour quoi?!" ce code peut-il être écrit plus efficacement en utilisant plus de méthodes ou de variables?

Je voulais voir si je pouvais appliquer correctement les connaissances de la méthode .each de Ruby pour réécrire les paroles de la chanson sous forme de code.

La sortie sort exactement comme je veux l'apparaître. Cependant j'ai senti que je tapais essentiellement les mêmes lignes encore et encore. Y a-t-il un moyen plus efficace de le faire?

Merci pour votre aide et s'il vous plaît faites le moi savoir si cette question doit être posée différemment.

def turn_down_for_what 

    puts "" 
    fire_up = "Fire up, your loud, another round of shots!" 

    chorus = "Turn down for what!!!" 

    puts "" 

    puts fire_up 

    puts "" 

    4.times do 
     puts chorus 
    end 

    puts "" 

    puts fire_up 

    puts "" 

    4.times do 
     puts chorus 
    end 

    puts "" 

    3.times do 
     puts fire_up 
    end 

    10.times do 
     puts "Shots! " 
    end 
    puts "" 
    4.times do 
     puts chorus 
    end 
end 

turn_down_for_what 
+0

Désolé, je ne voulais pas dire la méthode .each. Je voulais dire la méthode .times. – julianGallegos

+10

il devrait aller http://codereview.stackexchange.com/ –

+0

ok merci de me faire savoir coderreview. – julianGallegos

Répondre

1

Le processus est juste une séquence de faire puts pour une phrase donnée un certain nombre de fois que vous pouvez stocker la séquence (et répétitions) dans un tableau et itérer puis à travers le réseau ...

def turn_down_for_what 

    fire_up = "Fire up, your loud, another round of shots!" 

    chorus = "Turn down for what!!!" 

    song = [[''], [fire_up], [''], [chorus, 4], 
      [''], [fire_up], [''], [chorus, 4], 
      [''], [fire_up, 3], ["Shots!", 10], 
      [''], [chorus, 4]] 

    song.each {|line| (line[1]||1).times {puts line[0]}} 

end 

turn_down_for_what 

C'est un tableau de tableaux, le premier élément de chaque sous-tableau est la ligne à mettre, le deuxième élément est le nombre de fois. Notez que si le nombre de fois n'est pas spécifié, nous supposons que 1 (line[1] || 1 signifie le deuxième élément ou l'entier 1 si le second élément est nul.

Questions connexes