맥도웰 책을 샀는데 33페이지에 잠깐 언급이 있어서 풀어봤다. 생각보다 만족하는 조합이 엄청 많이 나와서 놀랐다.


#!/usr/bin/env python3

from itertools import combinations as comb

cube = [x**3 for x in range(1001)]

dp1 = dict()
for a in range(1, 1000):
    for b in range(a+1, 1001):
        dp1[(a,b)] = cube[a] + cube[b]

dp2 = dict()
for k,v in dp1.items():
    dp2.setdefault(v, []).append(k)

res = []
for k,v in dp2.items():
    if len(v) == 2:
        res.append(v)
    elif len(v) > 2:
        for com in comb(v, 2):
            res.append(list(com))

for item in res:
    a,b = item[0]
    c,d = item[1]
    text = '{}**3 + {}**3 == {}**3 + {}**3 == {}'.format(a,b,c,d, dp1[item[0]])
    print(text)