Seite 1 von 1

Kombinationen aus Zahlen 1-16

Verfasst: Sonntag 28. August 2022, 15:33
von PeterL
Hallo und guten Tag,

ich möchte aus einer Zahlenkombination, Zahlen von 1-16. In vierer paaren.

x=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16

Alle Kombination berechnen wo die gleiche Quersumme enthalten ist. Quersumme 34.
Ohne doppelte.
Z.b:

5 4 16 9
14 12 7 1
10 15 6 3
11 2 8 13

4 7 9 14
2 13 16 3
1 15 12 6
11 5 8 10

Weis jemand wie man das berechnen kann, oder nach was ich genau bei Google suchen muss.
Ich habe dort leider nichts gefunden. Gibt es ein Modul für sowas ?

Danke..

Re: Kombinationen aus Zahlen 1-16

Verfasst: Sonntag 28. August 2022, 16:12
von PeterL
Hallo Leute,

ich habe schon etwas bei Google gefunden benötige keine Hilfe mehr...

danke...

Re: Kombinationen aus Zahlen 1-16

Verfasst: Sonntag 28. August 2022, 17:29
von PeterL
Hallo Leute,

ich war wohl doch etwas voreilig.
Das Beispiel was ich bei Google gefunden hatte geht nicht.
Kann mir irgendjemand helfen ?

danke...

Re: Kombinationen aus Zahlen 1-16

Verfasst: Sonntag 28. August 2022, 17:37
von Dennis89
Hallo,

hast du denn irgendeine Idee oder schon etwas probierten Code, das man sieht an welcher Stelle du genau nicht weiter kommst?

Oder willst du die vollständige fertige Lösung?

Grüße
Dennis

Re: Kombinationen aus Zahlen 1-16

Verfasst: Sonntag 28. August 2022, 18:00
von __deets__
Die Funktion combinations sollte die Antwort sein: https://docs.python.org/3/library/itert ... mbinations

Re: Kombinationen aus Zahlen 1-16

Verfasst: Montag 29. August 2022, 09:09
von PeterL
Dennis89 hat geschrieben: Sonntag 28. August 2022, 17:37 Hallo,

hast du denn irgendeine Idee oder schon etwas probierten

Oder willst du die vollständige fertige Lösung?

Grüße
Dennis
Hallo und guten Tag,

ich habe schon einiges versucht. Derzeit lasse ich die Quersummen per Zufall ermitteln.
Bei Zahlen von 1-16 und 4rer Paaren geht's schnell. Wenn die Zahlenliste aber größer ist und die Paare auch, dann weis ich eigentlich gar nicht wie lange ich die Schleife durchlaufen lassen soll. Da ich auch nicht weis wie viele Kombinationen es mit der selben Quersumme gibt. Per Zufall ist das halt ein Glücksspiel.
Rein Mathematisch kann es bestimmt berechnet werden, wie viele Kombinationen es gibt. Nur leider weis ich auch nicht was ich bei Google eintippen soll um etwas zu finden. Wenn ich wüste wie viele Kombinationen es gibt, dann könnte man das abfragen, und die schleife verlassen.


Bis dann...

Re: Kombinationen aus Zahlen 1-16

Verfasst: Montag 29. August 2022, 09:12
von PeterL
__deets__ hat geschrieben: Sonntag 28. August 2022, 18:00 Die Funktion combinations sollte die Antwort sein: https://docs.python.org/3/library/itert ... mbinations
Hallo und guten Tag,

das habe ich schon probiert ist nicht das was ich suche. Es werden hier alle möglichen Kombinationen zurückgegeben. Man könnte natürlich die Quersumme ausrechnen lassen. Bei kleinen Zahlenreihen und kleinen Paaren geht das. Bei größeren Zahlenlisten und großen Paaren kann man das vergessen es gibt dafür zu viele Kombinationen.

Bis dann...

Re: Kombinationen aus Zahlen 1-16

Verfasst: Montag 29. August 2022, 09:31
von Sirius3
Was anderes, als alle Kombinationen durchzuprobieren, wird es nicht geben. Bei gegebener Quersumme kann man die Liste der durchzuprobierenden Tuple noch etwas einschränken, das geht mit combinations nicht mehr, aber diese Funktionalität selbst zu programmieren ist ja auch nicht all zu schwer. Da Du aber bisher wenig Initiative gezeigt hast, Dich auf das Forum hier einzulassen, habe ich aber keine Lust, das näher zu erklären-
So lange Zufallszahlen zu würfeln, bis man alle Kombinationen hatte, wird auf jeden Fall noch länger dauern.

Re: Kombinationen aus Zahlen 1-16

Verfasst: Montag 29. August 2022, 10:02
von DeaD_EyE
Dafür sind Generatoren ideal.

Code: Alles auswählen

from itertools import combinations, islice


def generator(value_range, row_size, qsum):
    for values in combinations(value_range, r=row_size):
        if sum(values) == qsum:
            yield values



value_range = range(1, 17)
row_size = 4
qsum = 34

# 10 ergebnisse
result = list(islice(generator(value_range, row_size, qsum), 0, 10))
Die Anzahl möglicher Kombinationen, kann man mit math.comb(n, k) berechnen.

Re: Kombinationen aus Zahlen 1-16

Verfasst: Montag 29. August 2022, 10:03
von noisefloor
Hallo,
das habe ich schon probiert ist nicht das was ich suche. Es werden hier alle möglichen Kombinationen zurückgegeben.
Was schwebt dir denn vor? Der grandiose Vorteil ist, dass dir `combinations` garantiert kein doppelten 4er-Paare zurückliefert - was um Längen effizienter ist das dein Ansatz mit den Zufallszahlen, der definitiv keine vorhersehbare Laufzeit hat.

Und die Summe berechnen ist ja kein Akt. Und ja, eine längere Liste von Zahlen gibt halt mehr Kombination. Die Größe der Zahlen ist sekundär. Was definitiv hilft: eine CPU mit hoher Singlethreadperformance...

Was ist eigentlich das Ziel des ganzen? Lösen eines Rätsel eines Geocaches?

Gruß, noisefloor

Re: Kombinationen aus Zahlen 1-16

Verfasst: Montag 29. August 2022, 11:04
von kbr
PeterL hat geschrieben: Montag 29. August 2022, 09:12
__deets__ hat geschrieben: Sonntag 28. August 2022, 18:00 Die Funktion combinations sollte die Antwort sein: https://docs.python.org/3/library/itert ... mbinations
das habe ich schon probiert ist nicht das was ich suche. Es werden hier alle möglichen Kombinationen zurückgegeben. Man könnte natürlich die Quersumme ausrechnen lassen. Bei kleinen Zahlenreihen und kleinen Paaren geht das. Bei größeren Zahlenlisten und großen Paaren kann man das vergessen es gibt dafür zu viele Kombinationen.
Doch, das ist das, was Du suchst – oder Du hast nicht verständlich genug erklärt, was Du wirklich möchtest. Es sind auch nicht so furchtbar viele Kombinationen: in Deinem Fall ganze 86 (welche die Quersumme erfüllen). Wenn Du die Bedingung einer Quersumme hast, dann musst Du diese auch berechnen – unabhängig davon, ob nun wenige oder viele Kombinationen zu betrachten sind.

Re: Kombinationen aus Zahlen 1-16

Verfasst: Montag 29. August 2022, 13:59
von PeterL
kbr hat geschrieben: Montag 29. August 2022, 11:04
PeterL hat geschrieben: Montag 29. August 2022, 09:12
__deets__ hat geschrieben: Sonntag 28. August 2022, 18:00 Die Funktion combinations sollte die Antwort sein: https://docs.python.org/3/library/itert ... mbinations


Doch, das ist das, was Du suchst – oder Du hast nicht verständlich genug erklärt, was Du wirklich möchtest. Es sind auch nicht so furchtbar viele Kombinationen:
Hallo und guten Tag,

wenn ich aus Zahlen von 1-100 alle Zahlenpaare mit 10 ermitteln lassen möchte sind das 17.310.309.456.440 Kombinationen.
Ich müsste dann bei jedem 10ner Parr die Quersumme errechnen. Die Kombinationen sind viel zu groß das dauert Jahre.
Ich möchte eigentlich nur aus den Zahlen von 1-100 , oder andere Zahlenfolgen die Quersumme der Zahlenpaare ermitteln,ohne alle Kombinationen durchrechnen zu müssen.

Bis dann...

Re: Kombinationen aus Zahlen 1-16

Verfasst: Montag 29. August 2022, 14:16
von noisefloor
Hallo,

was erwartest du denn? Das der Computer das automagisch macht, ohne zu rechnen? Sirius3 hat dir auch schon was gesagt zu Ausschlusskriterien, die du aber selber programmieren musst. Wenn z.B. die Quersumme gerade ist, musst du auch eine gerade Zahl von geraden und ungeraden Zahlen in der Folge haben (wenn die Folge eine gerade Anzahl Elemente hat) bzw eine ungerade Anzahl von geraden Zahlen (wenn die Folge eine ungerade Anzahl von Elementen hat).
Wenn du von 1-1000 gehtst, 10 Element in der Folge hast und die Quersumme 500 ist, dann können keine Zahlen >455 in der Folge auftauchen. Und so weiter.
Die Kombinationen sind viel zu groß das dauert Jahre.
Quatsch, alles eine Frage der richtigen Hardware.

Warum weigerst du die eigentlich zu sagen, was du wirklich vorhast? Ist das irgendwas illegales, probierst du irgendwas mit brute force zu knacken?

Gruß, noisefloor

Re: Kombinationen aus Zahlen 1-16

Verfasst: Montag 29. August 2022, 15:12
von __blackjack__
@noisefloor: 1-1000, 10 Elemente pro Reihe, und Quersumme 500 ist ganz schnell ”berechnet”: das geht gar nicht, weil die Zahlen >455 nicht verwendet werden können. Da braucht mal also gar nicht erst anfangen. 🤓

Re: Kombinationen aus Zahlen 1-16

Verfasst: Montag 29. August 2022, 15:20
von PeterL
DeaD_EyE hat geschrieben: Montag 29. August 2022, 10:02 Dafür sind Generatoren ideal.

Code: Alles auswählen

from itertools import combinations, islice


def generator(value_range, row_size, qsum):
    for values in combinations(value_range, r=row_size):
        if sum(values) == qsum:
            yield values



value_range = range(1, 17)
row_size = 4
qsum = 34

# 10 ergebnisse
result = list(islice(generator(value_range, row_size, qsum), 0, 10))
Die Anzahl möglicher Kombinationen, kann man mit math.comb(n, k) berechnen.
Hallo und guten Tag,

dein Script schein zu funktionieren danach hatte ich gesucht. Ich teste es mal ausgiebig.
danke dafür...
bis dann...

Re: Kombinationen aus Zahlen 1-16

Verfasst: Montag 29. August 2022, 15:22
von PeterL
noisefloor hat geschrieben: Montag 29. August 2022, 10:03 Hallo,
Und die Summe berechnen ist ja kein Akt. Und ja, eine längere Liste von Zahlen gibt halt mehr Kombination. Die Größe der Zahlen ist sekundär. Was definitiv hilft: eine CPU mit hoher Singlethreadperformance...

Was ist eigentlich das Ziel des ganzen? Lösen eines Rätsel eines Geocaches?

Gruß, noisefloor
Hallo und guten Tag,

das Ziel des ganzen ist soll sein...
Ich beschäftige mich mit Magischen Quadraten. Ich versuche welche zu generieren. Auch mit größeren Zahlenreihen.

bis dann..

nezzcarth

Verfasst: Montag 29. August 2022, 18:38
von nezzcarth
PeterL hat geschrieben: Sonntag 28. August 2022, 15:33 Alle Kombination berechnen wo die gleiche Quersumme enthalten ist. Quersumme 34.
Ohne doppelte.
Z.b:

5 4 16 9
14 12 7 1
Den Begriff Quersumme finde ich hier etwas irreführend, da er nicht zu den gezeigten Beispielen passt. Die Quersumme ist die Summe der Ziffern. Aufgrund der Leerzeichen lässt sei sich streng genommen eigentlich nicht berechnen. Wenn man diese ignoriert, sind die Quersumme der beiden Zeilen 25 und 16. Um jeweils auf 34 zu kommen, muss man einfach nur die Summe der Zahlen bilden. Dafür gibt es in Python das Built-in "sum", das auch schon in ein vorherigen Post gezeigt wurde.

Re: Kombinationen aus Zahlen 1-16

Verfasst: Montag 29. August 2022, 21:00
von bb1898
PeterL hat geschrieben: Montag 29. August 2022, 15:22 Hallo und guten Tag,

das Ziel des ganzen ist soll sein...
Ich beschäftige mich mit Magischen Quadraten. Ich versuche welche zu generieren. Auch mit größeren Zahlenreihen.

bis dann..
Ich habe den einschlägigen Wikipedia-Artikel jetzt nicht gründlich gelesen. Mir scheint aber doch ziemlich klar, dass die gängigen Konstruktionsverfahren für Magische Quadrate Deine Kombinations-Suche nicht brauchen. https://de.wikipedia.org/wiki/Magisches_Quadrat sieht mir aus wie ein guter Ausgangspunkt. Dann habe ich noch dies hier gefunden, das setzt sehr wenig Mathematik voraus: Ein magisches Quadrat lösen. Mit "lösen" ist hier schon das gemeint, was Du - m.E. richtiger - generieren nennst.

Übrigens: Du hättest wahrscheinlich von Anfang an passendere Antworten bekommen, wenn Du gleich gesagt hättest, dass es Dir darum geht. Am besten, wie immer, sofort im Betreff. Und wieso eigentlich niemand in dieser Diskussion gegen den Ausdruck "Paar" für Gruppen von mehr als zwei Zahlen protestiert hat, ist mir ein Rätsel.