4 votos

¿Hay una manera de dividir un cuadrado de lados enteros en triángulos no rectos de lados enteros?

Los triángulos rectos de lados enteros encajarán en un cuadrado: Triángulos rectos lados enteros en un cuadrado

pero ¿qué hay de los triángulos no rectos de lados enteros? Aquí hay un error: no encajan de esta manera: una falta cercana

¿Es posible?

3voto

DanielV Puntos 11606

Triángulo cuadrado

Acabo de usar un programa de computadora electrónico escrito apresuradamente:

 // gcc british_flag.c -o british_flag.exe -std=c99 -Wall -O3

#include <stdio.h>

static int square(int x);
static int is_square(int x, int* square_root);

#define MAX 50

int main() {
  int z11, z12, z21, z22;

  int solution_exists[MAX][MAX];

  for (int x = 0; x < MAX; x++) {
    for (int y = 0; y < MAX; y++) {
      solution_exists[x][y] = 0;
    }
  }

  for (int x = 1; x < MAX; x++) 
  for (int y = 1; y < MAX; y++) 
  for (int x2 = 1; x2 < x; x2++) 
  for (int y2 = 1; y2 < y; y2++) {
    int x1 = x - x2;
    int y1 = y - y2;

    if (is_square(x1*x1 + y1*y1, &z11)
     && is_square(x2*x2 + y1*y1, &z21)
     && is_square(x1*x1 + y2*y2, &z12)
     && is_square(x2*x2 + y2*y2, &z22)
    ) {
      if ( square(x) == square(z11) + square(z21) ) continue;
      if ( square(x) == square(z12) + square(z22) ) continue;
      if ( square(y) == square(z11) + square(z12) ) continue;
      if ( square(y) == square(z21) + square(z22) ) continue;
      printf("(%d, %d) %d %d by %d %d\n", x, y, x1, x2, y1, y2);
      solution_exists[x][y] = 1;
    }
  }

  return 0;
}

static int square(int x) {
  return x*x;
}




static int is_square(int x, int* square_root) {
  int min = 0;
  int max = x;

  while(1) {
    *square_root = (min + max)/2;
    if (*square_root * *square_root == x) return 1;
    if (min >= max) return 0;

    if (*square_root * *square_root <  x) {
      min = *square_root + 1;
    }
    if (*square_root * *square_root >  x) {
      max = *square_root - 1;
    }
  }
}
 

No es muy perspicaz, pero sospecho (y estoy seguro de que alguien puede demostrarlo) que no existe una solución que solo esté formada por 4 reuniones de triángulos en un solo punto en el medio. También deja atrás la pregunta de cuál es el menor número posible de triángulos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X