def test_example_start_zero(self): val = ' 21 22 23 24 \n 20 7 8 9 10\n 19 6 1 2 11\n' \ ' 18 5 4 3 12\n 17 16 15 14 13\n' self.assertEqual(str(ulamspiral.UlamSpiral(24)), val)
def test_example_start_one(self): val = ' 20 21 22 23 24\n 19 6 7 8 9\n 18 5 0 1 10\n' \ ' 17 4 3 2 11\n 16 15 14 13 12\n' self.assertEqual(str(ulamspiral.UlamSpiral(24, start=0)), val)
def test_example_less_trivial(self): val = [[0, 1]] self.assertEqual(ulamspiral.UlamSpiral(1, start=0).rows, val)
import ulamspiral def find(i,spiral): y = 0 for line in spiral.split('\n '): line = ' '.join(line.split()) x = 0 for n in line.split(' '): n = int(n) if n == i: return x+1,y+1 x = x + 1 y = y + 1 x = 300000 spiral = ulamspiral.UlamSpiral(x).show() r = 0 ex,ey = find(289326,spiral) sx,sy = find(1,spiral) if sx > ex: r = r + sx - ex else: r = r - sx + ex if sy > ey: r = r + sy - ey else: r = r - sy + ey print(r)
import ulamspiral val = 312051 inital = 1 s = ulamspiral.UlamSpiral(val) result1 = [(index, row.index(val)) for index, row in enumerate(s.rows) if val in row] result2 = [(index, row.index(inital)) for index, row in enumerate(s.rows) if inital in row] result = abs(result1[0][0] - result2[0][0]) + abs(result1[0][1] - result2[0][1]) print(result1) print(result)
def primes_range(stop): """ Form a prime sieve and return a list of primes below 'stop'.""" primes = [True] * stop primes[0], primes[1] = [False] * 2 L = [] for ind, val in enumerate(primes): if val: primes[ind * 2::ind] = [False] * (((stop - 1) // ind) - 1) L.append(ind) return L # Form the Ulam Spiral S = ulamspiral.UlamSpiral(limit) # Form the list of primes P = set(primes_range(limit)) # Show only primes in the spiral # Determine character width for printing char_width = len(str(max([max(i) for i in S.rows]))) + 1 for row in S.rows: row_str = '' for i in row: if i <= S.max_int and i in P: row_str += str(i).rjust(char_width) else: row_str += ''.rjust(char_width) print row_str
def test_example_trivial(self): val = [[0]] self.failUnlessEqual(ulamspiral.UlamSpiral(0, start=0).rows, val)