NB. diagonalization http://adventofcode.com/day/25 c=: ".>cutLF 0 : 0 20151125 18749137 17289845 30943339 10071777 33511524 31916031 21629792 16929656 7726640 15514188 4041754 16080970 8057251 1601130 7981243 11661866 16474243 24592653 32451966 21345942 9380097 10600672 31527494 77061 17552253 28094349 6899651 9250759 31663883 33071741 6796745 25397450 24659492 1534922 27995004 ) f=: 33554393&| @ *&252533 NB. So the table is: NB. f^:0 f^:2 f^:5 ... NB. f^:1 f^:4 f^:8 ... NB. f^:3 f^:7 f^:12 ... NB. zero-based index: (r+1)*c+(r*(r+1)+c*(c+1))/2 NB. one-based index: (c-1)*r+(r*(r-1)+c*(c-1))/2 NB. ((c+r)²-3*r-c)/2 i=: 4 : '(x*<:y)+<.-:(x*<:x)+y*<:y' i=: <.@-:@(*:@+ - 3&*@[ + ]) NB. find value @ one-based row 2947, column 3029 echo n=:2947 i 3029 NB. index is 17850353 echo f^:n {.{.c NB. value is 19980801 (August 1st, 1998?) NB. (33554393&|@*&252533)^:(2947(<.&-:@(*:@+-3&*@[+]))3029)20151125 NB. Or with power-modulo optimization, blindingly fast: NB. 33554393|20151125*(33554393&|@^&(2947(<.&-:@(*:@+-3&*@[+]))3029))252533 exit 0