Quel est le nombre de valeurs contenant un chiffre dans mon taleaux ?
Fermé
LucasGrandviergne
Messages postés
13
Date d'inscription
vendredi 13 septembre 2019
Statut
Membre
Dernière intervention
14 octobre 2019
-
Modifié le 4 oct. 2019 à 23:10
khrug - 5 oct. 2019 à 13:32
khrug - 5 oct. 2019 à 13:32
A voir également:
- Quel est le nombre de valeurs contenant un chiffre dans mon taleaux ?
- Excel trier par ordre croissant chiffre - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Nombre de combinaison possible avec 8 chiffres - Forum Programmation
- Paramètrez la messagerie électronique ci-dessous pour ranger automatiquement dans le dossier famille les courriers envoyés par tonton@pixmail.org contenant le mot cousin. - Forum Mail
- Nombre de combinaison possible avec 10 chiffres ✓ - Forum Programmation
1 réponse
Bonjour.
Dans ton code, tu compares un String et un entier, il faut donc utiliser '9' et non 9.
De plus, tu compares une chaîne composée de plusieurs caractères avec un seul caractère, donc ça ne pourra jamais retourner quelque chose de correct.
Sinon, pour faire de simples tests, inutiles de travailler sur un array si grand, deux simples valeurs suffisent.
La méthode la plus basique serait de faire.
On peut faire autrement en utilisant un array des chiffres, et utiliser la méthode include? d'Array.
On peut faire bien plus simple avec une expression régulière basique.
Une autre méthode qui je pense doit être bien plus lente est de soustraire l'array des chiffres à celui de la chaîne transformée en Array, et de comparer si le résultat est toujours identique à celui de l'array de la chaîne.
Il te reste désormais à implémenter ton compteur, cela ne devrait pas te poser beaucoup de problèmes.
Dans ton code, tu compares un String et un entier, il faut donc utiliser '9' et non 9.
De plus, tu compares une chaîne composée de plusieurs caractères avec un seul caractère, donc ça ne pourra jamais retourner quelque chose de correct.
Sinon, pour faire de simples tests, inutiles de travailler sur un array si grand, deux simples valeurs suffisent.
array = ['toto', 'toto45',]
La méthode la plus basique serait de faire.
# Pour chaque élément de l'array array.each{|el| digit = false # Pour chaque caractère de l'élément el.each_char{|char| if char >= '0' and char <= '9' # il y a un chiffre digit = true # On cesse le parcours puisqu'on sait que l'élément contient un chiffre break end } puts "#{el}, #{digit}" }
On peut faire autrement en utilisant un array des chiffres, et utiliser la méthode include? d'Array.
# La syntaxe ('0'..'9') est un Range nums = ('0'..'9').to_a array.each{|el| digit = false el.each_char{|char| if nums.include? char digit = true break end } puts "#{el}, #{digit}" }
On peut faire bien plus simple avec une expression régulière basique.
array.each{|el| digit = el.match('[0-9]') != nil puts "#{el}, #{digit}" }
Une autre méthode qui je pense doit être bien plus lente est de soustraire l'array des chiffres à celui de la chaîne transformée en Array, et de comparer si le résultat est toujours identique à celui de l'array de la chaîne.
nums = ('0'..'9').to_a array.each{|el| # Conversion du String en Array de ses caractères chars = el.chars digit = chars - nums != chars puts "#{el}, #{digit}" }
Il te reste désormais à implémenter ton compteur, cela ne devrait pas te poser beaucoup de problèmes.