Python: il problema del contachilometri

Cerca nel sito

Altri risultati..

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Cerca nelle Categorie

Python. Esercizi svolti

Problema


“L’altro giorno stavo guidando in autostrada e guardai il mio contachilometri. È a sei cifre, come la maggior parte dei contachilometri, e mostra solo chilometri interi. Se la mia macchina, per esempio, avesse 300.000 km, vedrei 3-0-0-0-0-0.”
“Quello che vidi quel giorno era interessante. Notai che le ultime 4 cifre erano palindrome, cioè si potevano leggere in modo identico sia da sinistra a destra che viceversa. Per esempio 5-4-4-5 è palindromo, per cui il contachilometri avrebbe potuto essere 3-1-5-4-4-5”
“Un chilometro dopo, gli ultimi 5 numeri erano palindromi. Per esempio potrei aver letto 3-6-5-4-5-6. Un altro chilometro dopo, le 4 cifre di mezzo erano palindrome. E tenetevi forte: un altro chilometro dopo tutte e 6 erano palindrome!”
“La domanda è: quanto segnava il contachilometri la prima volta che guardai?”

Scrivete un programma in Python che controlli tutti i numeri a sei cifre e visualizzi i numeri che soddisfano le condizioni sopra indicate.




Soluzione

def palindromo(i, start, len):
    """restituisce True se l'intero i, convertito in stringa,
    contiene un numero palindromo di lunghezza (len), che inizia nella posizione definita dall' indice (start)
    """
    s = str(i)[start:start+len]
    return s[::-1] == s
    
def check(i):
    """verifichiamo se l'intero (i) ha le proprietà descritte
    nel quesito
    """
    return (palindromo(i, 2, 4)   and
            palindromo(i+1, 1, 5) and
            palindromo(i+2, 1, 4) and
            palindromo(i+3, 0, 6))
def check_all():
    """elenca i numeri a sei cifre e stampa quelli che soddisfano il
    requisiti del quesito"""
    i = 100000
    while i <= 999999:
        if check(i):
            print (i)
        i = i + 1
print ('I seguenti sono i possibili numeri letti sul contachilometri:')
check_all()
⇒I seguenti sono i possibili numeri letti sul contachilometri:
198888
199999
 

Python: Lezioni ed esercizi svolti

Ti potrebbe interessare anche:  Imparare Python facilmente

(201)

PubblicitàPubblicità