# Kniffige Pyramide



## Butterbrot (14. Okt 2015)

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:

```
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


----------



## Joose (14. Okt 2015)

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:

```
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 (14. Okt 2015)

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


----------



## Xyz1 (17. Okt 2015)

Wahrscheinlich hätte ich es (auf die Schnelle) so geschrieben:

```
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));
        }
    }

}
```


```
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:

```
for (int i = 0; i < 6; i++) {
            for (int j = 0; j < (5 - i) * 2; j++) {
                System.out.print(' ');
            }
```


```
run:
          [1]
        [1, 1]
      [1, 2, 1]
    [1, 3, 3, 1]
  [1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
```


----------



## Butterbrot (17. Okt 2015)

Vielen Dank, DerWissende. Ich hab jetzt nicht daran gedacht Arrays zu verwenden.


----------



## Xyz1 (17. Okt 2015)

Nicht nur 6 Zeilen:

```
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.


----------

