Ordered Fractions
Algorithm
Try all the possible numerator/denominator pairs and see if the decimal representation hasn't been met before.
Python
def gen(n):
used_magnitudes = set()
res = []
for denominator in range(1,n+1):
for numerator in range(0,denominator+1):
if not (float(numerator)/denominator in used_magnitudes):
used_magnitudes.add(float(numerator)/denominator)
res.append([numerator,denominator])
return sorted(res,key=lambda i:float(i[0])/i[1])
def main():
with open('frac1.in','r') as fIn:
n = int(fIn.read())
res = gen(n)
print(res)
with open('frac1.out','w') as fOut:
for i in res:
fOut.write('%d/%d\n' % (i[0],i[1]))
if __name__ == '__main__':
main()