예제 #1
0
 def test_generate_spiral_diagonals(self):
     """Test generate_spiral_diagonals()"""
     expected = [1, 3, 5, 7, 9, 13, 17, 21, 25, 31, 37, 43, 49, ]
     self.assertEquals(expected,
                       list(itertools.islice(
                           spirals.generate_spiral_diagonals(),
                           len(expected))))
예제 #2
0
def main():
    """Main program."""
    answer = 0
    generator = spirals.generate_spiral_diagonals()
    diagonals = []
    diagonal_count = 0
    prime_count = 0
    start_time = time.time()
    index = 0
    while True:
        index = index + 1
        if index == 1:
            diagonals = list(itertools.islice(generator, 1))
            diagonal_count += 1
        else:
            new_diagonals = list(itertools.islice(generator, 4))
            diagonals.extend(new_diagonals)
            diagonal_count += 4
            prime_count += sum([sympy.ntheory.primetest.isprime(i) for i in new_diagonals])
            prime_average = float(prime_count) / float(diagonal_count)
            if prime_average < 0.10:
                answer = 2 * index - 1
                break

    end_time = time.time()
    print("The answer is %d" % answer)
    print("%f seconds elapsed." % (end_time - start_time))

    import pyperclip

    pyperclip.copy(str(answer))
    print("The answer has been placed in the clipboard.")
예제 #3
0
 def test_generate_spiral_dgnls_slc(self):
     """Test islice with generate_spiral_diagonals()"""
     expected = [1]
     generator = spirals.generate_spiral_diagonals()
     self.assertEquals(expected, list(itertools.islice(generator, 1)))
     expected = [3, 5, 7, 9]
     self.assertEquals(expected, list(itertools.islice(generator, 4)))
     expected = [13, 17, 21, 25]
     self.assertEquals(expected, list(itertools.islice(generator, 4)))
     expected = [31, 37, 43, 49]
     self.assertEquals(expected, list(itertools.islice(generator, 4)))