Example #1
0
 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)
Example #2
0
 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)
Example #3
0
 def test_example_less_trivial(self):
     val = [[0, 1]]
     self.assertEqual(ulamspiral.UlamSpiral(1, start=0).rows, val)
Example #4
0
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)
Example #5
0
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
Example #7
0
 def test_example_trivial(self):
     val = [[0]]
     self.failUnlessEqual(ulamspiral.UlamSpiral(0, start=0).rows, val)