Exercice Corrigé Langage Ruby – Partie 4

Avec des exercices corrigés en langage Ruby, vous pratiquerez divers concepts du langage Ruby. Vous commencerez par des exercices du langage Ruby de base à des exercices plus avancés. La solution est fournie pour chaque exercice. Vous devez essayer de résoudre chaque problème par vous-même avant de vérifier la solution. Si vous avez des questions concernant chaque problème, nous vous encourageons à les poster sur notre forum.
 
 
Utiliser l’éditeur Ruby pour résoudre les exercices : (Cliquez sur l’onglet input si vous souhaitez entrer des valeurs, cliquez sur Run pour exécuter votre programme, le résultat sera affichée sur l’onglet output).
 

Exercice 1:

Créez une fonction qui prend un tableau d’éléments et retourne le premier et dernier élément comme un nouveau tableau.
 
Exemple:

getFirstLast([1, 2, 3, 4, 5, 6]) ➞ [1, 6]

getFirstLast(["A", "B", "C", "D", "E"]) ➞ ["A", "E"]

getFirstLast(["Ruby", "Java", "PHP", "C++"]) ➞ ["Ruby", "C++"]
Solution:

# Déclare une méthode appelée "getFirstLast"
# qui reçoit un tableau "tab" en paramètre.
# La méthode retourne le premier et le dernier élément du tableau.
def getFirstLast(tab)

  # Récupère le premier élément avec "first"
  # et le dernier élément avec "last".
  # Les deux valeurs sont retournées sous forme de tableau.
  [tab.first, tab.last]
end
 

Exercice 2:

Créez une fonction qui compte le nombre de syllabes d’un mot. Chaque syllabe est séparée par un tiret -.

Exemple:

nbrOfSlab("prin-temps") ➞ 2

nbrOfSlab("ar-rê-te") ➞ 3

nbrOfSlab("ther-mo-mè-tre") ➞ 4
Solution:

# Déclare une méthode appelée "nbrOfSlab"
# qui reçoit une chaîne de caractères "syllable" en paramètre.
# La méthode retourne le nombre de syllabes.
def nbrOfSlab(syllable)

  # Compte le nombre de tirets "-" présents dans la chaîne.
  # Puis ajoute 1 pour obtenir le nombre de parties/syllabes.
  syllable.count('-') + 1
end
 

Exercice 3:

Créez une fonction qui prend un entier et renvoie la factorielle de cet entier. C’est-à-dire, l’entier multiplié par tous les entiers inférieurs positifs.

Exemple:

factoriel(2) ➞ 2
// 2 * 1 = 2

factoriel(3) ➞ 6
// 3 * 2 * 1 = 6

factoriel(4) ➞ 24
// 4 * 3 * 2 * 1 = 24
Solution:

# Déclare une méthode appelée "factoriel"
# qui reçoit un entier "int" en paramètre.
# La méthode retourne la factorielle de ce nombre.
def factoriel(int)

  # Crée une plage de nombres allant de 1 jusqu'à "int".
  # "inject(:*)" multiplie tous les nombres de la plage entre eux.
  # Exemple : 1 × 2 × 3 × 4 × 5 = 120.
  (1..int).inject(:*)
end
 
 

Exercice 4:

Créez une fonction qui prend une chaîne et renvoie le nombre de voyelles qu’elle contient.
 
Exemple:

countVoyel("WayToLearnX") ➞ 4

countVoyel("Paris") ➞ 2

countVoyel("Jack") ➞ 1
Solution:

# Déclare une méthode appelée "countVoyel"
# qui reçoit une chaîne de caractères "str" en paramètre.
# La méthode retourne le nombre de voyelles présentes dans la chaîne.
def countVoyel(str)

  # Compte le nombre de caractères appartenant à l'ensemble
  # "aeiou" dans la chaîne "str".
  # Les voyelles recherchées sont : a, e, i, o et u.
  str.count("aeiou")
end
 

Exercice 5:

Créez une fonction qui ne renvoie que des chaînes avec des caractères uniques.
 
Exemple:

uniqueChar(["xxy", "xyy", "xyz", "yzz", "yyz"]) ➞ ["xyz"]

uniqueChar(["111", "222", "333", "123"]) ➞ ["123"]

uniqueChar(["abb", "bba", "aaa", "bbb"]) ➞ []
Solution:

# Déclare une méthode appelée "uniqueChar"
# qui reçoit un tableau de chaînes de caractères "tab".
# La méthode retourne uniquement les mots
# dont tous les caractères sont uniques.
def uniqueChar(tab)

  # Parcourt chaque élément du tableau avec "select".
  # "i" représente le mot actuellement analysé.
  tab.select do |i|
    
    # "chars" transforme le mot en tableau de caractères.
    # "uniq" supprime les caractères en double.
    #
    # Compare le tableau de caractères uniques
    # avec le tableau original.
    # S'ils sont identiques, aucun caractère n'est répété.
    i.chars.uniq == i.chars
  end
end
 

Exercice 6:

Vous avez un tableau de nombre, transformez ce tableau en miroir.

Exemple:

miroir([1, 2, 3]) ➞ [1, 2, 3, 2, 1]

miroir([9, 8, 7]) ➞ [9, 8, 7, 8, 9]

miroir([10, 20]) ➞ [ 10, 20, 10 ]
Solution:

# Déclare une méthode appelée "miroir"
# qui reçoit un tableau "tab" en paramètre.
# La méthode retourne un tableau formant un effet miroir
# en ajoutant les éléments inversés sans répéter le dernier élément.
def miroir(tab)

  # Concatène le tableau original avec
  # les éléments du tableau, du premier jusqu'à l'avant-dernier,
  # placés dans l'ordre inverse.
  #
  # "tab[0..-2]" sélectionne tous les éléments
  # sauf le dernier.
  # "reverse" inverse leur ordre.
  # "+" concatène les deux tableaux.
  tab + tab[0..-2].reverse
end
 
 

Exercice 7:

Créez une fonction qui prend deux chaînes comme arguments et renvoie le nombre de fois où la première chaîne (le caractère unique) est trouvée dans la deuxième chaîne.
 
Exemple:

countChar("l", "Hello") ➞ 2

countChar("e", "Welcome to WayToLearnX") ➞ 3

countChar("X", "WayToLearnX") ➞ 1
Solution:

# Déclare une méthode appelée "countChar"
# qui reçoit deux chaînes de caractères "str1" et "str2".
# La méthode retourne le nombre d'occurrences du caractère
# ou des caractères de "str1" dans "str2".
def countChar(str1, str2)

  # Compte le nombre de caractères de "str2"
  # qui correspondent aux caractères présents dans "str1".
  str2.count(str1)
end
 

Exercice 8:

Écrivez une fonction qui renvoie TRUE si un nombre est un palindrome.

Exemple:

checkPalindrome(212) ➞ true

checkPalindrome(123) ➞ false

checkPalindrome(75257) ➞ true
Solution:

# Déclare une méthode appelée "checkPalindrome"
# qui reçoit un nombre "nbr" en paramètre.
# La méthode vérifie si le nombre est un palindrome.
def checkPalindrome(nbr)

  # Convertit le nombre en chaîne de caractères avec "to_s".
  # "reverse" inverse l'ordre des caractères.
  # Compare ensuite le nombre original avec sa version inversée.
  #
  # Si les deux chaînes sont identiques, le nombre est un palindrome
  # et la méthode retourne true. Sinon, elle retourne false.
  nbr.to_s == nbr.to_s.reverse
end
 

Exercice 9:

Créez une fonction qui prend un nombre (de 1 à 12) et renvoie son nom de mois correspondant sous forme de chaîne. Par exemple, si on vous donne 4 en entrée, votre fonction devrait retourner Avril, car Avril est le 4ème mois.

Nombre
Nom du mois
1 Janvier
2 Février
3 Mars
4 Avril
5 Mai
6 Juin
7 Juillet
8 Août
9 Septembre
10 Octobre
11 Novembre
12 Décembre

Exemple:

nomDuMois(3) ➞ "Mars"

nomDuMois(12) ➞ "Décembre"

nomDuMois(6) ➞ "Juin"
Solution:

# Déclare une méthode appelée "nomDuMois"
# qui reçoit un nombre "n" représentant le numéro du mois.
# La méthode retourne le nom du mois correspondant.
def nomDuMois(n)

  # Crée un Hash qui associe chaque numéro de mois
  # à son nom en français.
  mois = {
    1 => 'Janvier',
    2 => 'Février',
    3 => 'Mars',
    4 => 'Avril',
    5 => 'Mai',
    6 => 'Juin',
    7 => 'Juillet',
    8 => 'Août',
    9 => 'Septembre',
    10 => 'Octobre',
    11 => 'Novembre',
    12 => 'Décembre'
  }

  # Récupère dans le Hash le nom correspondant au numéro "n".
  # Si "n" n'existe pas entre 1 et 12, Ruby retourne nil.
  mois[n]
end

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *