Issues (956)

solutions/problem36.py (6 issues)

1
"""
2
Project Euler Problem 36: Double-Base Palindromes
3
=================================================
4
5
.. module:: solutions.problem36
6
   :synopsis: My solution to problem #36.
7
8
The source code for this problem can be
9
`found here <https://bitbucket.org/nekedome/project-euler/src/master/solutions/problem36.py>`_.
10
11
Problem Statement
12
#################
13
14
The decimal number, :math:`585 = 10010010012` (binary), is palindromic in both bases.
15
16
Find the sum of all numbers, less than one million, which are palindromic in base :math:`10` and base :math:`2`.
0 ignored issues
show
This line is too long as per the coding-style (112/100).

This check looks for lines that are too long. You can specify the maximum line length.

Loading history...
17
18
.. note:: that the palindromic number, in either base, may not include leading zeros.
19
20
Solution Discussion
21
###################
22
23
This solution simply searches through the integer range and identifies values that are palindromic in bases :math:`2`
0 ignored issues
show
This line is too long as per the coding-style (117/100).

This check looks for lines that are too long. You can specify the maximum line length.

Loading history...
24
and :math:`10`. These values are summed to produce the answer.
25
26
The one clever component is to only consider odd numbers. Every even integer has :math:`0` as its least significant bit
0 ignored issues
show
This line is too long as per the coding-style (119/100).

This check looks for lines that are too long. You can specify the maximum line length.

Loading history...
27
which is not allowed for the most significant bit. Therefore no even number is a base :math:`2` palindrome.
0 ignored issues
show
This line is too long as per the coding-style (107/100).

This check looks for lines that are too long. You can specify the maximum line length.

Loading history...
28
29
Solution Implementation
30
#######################
31
32
.. literalinclude:: ../../solutions/problem36.py
33
   :language: python
34
   :lines: 37-
35
"""
36
37
from lib.digital import is_palindrome
38
39
40
def solve():
41
    """ Compute the answer to Project Euler's problem #36 """
42
    upper_bound = 1000000
43
    answer = 0
44
    palindromes = filter(lambda n: is_palindrome(n, 10) and is_palindrome(n, 2), range(1, upper_bound, 2))
0 ignored issues
show
This line is too long as per the coding-style (106/100).

This check looks for lines that are too long. You can specify the maximum line length.

Loading history...
45
    answer += sum(palindromes)
46
    return answer
47
48
49
expected_answer = 872187
0 ignored issues
show
Coding Style Naming introduced by
The name expected_answer does not conform to the constant naming conventions ((([A-Z_][A-Z0-9_]*)|(__.*__))$).

This check looks for invalid names for a range of different identifiers.

You can set regular expressions to which the identifiers must conform if the defaults do not match your requirements.

If your project includes a Pylint configuration file, the settings contained in that file take precedence.

To find out more about Pylint, please refer to their site.

Loading history...
50