Kniffige Pyramide

Butterbrot

Aktives Mitglied
Sehr geehrte Community,

momentan lerne ich noch das Programmieren mit Java und komme an einer Aufgabe nicht weiter. Ich muss eine Pyramide erstellen, die folgendermaßen ausschaut:
Code:
                          1
                         1 1
                        1 2 1
                       1 3 3 1
                      1 4 6 4 1
                   1 5 10 10 5 1
Dabei sollte ich mehrere verkettete Schleifen verwenden. Momentan bin ich am Ende meiner Weisheit und bekomme höchstens eine Pyramide im folgenden Stil zustande:
1
12
123
1234
Meine Frage wäre, wie ich die Pyramide lösen könnte. Ich würde mich über jegliche Tipps freuen (muss ja nicht sofort die Lösung sein, sondern kann auch nur ein einzelner hint sein).
Vielen Dank im Vorraus
Maxim
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
Ist dir der logische Aufbau dieser Pyramide klar?
Also wie du auf die jeweiligen Zahlen kommst?

Villeicht wird es dir mit diesen Verbindungen etwas klarer:
Code:
          1
         / \
        1   1
       / \ / \
      1   2   1
     / \ / \ / \
    1   3   3   1
   / \ / \ / \ / \
  1   4   6   4   1
 / \ / \ / \ / \ / \
1   5   10  10   5  1

Die Zahlen sind das Ergebnis der Addition der jeweils beiden darüber liegenden Zahlen (Ausnahme der Rand, der bleibt immer 1)
 

Butterbrot

Aktives Mitglied
Hallo Joose,

danke für den Hinweis, aber ich habe den mathematischen Ansatz schon verstanden. Ich weiß aber immer noch nicht, wie ich das programmieren soll. Trotzdem danke.

Gruß,

Maxim
 
X

Xyz1

Gast
Wahrscheinlich hätte ich es (auf die Schnelle) so geschrieben:
Java:
import java.util.*;

/**
* @author DW
*/
public class IrgeneinePyramide {

    public static void main(String[] args) {
        int[][] pyra = new int[6][];
        pyra[0] = new int[]{1};
        for (int i = 1; i < 6; i++) {
            pyra[i] = new int[i + 1];
            for (int j = 0; j < pyra[i].length; j++) {
                pyra[i][j] = (j-1<0 ? 0 : pyra[i - 1][j - 1]) + (j<i ? pyra[i - 1][j] : 0);
            }
        }
        for (int[] p : pyra) {
            System.out.println(Arrays.toString(p));
        }
    }

}
Code:
run:
[1]
[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
Grüße
Edit:
Na klar, ich will eine vernünftige Ausgabe hab'n. Dann füge ein:
Java:
        for (int i = 0; i < 6; i++) {
            for (int j = 0; j < (5 - i) * 2; j++) {
                System.out.print(' ');
            }
Code:
run:
          [1]
        [1, 1]
      [1, 2, 1]
    [1, 3, 3, 1]
  [1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
 
X

Xyz1

Gast
Nicht nur 6 Zeilen:
Java:
        for (int i = 1; i < pyra.length; i++) {

Es gibt auch noch 10 andere Möglichkeiten, rekursiv wäre etwas feines.

Dieses tolle Dreieck hat auch einen speziellen nahmen, und findet Beachtung in der Mathematik. :)
 

Neue Themen


Oben