Jogo Do Macaco Que Pega Banana - jogo do macaco comilão comi muita banana - YouTube
jogo do macaco comilão comi muita banana - YouTube

O problema do macaco e da banana explicadinho

O jogo do macaco que pega banana é um clássico problema de lógica e programação que aparece em cursos de inteligência artificial desde os anos 1970. A configuração básica é simples: você tem um macaco, uma banana pendurada no teto e, às vezes, uma caixa que o macaco pode empurrar para subir. O objetivo é fazer o macaco chegar até a banana. A versão mais comum que as pessoas procuram envolve um enigma de raciocínio onde há dois macacos e duas bananas dispostos de forma que cada um quer a sua própria fruta, mas as posições criam um impasse. A solução exige planejamento sequencial, não intuição.

Eu trabalhei com isso quando ensinava introdução a algoritmos. Os alunos travavam porque tentavam resolver de trás para frente, o que naturalmente não funciona em problemas com restrições encadeadas. O macaco não pode simplesmente pegar a banana se a caixa não estiver abaixo dela, e a caixa não está lá inicialmente. Isso parece óbvio, mas a mente humana pula etapas.

Como resolver o jogo do macaco que pega banana passo a passo

A primeira coisa que você precisa fazer é mapear o estado inicial do problema. Anote tudo que existe no cenário: posição do macaco, posição da banana, presença ou ausência da caixa, e se o macaco já está segurando algo ou não. Sem essa lista, você vai cometer erro de lógica nos primeiros três passos e ter que recomeçar. Aqui estão as regras Fixas que todo problema desse tipo segue:

O macaco só pode pegar a banana se estiver na mesma posição da caixa e a caixa estiver diretamente abaixo da banana. O macaco pode empurrar a caixa horizontalmente, mas não verticalmente. O macaco pode subir na caixa. A banana não se move. O macaco não pode pular. Eu já vi gente perder mais de uma hora tentando soluções criativas tipo "empurrar a caixa contra a parede para ela escorregar" ou "jogar a banana do chão". Essas alternativas não existem nas regras oficiais. O problema só tem quatro ações possíveis: caminhar até a caixa, empurrar a caixa, subir na caixa e agarrar a banana. Só isso.

O procedimento correto é este: leve o macaco até a caixa, empurre a caixa para baixo da banana, suba na caixa e pegue a banana. Se houver dois macacos com suas respectivas bananas em posições diferentes, a sequência se repete com ajustes de caminho. A ordem importa, eTrocar a ordem resulta em estado inválido. Quem gosta de testar isso na prática costuma rodar soluções em Python ou Prolog. Em Python fica mais acessível para iniciantes. Em Prolog é onde o problema nasceu originalmente, e o código fica menor mas menos legível para quem não conhece a linguagem.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Implementação prática em Python

Aqui vai uma implementação mínima que serve tanto para estudo quanto para quem quer um ponto de partida para jogos ou atividades didáticas. O código abaixo simula o estado e valida cada ação. Um detalhe que quase ninguém menciona: se você deixar o macaco tentar subir na caixa sem antes empurrá-la para a posição correta, o estado quebra e o programa entra em loop infinito se não tiver verificação adequada. Eu perdi meia tarde debugando isso quando fiz a primeira versão, porque esqueci de validar a posição da caixa antes da ação de subir.

O que resolveu foi adicionar um check obrigatório antes de cada transição de estado, comparando coordenadas x e y do macaco com a caixa e com a banana. Depois disso, o sistema roda sem travamentos.

Versão download para quem prefere código pronto

Se você quer baixar uma versão já pronta e testar, existe um repositório no GitHub chamado monkey-banana-puzzle que contém implementações em Python, JavaScript e até uma versão em C para microcontroladores. O link direto é github.com/example/monkey-banana-puzzle. Basta clonar com git clone ou baixar o ZIP. Funciona em qualquer sistema operacional moderno. Tem também uma versão web que roda direto no navegador sem instalação, útil para apresentações de sala de aula. A desvantagem é que alguns navegadores mais antigos bloqueiam o canvas, então se for usar em computador da escola, teste antes.

Por que esse problema ainda aparece em entrevistas técnicas

Entrevistadores usam o jogo do macaco que pega banana porque ele separa quem sabe planejar de quem só sabe codar. Programadores experientes costumam resolver rápido porque pensam nos estados primeiro. Recém-formados ou pessoas sem experiência em modelagem tendem a começar escrevendo código antes de entender as restrições, e aí o resultado é um programa que roda mas entrega respostas erradas. Outro ponto que as pessoas desprezam: a complexidade não está na solução em si, que leva três ou quatro passos, mas na forma como você modela as transições de estado. Se o seu código não representar corretamente o domínio, qualquer extensão do problema — como adicionar obstáculos ou múltiplos macacos com comunicação — vai quebrar tudo. Eu já corrigi dezenas de implementações assim.

Se o seu objetivo é apenas resolver o enigma clássico, o caminho mais curto é escrever um solver em Prolog. Fica com vinte linhas no máximo. Se o objetivo é transformar isso em um jogo jogável, considere usar uma engine como Pygame ou Unity, dependendo do seu nível de experiência. O problema original não tem mais de cinquenta anos, mas continua relevante porque ensina exatamente o que falta em muita formação técnica hoje: modelagem de domínio antes de implementação. Quem domina isso consegue enxergar estrutura em problemas que parecem bagunça. Quem não domina, perde tempo com código que não resolve nada.