O jogo consiste em uma grade, que normalmente é composta por 81 elementos dispostos em um quadrado 9×9.

Esta grade, por sua vez é dividida em 9 sub-grades 3×3. Cada uma destas pequenas grades possui números de 1 a 9 que não se repetem.

O jogo fica interessante enquanto os números não se repetem nem nas colunas nem nas linhas. E é aqui que o algoritmo para gerar a grade se complica.

A “receita” do programa:

  1. Criar um array com as coordenadas dos números seguindo um dos dois exemplos a seguir ou inventar o teu próprio array:
    • Array[sub-grade linha coluna]
    • Array[sub-grade][linha coluna];
  2. Povoar os elementos com o número 123456789.
  3. Entrar em um loop recursivo:
    1. Verificar se existe pelo menos um número, em toda a grade, composto de mais de um número (78 por exemplo). Se a resposta é sim, continuo, caso contrario saio do loop.
    2. Escolher um número presente no menor número em comprimento presente no array.
      • Exemplo: na célula Array[5][32] (quinta sub-grade, terceira linha, segunda coluna) temos o numero “2589″ e este número possui 4 caracteres. Todos os outros sao maiores ou possuem o mesmo número de caracteres. Então escolhemos aleatoriamente um deles: “8″ e o colocamos em substituição do “2589″ presente na célula;
    3. Substituir o número escolhido (8) em todos os outros elementos presentes na quinta sub-grade.
      • Para cada elemento do Array[5] diferente de [32] substituir o numero 8 com “” (nada).
    4. Substituir o número escolhido (8) em todos os outros elementos presentes na linha.
    5. Substituir o número escolhido (8) em todos os outros elementos presentes na coluna.
    6. Recomeçar o loop.
  4. Uma vez criado o Array, basta traduzi-lo em HTML.