A tela inicial, depois de vários problemas resolvidos |
O computador emulado pelo jogo é complexamente simples. Com apenas treze instruções e dois registradores de trabalho, a CPU é muito limitada. Entretanto, o computador possui até 12 destas CPUs (ou nós no linguajar do jogo) executando em paralelo. A comunicação entre os nós é feita através de registradores chamados RIGTH, LEFT, UP e DOWN; esta comunicação funciona também como uma forma de sincronismo entre os nós: quem está enviando a informação fica parado até o receptor pegá-la e que está pegando uma informação fica parado até o transmissor a disponibilizá-la.
Um programa simples (mas não muito eficiente) |
Mais adiante no jogo aparecem outros dois tipos de nós: um nó de memória (que funciona apenas como pilha) e um nó de apresentação gráfica. A capacidade do nó de memória e os programas nas CPUs são limitados pelo pequeno espaço disponível na tela. Recursos bem simples de debug estão disponíveis.
Resolver um problema é, na maioria dos casos, complicado. Depois que você resolve, o jogo mostra um gráfico comparando (via internet) a sua solução com a dos outros jogadores em termos de velocidade (ciclos gastos para resolver o programa), quantidade de nós utilizada e o número total de instruções. Algo que pode surpreender no início é como distribuir a tarefa em vários nós pode reduzir de forma notável o número de ciclos.
Minha solução não é ruim, mas tem gente que fez muito melhor. |
A primeira pista |
Por último, existem os sandboxes, onde vocês pode testar livremente programas.
É possível encontrar informações adicionais sobre o jogo na internet, por exemplo no Reddit e neste Hacker's Guide.
Veredito
Não é um jogo para qualquer um, mas é imperdível para quem gosta de problemas de programação.
Nenhum comentário:
Postar um comentário