24/06/2009

Codechef : Petit déjeuner de l'autre côté du miroir

The Codechef, le concours de programmation organisé par Directi, propose depuis peu deux problèmes par jour [via Twitter](http://twitter.com/codechef "Twitter @codechef). Ce matin, le problème est de compter le nombre d'entiers inférieurs à 1000 qui, quand on les ajoute à leur image miroir, forment un entier qui n'est composé que de chiffres impairs.

Exemple simple:

...
20 + 02 = 22 NON
21 + 12 = 33 OUI
22 + 22 = 44 NON
...

Et comme d'habitude, j'ai sorti l'ami Python, celui qui nous veut du bien.

#! /usr/bin/python
# Codechef Twitter Daily 2009/06/24
# How many numbers below 1000 which when added with their respective mirror 
# images result in a number with entirely odd digits?
# 2009/06/24 - Jean Karim Bockstael - jkb@jkbockstael.be


def reverse_number(num):
    return int(str(num)[::-1])

def is_all_odds(num):
    for digit in str(num):
        if (int(digit) % 2 == 0):
            return False
    return True

def count_mirrors(max):
    n_mirrors = 0
    for num in range(1, max):
        if is_all_odds(num + reverse_number(num)):
           n_mirrors += 1
    return n_mirrors

print count_mirrors(1000)

Tags:

cc-by-nc | code (python) | codechef


Project Euler : solution au problème 28, en Python (26/06/2009)Tiens j'avais oublié ça... (16/06/2009)