原です。

>  豊福です。
>
>  スピード部門はすごすぎるのでシンプル部門にエントリします。
>(a+d==b+c (mod 6)使わせてもらいました)
>
>aj = [[0,1,2],[2,0,1],[1,2,0]]
>n = 100
>m = 10
>while (n > 0)
>  hm = m/2
>  (1..(m-6)/4).each { |a| a3 = a**3
>    ((a+1)..(((m2=m-a)-3)/3)).each { |b| b3 = b**3
>      # a+b+c+d == m; a+d == b+c (mod 6) => c == m/2-b (mod 3)
>      c = b+1; c += aj[c%3][(hm-b)%3]
>      upper_c = ((m3=m2-b)-1)/2
>      while (c <= upper_c)
>        d = m3-c
>        if ((s = a3 + d**3) == b3 + c**3)
>          p [s, [a,d], [b,c]] 
>          exit if ((n -= 1) <= 0)
>        end
>        c += 3
>      end
>    }
>  }
>  m += 2
>end

近岡さんが b + c をパラメータに取って2次方程式を解くと
いう技巧を用いたのに対し、よりシンプルに c そのものをパ
ラメータにしたわけですね。分かりやすい。

[[0,1,2],[2,0,1],[1,2,0]][x%3][y%3]  は (-x+y)%3 でいい?