Rätsel, Zahlen von 1-9, Summen und Vielfache

Neue Frage »

Zeno-2 Auf diesen Beitrag antworten »
Rätsel, Zahlen von 1-9, Summen und Vielfache
Hallo,

ich weiß zu dem nachfolgenden Rätsel weder, ob es eine Lösung gibt und falls ja, wie man zu dieser gelangt. Sofern das ein bekanntes klassisches Rätsel ist: Google brachte nichts, allerdings führen die Suchworte natürlich zu hunderten entsprechender Hits, so dass ich vielleicht an der falschen Stelle suche.

So, das Rätsel: Die Zahlen von 1-9 sind folgendermaßen angeordnet:



Die bezeichnen also die Zahlen von 1 bis 9. Die Summe der an eine Zahl angrenzenden Nachbarn soll ein vielfaches der Zahl sein, also zum Beispiel oder mit . Die oberste und unterste Zahl grenzt also jeweils an zwei benachbarte Zahlen, die mittlere Zahl grenzt an 6 Nachbarn an und alle übrigen an 3 Nachbarn.

Ich zermatere mir seit Tagen den Kopf, probiere es mit Erzeugenden Funktionen, Matrixalgebra und Graphentheorie sowie schlicht ausprobieren und Zeugs. Aber der Groschen fällt nicht. Hammer

Vermutlich wieder alles trivial. traurig
HAL 9000 Auf diesen Beitrag antworten »

Zitat:
Original von Zeno-2
Ich zermatere mir seit Tagen den Kopf

Tja, ich denke man kann in weniger als einer Stunde ein (Python-)Skript schreiben, welches dann im Bruchteil einer Sekunde die Permutationen durchchecken kann. Eine brutale Lösung, deswegen nennt man sie auch "Brute Force". Augenzwinkern

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
from itertools import permutations

for p in permutations([*range(1,10)], 9):
   if ((p[1]+p[2]) % p[0]) != 0:
       continue
   if ((p[6]+p[7]) % p[8]) != 0:
       continue
   if ((p[0]+p[3]+p[4]) % p[1]) != 0:
       continue
   if ((p[0]+p[4]+p[5]) % p[2]) != 0:
       continue
   if ((p[8]+p[3]+p[4]) % p[6]) != 0:
       continue
   if ((p[8]+p[4]+p[5]) % p[7]) != 0:
       continue
   if ((p[1]+p[4]+p[6]) % p[3]) != 0:
       continue
   if ((p[2]+p[4]+p[7]) % p[5]) != 0:
       continue
   if ((p[1]+p[2]+p[3]+p[5]+p[6]+p[7]) % p[4]) != 0:
       continue
   print(p)

Ergebnis: Keine Permutation erfüllt alle Bedingungen.

Wenn man einzelne Bedingungen weglässt, kann es Lösungen geben: Nimmt man beispielsweise die Bedingung für Zahl mit deren sechs Nachbarn weg, gibt es die 8 Lösungen

(3, 4, 8, 2, 7, 6, 1, 9, 5)
(3, 8, 4, 6, 7, 2, 9, 1, 5)
(4, 3, 5, 1, 7, 9, 2, 6, 8)
(4, 5, 3, 9, 7, 1, 6, 2, 8)
(5, 1, 9, 2, 7, 6, 4, 8, 3)
(5, 9, 1, 6, 7, 2, 8, 4, 3)
(8, 2, 6, 1, 7, 9, 3, 5, 4)
(8, 6, 2, 9, 7, 1, 5, 3, 4)

die durch Spiegelungssymmetrien aber im wesentlichen nur zwei Lösungen darstellen.
SC/MP Auf diesen Beitrag antworten »
Schulmathematik » Algebra » Rätsel, Zahlen von 1-9, Summen und Vielfache
Eine allgemein formulierte Heuristik

Die Kopflösung

Wenn bei der Entwicklung einer persönlichen Aufgabenbeschreibung oder auch eine im Kopf zusammengefassten Aufgabennacherzählung viele "und" und "mal" und "ist" verwendet werden, dann kann dies mit der korrekten Wahrnehmung der Aufgabenstellung genau dann kollidieren, wenn diese Aufgabe auf rein sprachlicher Ebene erfasst wird. Es wird eine visuelle Ebene benötigt, die nicht einfach nur einer Gitterstruktur unterliegt, außer eine Gitterstruktur ist die ideale Lösungsvorgabe für das Problem.

Insofern ist diese dargestellte Struktur sachrichtig, aber löungsabträglich. Eine andere grafische Teildarstellung wäre vermutlich angemessener.

Die Maschinenlösung

Erschwerend ist, wenn man eigene Erfahrungen mit dem schnellen Erstellen von einfach gehaltenen One-Trick-Wegwerf-Programmen hat. Man könnte es als ein klein wenig demotivierend empfinden, sich im Kopf mit der Rechenkraft einer Maschine zu messen, die dieses Problem inklusive Programmerstellung durch reines Ausprobieren löst.
SC/MP Auf diesen Beitrag antworten »

Zitat:
Original von HAL 9000

Tja, ich denke man kann in weniger als einer Stunde ein (Python-)Skript schreiben, welches dann im Bruchteil einer Sekunde die Permutationen durchchecken kann. Eine brutale Lösung, deswegen nennt man sie auch "Brute Force". Augenzwinkern


Da haben sich unsere Antworten überschnitten. Wink
HAL 9000 Auf diesen Beitrag antworten »

Den Python-Code noch etwas aufgehübscht (damit Finn nicht allzu sehr die Nase rümpft):

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
from itertools import permutations

check = {
    0: [1,2],
    8: [6,7],
    1: [0,3,4],
    7: [4,5,8],
    2: [0,4,5],
    6: [3,4,8],
    3: [1,4,6],
    5: [2,4,7],
    4: [1,2,3,5,6,7]
}
for p in permutations([*range(1,10)], 9):
   success = True
   for c in check:
      if (sum(p[a] for a in check[c]) % p[c]) != 0:
          success = False
          break
   if success:          
       print(p)
Zeno-2 Auf diesen Beitrag antworten »

Ok, also keine Lösung. Danke.

Trotzdem ärgert es mich nicht, die kleinen Grauen Zellen waren mal wieder in Arbeit und über den Zusammnehang von Graphen und Lineare Algebare habe ich viel gelernt.

smile
 
 
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »