diff options
| author | Reiner Herrmann <reiner@reiner-h.de> | 2010-03-13 16:45:27 +0100 |
|---|---|---|
| committer | Reiner Herrmann <reiner@reiner-h.de> | 2014-08-31 20:11:45 +0200 |
| commit | 517e297fc12d4ea0555a3f3329c72702a06153e5 (patch) | |
| tree | 388a935bb072179ed571bf63aee4a14eccb37e51 | |
| parent | 7fa2a57c8bc7748640f5984ea30dd371e2b77bc2 (diff) | |
project euler solution for #36
| -rw-r--r-- | src/projecteuler/036.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/projecteuler/036.py b/src/projecteuler/036.py new file mode 100644 index 0000000..bf800da --- /dev/null +++ b/src/projecteuler/036.py @@ -0,0 +1,40 @@ + +binary = [ 2**x for x in range(20) ][::-1] + +def palindromic_decimal(n): + if n == int(str(n)[::-1]): + return True + return False + + +def dec2bin(n): + res = "" + for i in binary: + if n - i > 0 or n == i: + res += "1" + n -= i + else: + if len(res) > 0: # do not add leading 0s + res += "0" + return res + +def bin2dec(n): + res = 0 + for i in range(1, len(n)+1): + if n[-i] == "1": + res += binary[-i] + return res + +def palindromic_binary(n): + if n == bin2dec(dec2bin(n)[::-1]): + return True + return False + +sum = 0 + +for n in xrange(1000000): + if palindromic_decimal(n) and palindromic_binary(n): + sum += n + +print sum + |
