Zum Hauptinhalt springen

Felder Auffüllen

Im vorherigen Schritt wurden alle gleichzahligen Nachbarszellen (und deren Nachbarszellen) mit einem leeren Wert ersetzt. Nun sollen die leeren Zellen zusammengeschoben werden.

  1. An der Stelle der ausgewählten Zelle wird der ursprüngliche Wert verdoppelt.

    Spalte 2, Zeile 3 ausgewählt (Zahl 4)

    1 2 3 4 5 1 2 3 4 5
    --------------------- ---------------------
    1 | 2 | 4 | 1 | 8 | 8 | 1 | 2 | 4 | 1 | 8 | 8 |
    --------------------- ---------------------
    2 | | 2 | 8 | | 1 | 2 | | 2 | 8 | | 1 |
    --------------------- ---------------------
    3 | |[4]| | | 2 | ---> 3 | | 8 | | | 2 |
    --------------------- ---------------------
    4 | 2 | 8 | 1 | | 1 | 4 | 2 | 8 | 1 | | 1 |
    --------------------- ---------------------
    5 | 2 | | | | | 5 | 2 | | | | |
    --------------------- ---------------------
  2. Jede Spalte wird von unten her durchgegangen. Ist die Zelle leer, wird der Wert mit der nächstmöglichen, nichtleeren Zelle derselben Spalte getauscht.

         1   2   3   4   5        |         1   2                                 1   2    
--------------------- | ----------- -----------
1 | 2 | 4 | 1 | 8 | 8 | | 1 | 2 | 4 | 1 | 2 | 4 |
--------------------- | ----------- -----------
2 | | 2 | 8 | | 1 | | 2 | | 2 | 2 | | 2 |
--------------------- | ----------- -----------
3 | | 8 | | | 2 | | 3 | | 8 | ---> 3 | | 8 |
--------------------- | ----------- -----------
4 | 2 | 8 | 1 | | 1 | | 4 | 2 | 8 | <-- oberhalb leer? Nein 4 | 2 | | <-- Werte vertauscht
--------------------- | ----------- / ----------- /
--> 5 | 2 | | | | | | 5 | 2 | | <-' 5 | 2 | 8 | <-'
--------------------- | ----------- -----------
^ | ^ ^
| | | |
  1. Alle Zellen werden erneut durchgegangen. Ist eine Zelle leer, so wird eine zufällige ganze Zahl oder 1 als Zellenwert festgelegt. Es kommen also die Zahlen [1, 2, 4], evtl. auch noch die 8 in Frage. Lesen Sie im Kapitel Programmieren > Python > Zufällige Zahlen nach, welche Möglichkeiten zum Erzeugen von zufälligen Zahlen es unter Python gibt.

Aufgabe

Setzen Sie obigen Algorithmus um. Markieren Sie die Aufgabe anschliessend als erledigt.