Erklärung
Das Floyd's Dreieck ist ein Dreieck aus Zahlen, von 1 bis X, und ist N Zeilen hoch.
In Zeile Y sind Y Zahlen: In Zeile 1 ist 1 Zahl; In Zeile 2 sind 2 Zahlen; In Zeile 3 sind 3 Zahlen ...
Beispiele
Ein Beispiel für ein Dreieck: Es gilt :
1
Ein Beispiel für ein Dreieck: Es gilt :
1 2 3
Ein Beispiel für ein Dreieck: Es gilt :
1 2 3 4 5 6
Ein Beispiel für ein Dreieck: Es gilt :
1 2 3 4 5 6 7 8 9 10
Ein Beispiel für ein Dreieck: Es gilt :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Ein Beispiel für ein Dreieck: Es gilt :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
Knobelaufgabe
Gib eine Formel an, mit der die letzte Zahl, damit die Anzahl der Zahlen, X, berechnet werden kann.
Gegeben ist nur N.
Beispiel
Wenn dann ist .
Lösung
Das Dreieck ähnelt sehr einer Dreiecks Form.
Vielleicht lässt sich X wie der Flächeninhalt eines Dreiecks berechnen?!
((N*N)/2=X)
Versuchen wir es:
((4*4)/2)
Das geht nicht! Schade!
Aber (N*N=N^2) ist ein guter Ansatz.
Also (N^2) subtrakiert mit U(Unbekannt) ergibt X:
(N^2-U=X)
Was ist U?
Bei ist
Bei ist
Bei ist
Bei ist
Bei ist
Bei ist
Es ist nur N gegeben, dass heizt aus N muss irgentwie 0, 1, 3, 6 usw. werden.
Mit welcher Zahl muss N multipliziert werden damit aus N, U wird?
Bei ist
Bei ist
Bei ist
Bei ist
Bei ist
Bei ist
Man sieht ein Muster 0, 0.5, 1, 1.5 usw. Die Zahlen werden immer um 0.5 Erhöht.
Die Formel für diese Reihenfolge ist:
(0.5*(N-1)=0.5*N-0.5)
Das für U eingesetzt ergibt:
(N^2-(0.5*N-0.5)=X)
Das Verkürtzt:
(0.5*N^2+0.5*N=X)
Dies kann man auch als Division dastellen, denn
(0.5*X=X/2)
:
(N^2/2+N/2=X)
Damit wäre die Lösung:
(N^2/2+N/2=X)
Implementierung in C
#include <stdio.h> /* printf, scanf */
int main()
{
int n;
printf("Please enter a number: ");
scanf("%d", &n);
printf("\nFloyd's triangle:\n");
register int i, j, num;
for(i = 1, num = 1; i <= n; i++)
{
for(j = 0; j < i; j++, num++)
printf("%d ", num);
printf("\n");
}
return 0;
}
Implementierung in C++
#include <iostream> /* std::cout, std::cin, std::endl */
using std::cout;
using std::cin;
using std::endl;
int main()
{
int n;
cout << "Please enter a number: ";
cin >> n;
cout << endl << "Floyd's triangle:" << endl;
int j;
for(int i = 1, num = 1; i <= n; i++)
{
for(j = 0; j < i; j++, num++)
cout << num << " ";
cout << endl;
}
return 0;
}
Implementierung in Java
package floytri_java;
import java.util.Scanner;
public class floytri_java {
public static void main(String[] args) {
System.out.print("Please enter a number: ");
Scanner s = new Scanner(System.in);
int n = s.nextInt();
s.close();
System.out.println("\nFloyd's triangle:");
int j;
for(int i = 1, num = 1; i <= n; i++)
{
for(j = 0; j < i; j++, num++)
System.out.print(num + " ");
System.out.println("");
}
}
}
Implementierung in Ruby
print "Please enter a number: "
n = gets.to_i
puts "\nFloyd's triangle:"
num = 1
for i in 1..n
for j in 0...i
print "#{num} "
num += 1
end
puts
end