f = -> m {
(1..Float::INFINITY).each_with_object(Hash.new {|h, k| h[k] = []}) {|a, acc|
(1...a).each {|b|
c = a * a * a - b * b * b
acc[c] << [a, b]
return acc[c] if acc[c].size == m
}
}
}
p f.(5) # [[1134, 357], [1155, 504], [1246, 805], [2115, 2004], [4746, 4725]]
ZiA9IC0+IG0gewogICgxLi5GbG9hdDo6SU5GSU5JVFkpLmVhY2hfd2l0aF9vYmplY3QoSGFzaC5uZXcge3xoLCBrfCBoW2tdID0gW119KSB7fGEsIGFjY3wKICAgICgxLi4uYSkuZWFjaCB7fGJ8CiAgICAgIGMgPSBhICogYSAqIGEgLSBiICogYiAqIGIKICAgICAgYWNjW2NdIDw8IFthLCBiXQogICAgICByZXR1cm4gYWNjW2NdIGlmIGFjY1tjXS5zaXplID09IG0KICAgIH0KICB9Cn0KcCBmLig1KSAjIFtbMTEzNCwgMzU3XSwgWzExNTUsIDUwNF0sIFsxMjQ2LCA4MDVdLCBbMjExNSwgMjAwNF0sIFs0NzQ2LCA0NzI1XV0=