Chaque semaine, Mohammad S. Anwar envoie The Weekly Challenge, une chance pour nous tous de trouver des solutions à deux tâches hebdomadaires. Mes solutions sont d'abord écrites en Python, puis converties en Perl. C'est une excellente façon pour nous tous de pratiquer le codage.
Défi, Mes solutions
Vous recevez un tableau d'entiers, @ints, où chaque élément apparaît plus d'une fois sauf un.
Écrivez un script pour trouver l'élément qui apparaît exactement une fois.
Les deux défis de cette semaine impliquent la fréquence des nombres entiers. Python a la fonction Counter (du module collections) qui convertit automatiquement une liste d'éléments en dict de fréquences. Pour la solution Perl, je le fais à la main.
Une fois le dict de fréquence renseigné, je trouve ensuite tous les entiers qui n'apparaissent qu'une seule fois en utilisant la compréhension de liste. Ceci est stocké dans la variable once_only. S'il y a une valeur dans la liste, je la renvoie. Sinon, j'afficherai un message d'erreur approprié.
def unique_number(ints: list) -> int: freq = Counter(ints) only_once = [i for i in freq if freq[i] == 1] if len(only_once) == 1: return only_once[0] if len(only_once) == 0: raise ValueError('No values only appear once') raise ValueError('More than one value appears once')
$ ./ch-1.py 3 3 1 1 $ ./ch-1.py 3 2 4 2 4 3 $ ./ch-1.py 1 1 $ ./ch-1.py 4 3 1 1 1 4 3
Vous recevez un tableau d'entiers positifs, @ints.
Écrivez un script pour renvoyer vrai si pour chaque index i dans la plage 0 <= i < taille du tableau, le chiffre i apparaît exactement les fois $ints[$i] dans le tableau donné, sinon renvoie false.
Comme pour la dernière tâche, je crée un dict (hachage en Perl) appelé freq pour stocker la fréquence de chaque entier. Je parcoure ensuite la liste pour vérifier que la condition est remplie avec chaque valeur.
def digit_count_value(ints: list) -> bool: freq = Counter(ints) for idx, value in enumerate(ints): if freq[idx] != value: return False return True </p> <h3> Exemples </h3> <pre class="brush:php;toolbar:false">$ ./ch-2.py 1 2 1 0 true $ ./ch-2.py 0 3 0 false
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!