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