Escreva assembly minúsculo em uma grade de CPUs que passam valores para os vizinhos, convertendo o fluxo de entrada no alvo sem causar bloqueios.
Como jogar
Você programa uma grade de computadores muito pequenos. Cada nó executa sua própria lista curta de instruções e só pode se comunicar com os vizinhos diretamente ao lado, passando valores através de portas — então, um número que precisa cruzar a grade deve ser retransmitido manualmente, nó por nó.
Cada nó tem um acumulador e algumas instruções: mover um valor, somar, subtrair, pular.
Um nó pode ler de ou escrever para o vizinho acima, abaixo, à esquerda ou à direita, ou para os fluxos de entrada e saída.
As portas bloqueiam. Um nó escrevendo para a direita simplesmente espera até que o nó à sua direita leia da sua esquerda.
Isso significa que dois nós precisam concordar em tempo, não apenas em valor.
Se um ciclo inteiro passar sem que ninguém faça progresso e alguém ainda esteja esperando, a grade entra em bloqueio.
O quebra-cabeça é resolvido quando o fluxo de saída corresponde ao alvo exigido pelo nível.
Controles
Desktop: digite o código na caixa de texto de cada nó, escolha um nível no menu suspenso e pressione Executar
Celular e tablet: funciona, mas um teclado externo é fortemente recomendado para escrever o código
Modos de jogo
Diário: um quebra-cabeça compartilhado baseado na data de hoje
Prática: alterne entre entradas aleatórias novas com o botão Novo
Dicas e estratégia
Projete a rota antes da aritmética. A maioria das falhas são valores que não conseguem chegar onde precisam, não somas que saem erradas.
Dois nós esperando um pelo outro é o bloqueio clássico. Se ambos escreverem um para o outro antes que qualquer um leia, nenhum dos dois se move.
Mantenha o tráfego fluindo em um sentido sempre que possível. Uma grade com direção consistente é muito mais fácil de raciocinar do que uma com valores cruzando.
Use um nó como um retransmissor puro quando precisar. Fazer nada além de passar um valor adiante é um trabalho legítimo e muitas vezes necessário.
Leia o nó bloqueado, não a resposta errada. Quando a saída trava, o que é informativo é qual nó está esperando e por quem.
O que você vai aprender
Node Network é um quebra-cabeça de programação paralela sobre passagem de mensagens e evitação de bloqueios em uma malha de processadores.
Habilidades: programação paralela e concorrente, passagem de mensagens, evitação de bloqueios
Ideal para: aproximadamente 9º ao 12º ano (14+ anos)
Para pais e professores: concorrência e bloqueios, na prática.
Origens
Uma grade de computadores minúsculos, cada um executando sua própria lista curta de instruções e capaz de se comunicar apenas com os vizinhos imediatamente ao lado, é TIS-100 — Zachtronics, julho de 2015 —, que ambientava seus quebra-cabeças numa máquina fictícia e corrompida dos anos 1970.
A restrição ensinada é real e central na computação paralela: sem memória compartilhada, um valor que precisa atravessar a grade deve ser retransmitido à mão, nó por nó, por meio de troca de mensagens.
E retransmitir à mão é como se chega ao impasse (deadlock) — dois nós, cada um esperando pelo outro, ambos parados para sempre. É um bug que não dá para explicar de verdade num quadro-branco, porque toda a dificuldade está em que cada nó, individualmente, está se comportando corretamente.
Sobre o Node Network
Node Network é um quebra-cabeça de programação paralela sobre passagem de mensagens e evitação de bloqueios em uma malha de processadores. É um jogo de navegador original e gratuito, desenvolvido internamente para o PlayPendium.
Um jogo original e gratuito no seu navegador — sem downloads. Ver todos os jogos →