Triángulo de Floyd

De Wikipedia, la enciclopedia libre

El Triángulo de Floyd, llamado así en honor al informático estadounidense Robert Floyd (1936-2001), es un triángulo rectángulo formado con números naturales. Para crear un triángulo de Floyd, se comienza con un 1 en la esquina superior izquierda y se continúa escribiendo la secuencia de los números naturales de manera que cada línea contenga un número más que la anterior:

1
23
456
78910
1112131415

Uno de los ejercicios más comunes en los cursos de introducción a la programación de ordenadores consiste en escribir un pequeño programa que produzca este triángulo.[1][2]​ El triángulo de Floyd tiene varias propiedades matemáticas interesantes. Los números del cateto de la parte izquierda forman la secuencia de los números poligonales centrales, mientras que los de la hipotenusa nos dan el conjunto de los números triangulares. La suma de los números de la línea n equivale a n(n2 + 1)/2 (sucesión A006003 en OEIS).

Algoritmo computacional[editar]

En Python es:

def TrianguloFloyd(n):
	k=0
	lista = [x+1 for x in range(int((n**2+n)/2))]
	aux = ''
	for i in range(n):
		for l in lista[k:k+i+1]:
			if i>3:
				aux+=str(l)+' '
			else:
				aux+=str(l)+'  '
		print(aux)
		aux=''
		k+=i+1

En PSeInt (estricto) es:

	Definir TAMANIO Como Entero; 
	TAMANIO <- 10;
	Definir i, j, t Como Enteros;
	t <- 1;
	Escribir "Triángulo Floyd";
	Para i <- 1 Hasta TAMANIO Con Paso 1 Hacer
		Para j <- t Hasta t + i - 1 Con Paso 1 Hacer
			Escribir j, " " Sin Bajar;
		FinPara
		Escribir "";
		t <- t + i;
	FinPara
FinProceso

En C es:

#include<stdio.h>
#include<conio.h>

int main() {
	int i,j,t;
	t = 1;
        int tamanio = 10;
	printf("Triangulo Floyd\n");
	for (i=1;i<=tamanio;i++) {
		for (j=t;j<=t+i-1;j++) {
			printf("%i ",j);
		}
		printf("\n");
		t = t+i;
	}
	getch();
	return 0;
}

En Java es:

public class TrianguloFloyd {
public static void main(String[] args) {
       final int TAMANO = 10;
       int t = 1;
       System.out.println("\nTriángulo Floyd\n");
                for (int i = 1; i <= TAMANO; ++i) {
                     for (int j = t; j <= t + i - 1; ++j) {
                          System.out.print(j + "\t");
                     }
                System.out.println("\n");
                t += i;
                }
       }
}

En MATLAB es:

fprintf('\n Triángulo de Floyd: \n\n');
numElementos = 10;
M = zeros(numElementos);
numeroReal = 1;
for i = 1 : numElementos
    for j = 1 : i
        M(i,j) = numeroReal;
        numeroReal = numeroReal + 1;
    end
end
disp(M)

Véase también[editar]

Referencias[editar]

  1. Keller, Arthur M. (1982), A first course in computer programming using PASCAL, McGraw-Hill, p. 39 ..
  2. Peters, James F. (1986), Pascal with program design, Holt, Rinehart and Winston, pp. 137, 154 ..