py_pattern_tracker
Código comentado línea a línea y paso a paso:
Entregas: py_pattern_tracker.py con pattern_tracker(text). Rank 03 · nivel 3.
Qué pide (en palabras normales)
- Cuenta parejas de dígitos pegados donde el segundo es el primero + 1.
"123"→ 2 (12 y 23)."90"no vale.
Subject (enunciado original)
Write a function that counts the number of valid consecutive digit pairs
in a string. A valid pair consists of two adjacent digits where the second
digit is exactly one greater than the first.
A 9 followed by a 0 is NOT a valid pair.
Expected file: py_pattern_tracker.py
Function signature:
def pattern_tracker(text: str) -> int:
Examples:
pattern_tracker("123")
=> 2
pattern_tracker("12a34")
=> 2
pattern_tracker("987654321")
=> 0
pattern_tracker("01234567")
=> 7
pattern_tracker("abc")
=> 0
pattern_tracker("1a2b3c4")
=> 0
pattern_tracker("112233")
=> 2
Solución
count = 0
for a, b in zip(text, text[1:]):
if a.isdigit() and b.isdigit() and int(b) - int(a) == 1:
count += 1
return count
zip(text, text[1:]) es el truco: recorre el string de dos en dos solapados, sin índices ni range(len(text) - 1). Las letras en medio hacen que la pareja no sea de dos dígitos y se descarta sola.
Trampas
- El 9→0: si comparas con
(int(a) + 1) % 10lo cuentas y suspendes. Resta normal, sin módulo. - Compara como enteros, no
ord(b) - ord(a)... bueno, eso también funciona para dígitos ASCII, perointse lee mejor.