1 pontos por GN⁺ 2025-05-22 | 1 comentários | Compartilhar no WhatsApp
  • Trata uma variação do quebra-cabeça de contas com frutas e emojis da internet como uma equação diofantina inteira, acompanhando o processo até produzir uma solução em inteiros positivos
  • A ferramenta central é um método geométrico que, em vez de encontrar diretamente soluções inteiras, primeiro encontra pontos racionais e gera novos pontos racionais por meio de retas ou tangentes
  • Após substituição de variáveis e rotação, a equação se torna uma curva elíptica simétrica, mas os pontos fáceis que aparecem à primeira vista não levam imediatamente a soluções positivas do problema original
  • Numa curva elíptica, a reta que liga dois pontos racionais ou a tangente em um ponto cria um terceiro ponto de interseção e, graças às fórmulas de Viète, esse ponto também permanece racional
  • Depois de encontrar um ponto menos trivial com o Mathematica e repetir as operações, constrói uma enorme solução inteira positiva ao voltar às variáveis originais

Como um quebra-cabeça de emoji da internet virou um problema de matemática

  • Na internet, circulavam amplamente quebra-cabeças com equações de emojis feitos para confundir detalhes, como a quantidade de bananas, e assim produzir respostas diferentes
  • No início de 2017, apareceu no r/math uma thread no Reddit dizendo estar cansado dos quebra-cabeças de matemática com frutas ao estilo Facebook, e um usuário criou um problema mais difícil usando figuras de frutas
  • Sridhar Ramesh modificou levemente esse problema e o espalhou amplamente, transformando-o num problema infame cuja solução mínima é muito longa e parece exigir conhecimento de curvas elípticas
  • O objetivo é resolver de fato essa versão modificada do problema de emoji

Exemplo preparatório: triplas pitagóricas e pontos racionais

  • Primeiro, trata o problema de encontrar triplas pitagóricas como um exemplo mais simples
  • Em vez de procurar diretamente soluções inteiras, a estrutura fica mais simples ao transformar o problema em encontrar pontos racionais no círculo unitário correspondente
  • Partindo de um ponto racional no círculo unitário e traçando uma reta de inclinação racional, o segundo ponto de interseção com o círculo também será racional
    • Ao calcular as interseções entre a reta e o círculo, surge uma equação quadrática
    • Como os coeficientes são racionais e uma raiz já é racional, pela fórmula de Viète a outra raiz também é racional
  • Ao contrário, qualquer outro ponto racional do círculo unitário tem inclinação racional na reta que o liga ao ponto inicial, então todos os pontos racionais podem ser obtidos do mesmo modo
  • Esse processo leva à forma padrão que expressa todas as triplas pitagóricas por meio de dois inteiros positivos e um múltiplo
  • O padrão importante é o método de obter novos pontos com retas, e uma ideia parecida é usada no problema original de emoji

Transformando a equação original em uma curva elíptica

  • A equação do problema de emoji, após eliminar os denominadores, se transforma de uma busca por soluções inteiras em um problema de encontrar pontos racionais nas razões entre variáveis
  • Em vez de buscar imediatamente apenas soluções inteiras positivas, primeiro explora todos os pontos racionais, incluindo positivos e negativos
  • O gráfico não muda quando se trocam as duas variáveis, então possui uma simetria inclinada
  • Por conveniência, uma substituição de variáveis gira o gráfico para deixá-lo simétrico em relação aos eixos, e essa curva é chamada de curva elíptica
  • Há pontos racionais fáceis de ver no gráfico, mas eles não correspondem a soluções positivas válidas do problema original
  • Por isso, é preciso usar esses pontos fáceis como ponto de partida para gerar mais pontos racionais

O truque da reta que também funciona em curvas elípticas

  • Se traçarmos a reta que liga dois pontos racionais (P), (Q) numa curva elíptica, essa reta encontra a curva num terceiro ponto (R)
  • Esse terceiro ponto de interseção também é um ponto racional
    • Ao substituir a equação da reta na equação da curva elíptica, obtemos uma equação cúbica em uma variável
    • Os coeficientes da equação cúbica são racionais
    • Como duas raízes já são racionais, vindas das coordenadas de (P) e (Q), pela fórmula de Viète a terceira raiz também é racional
    • Substituindo novamente na equação da reta, a outra coordenada também fica determinada como racional
  • Quando (P=Q), em vez da reta que liga dois pontos usa-se a tangente naquele ponto, e a interseção é contada com multiplicidade
  • Mesmo ligando os pontos fáceis encontrados no início ou traçando suas tangentes, só alguns pontos se repetem, sem se expandir para pontos novos e úteis
  • Esses pontos são torsion points, então repetir o mesmo truque da reta não permite escapar para pontos realmente novos

Encontrando pontos racionais dentro da região válida

  • Com o Mathematica, foram buscados pontos racionais menos triviais na curva elíptica, e um deles foi usado nos cálculos seguintes
  • O objetivo não é qualquer ponto racional, mas um ponto que, ao voltar às variáveis originais, faça os três valores serem positivos
  • Se todas as variáveis forem negativas, é possível inverter todos os sinais e obter uma solução positiva, então assume-se uma variável positiva e as condições são reconstruídas ao contrário
  • Essa condição aparece como uma região verde específica no plano de coordenadas transformado, e é preciso levar um ponto racional da curva elíptica para dentro dessa região
  • Fazer isso à mão é muito trabalhoso, então o Mathematica foi usado para calcular as fórmulas das coordenadas dos pontos de interseção produzidos pelas operações de reta e tangente
  • Foram obtidas fórmulas de coordenadas tanto para o terceiro ponto de interseção da reta entre dois pontos quanto para o terceiro ponto produzido pela tangente em um ponto, e as expressões ficam muito complexas enquanto os números crescem

Construindo a solução inteira positiva final

  • A partir de um ponto racional inicial, traça-se uma tangente para obter um novo ponto, e depois outra tangente nesse novo ponto para obter o ponto seguinte, repetindo o processo
  • Mesmo após algumas operações de tangente, ainda não se entra diretamente na região desejada, então adicionalmente liga-se um ponto ao ponto obtido ao trocar os sinais de suas coordenadas, produzindo mais um ponto
  • No final, liga-se um “bom” ponto racional que havia sido guardado antes com o ponto de coordenadas grandes obtido anteriormente e, enfim, chega-se a um ponto racional dentro da região verde desejada
  • Esse ponto racional final é convertido de volta às variáveis originais, e multiplica-se pelo mínimo múltiplo comum dos denominadores para construir uma solução inteira positiva
  • Na verificação final, confirma-se que a enorme solução inteira construída satisfaz a equação do problema original de emoji

1 comentários

 
GN⁺ 2025-05-22
Opiniões no Hacker News
  • Há uma ótima resposta no Quora sobre esse problema: https://www.quora.com/How-do-you-find-the-positive-integer-s...
    • Esse post no Quora foi escrito por Alon Amit e, para constar, o texto original também cita Alon Amit, então a reflexão dele é mais uma explicação a posteriori
  • Relacionado a isso, ao ensinar matemática para meus filhos pequenos e ajudá-los com a lição de casa, eu reescrevia as coisas como equações ou, quando chegávamos a esse ponto, reescrevia a própria equação
    Só que, em vez de coisas como x, eu usava nomes como nuvem fofinha, estrela etc.; as crianças ficavam irritadas, mas mantinham o interesse, e depois passaram a fazer o mesmo ao ajudar os amigos
    É fácil esquecer como é a sensação de aprender esse tipo de abstração pela primeira vez, e era importante mostrar que x não tem nada de especial; também poderia ser sol, ou uma frase como “número total de gatos”
    • Existe um minimalismo na cultura da matemática, e até entendo, em certa medida, que, quando se está jogando fórmulas de um lado para o outro e misturando tudo, ajuda manter tudo o mais curto possível
      Mas, quando isso é publicado depois, a legibilidade fica realmente péssima. Vira uma situação do tipo: “tem um item que desempenha um papel importante nesta fórmula, mas o que diabos ele significa? Alguém o chamou de φ, então não sei”
      Costumo brincar que, se você acha que programadores são ruins para dar nomes, deveria olhar para os matemáticos. Matemáticos têm um orgulho estranho da própria incapacidade de dar nomes
      O pior são programas derivados diretamente de artigos de matemática. Se uma variável contém um coeficiente de correlação, chame-a disso. Temos milhares de anos de linguagem e sinais para compartilhar ideias; não criptografe isso chamando de rho
  • Dei isso ao ChatGPT. Só enviei a imagem na interface padrão da OpenAI, e esperava que o modelo reconhecesse o problema e desse a resposta correta, ou inventasse uma resposta por alucinação, ou se recusasse completamente a resolver
    Mas, na prática, aconteceu isto: https://chatgpt.com/share/682cce62-c53c-8003-be2c-2929395868...
    Em resumo, o modelo deu palpites com confiança, fez os cálculos, concluiu que estavam errados e continuou tentando de novo, chegando até a repetir o mesmo palpite. Não reconheceu a simetria de jeito nenhum e se comportou como um agente completamente sem estrutura
    No fim, concluiu com muita convicção que esse quebra-cabeça não tem solução; se o modelo se comportar tão mal assim em quebra-cabeças futuros, vou ter que ajustar minhas crenças
    • O resultado do Gemini está aqui: https://g.co/gemini/share/ab287b25648f
      Também perguntei ao ChatGPT o3, e ele pensou por 11,5 minutos: https://chatgpt.com/share/682d0993-db4c-8004-a66c-3908ef7203...
    • Impressionante. Se definirmos arbitrariamente uma “solução razoável” como “um número que uma pessoa consegue calcular ou compreender de cabeça”, então certamente não há solução razoável
      Não existe uma versão do ChatGPT que se conecta ao Wolfram Alpha? Fico curioso se alguém tentou isso
  • “Um tal de Sridhar Ramesh”: Sridhar é um craque que vale a pena seguir. Não é comum encontrar alguém que tenha doutorado em matemática e, ao mesmo tempo, nível de doutorado em shitposting
  • Gosto muito desse gênero. Comecei a chamá-lo por conta própria de “Dantzig Sniping”, e também tenho um exemplo que criei: https://x.com/TheOisinMoran/status/1298305686082744320
    Há mais contexto e exemplos relacionados aqui: https://x.com/TheOisinMoran/status/1299124512240398336
    • Achei que o nome viesse de Gdańsk, ou seja, Danzig, e fiquei curioso sobre o que teria sido “alvejado” lá
    • Fico curioso sobre como se descobrem problemas com essa propriedade
  • Estamos em 2025; por que o autor não usa emojis de frutas de verdade nos nomes das variáveis?
    • Ao tentar entender uma base de código C complexa, muitas vezes ajudava trocar variáveis existentes por emojis
      Fica muito mais fácil rastrear qual variável é usada onde, e absorver de relance a estrutura pura do código. Um exemplo que publiquei antes está aqui: https://imgur.com/F27ZNfk
      Infelizmente, a maioria das linguagens modernas, como Rust e JS, segue as recomendações XID_Start/XID_Continue, cuja motivação pessoalmente não me parece tão sólida, e exclui todos os caracteres emoji de identificadores
    • Esta é uma solução em C# criada pelo Gemini, que resolveu o problema usando variáveis com emojis de frutas. Provavelmente é força bruta: https://imgur.com/a/cC5QPH0
    • O ano é 2025, mas a linguagem provavelmente não foi criada em 2025
  • Se você usar uma constante diferente de 4, a menor solução pode ser um número realmente gigantesco: https://observablehq.com/@robinhouston/a-remarkable-diophant...
    • Adoro o jeito idiota, mas majestoso, de carregar sob demanda um número de 120 milhões de dígitos dentro de uma textarea pequena
  • Lembro quando esse problema apareceu pela primeira vez. Todos rimos alto em um seminário de teoria dos números
  • Eu gosto de mergulhar nas profundezas da teoria dos números e em grafos estranhos, mas não entendo o que, no quebra-cabeça original da maçã/banana, deveria ser complicado ou confuso
    Há alguma parte que seja fácil de confundir a ponto de fazer as pessoas brigarem, ou é só um problema fácil o bastante para todo mundo sair correndo para posar de esperto?
    Eu cheguei a 10, 4, 2, mas talvez eu tenha me confundido
    • O “truque” é que, no último grupo, há apenas 3 bananas, enquanto nos outros grupos há 4. Do mesmo modo, na última expressão há só um coco
      Então parece que dá para interpretar como 1 + 10 + 3