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 entier positif, $int, comportant 3 chiffres ou plus.
Écrivez un script pour renvoyer le bon entier dans l'entier donné ou -1 si aucun n'est trouvé. Un bon entier est composé exactement de trois chiffres consécutifs correspondants.
Au départ, je pensais que cette tâche pouvait être effectuée avec un modèle d'expression régulière, mais il semble que j'avais tort. Je vais regarder d'autres membres de TPW pour voir s'ils peuvent le faire de cette façon.
Pour cette tâche, j'ai une variable pos qui itère de 0 à trois de moins que la longueur de la chaîne. Je vérifie ensuite quatre choses :
Si tout cela est vrai, je renvoie ces trois chiffres. Cela se fait sous forme de chaîne en Python, car « 000 » n'est pas un véritable entier. Si l'itérateur est épuisé, je renvoie -1.
def good_integer(n: int) -> str: value = str(n) length = len(value) for pos in range(length-2): if ( value[pos] == value[pos+1] and value[pos] == value[pos+2] and (pos == 0 or value[pos] != value[pos-1]) and (pos + 3 == length or value[pos] != value[pos+3]) ): return value[pos:pos+3] return '-1'
$ ./ch-1.py 12344456 444 $ ./ch-1.py 1233334 -1 $ ./ch-1.py 10020003 000
Vous recevez une chaîne alphabétique, $str, telle que saisie par l'utilisateur.
Écrivez un script pour trouver le nombre de fois que l'utilisateur a dû changer la clé pour taper la chaîne donnée. Le changement de clé se définit comme l'utilisation d'une clé différente de la dernière clé utilisée. Les touches "shift" et "caps lock" ne seront pas prises en compte.
Fait amusant. Lorsque je reçois un nouveau clavier (toutes les quelques années), je vois combien de temps il faut avant d'arracher la touche de verrouillage des majuscules. La plupart des claviers ne durent pas une journée !
Pour cette tâche, je convertis la chaîne en minuscules et commence avec deux variables. La valeur current_key est la touche actuellement enfoncée et est initialisée avec la première lettre de notre entrée. La variable changes correspond au nombre de modifications clés que j'apporte et commence par 0.
Je parcoure ensuite chaque lettre de la chaîne d'entrée. Si cette lettre est différente de current_key, je la mets à jour avec la nouvelle lettre et j'incrémente les modifications de 1.
def key_changes(s: str) -> int: s = s.lower() current_key = s[0] changes = 0 for letter in s: if letter != current_key: current_key = letter changes += 1 return changes
$ ./ch-2.py pPeERrLl 3 $ ./ch-2.py rRr 0 $ ./ch-2.py GoO 1
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!