# coding: utf-8 import numpy as np # Sieve of Eratosthenes def sieve(a,b): if(abs(a) star2 vector vec = starPos[1] - starPos[0] div = sieve(vec[0],vec[1]) vec = vec / div # enumerate lattice point on the star1--star2 line lattice = [] p = starPos[0] while(((W,H) > p).all() and ((0,0) <= p).all()): lattice.append(tuple(p)) p = p + vec p = starPos[0] while(((W,H) > p).all() and ((0,0) <= p).all()): lattice.append(tuple(p)) p = p - vec # get 3rd star position for thirdPos in [(x,y) for y in range(H) for x in range(W)]: if not thirdPos in lattice: starPos.append(thirdPos) break # print result sky = [["-" for w in range(W)] for h in range(H)] for i in range(3): sky[starPos[i][1]][starPos[i][0]] = "*" print("\n".join(["".join(s) for s in sky]), "\n")