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))))
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.")
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)))