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..
Kombinationen aus Zahlen 1-16
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
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
"When I got the music, I got a place to go" [Rancid, 1993]
Die Funktion combinations sollte die Antwort sein: https://docs.python.org/3/library/itert ... mbinations
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...
Hallo und guten Tag,__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.
Bis dann...
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.
So lange Zufallszahlen zu würfeln, bis man alle Kombinationen hatte, wird auf jeden Fall noch länger dauern.
- DeaD_EyE
- User
- Beiträge: 1021
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
Dafür sind Generatoren ideal.
Die Anzahl möglicher Kombinationen, kann man mit math.comb(n, k) berechnen.
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))
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
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
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.das habe ich schon probiert ist nicht das was ich suche. Es werden hier alle möglichen Kombinationen zurückgegeben.
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
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.PeterL hat geschrieben: ↑Montag 29. August 2022, 09:12das 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.__deets__ hat geschrieben: ↑Sonntag 28. August 2022, 18:00 Die Funktion combinations sollte die Antwort sein: https://docs.python.org/3/library/itert ... mbinations
kbr hat geschrieben: ↑Montag 29. August 2022, 11:04PeterL hat geschrieben: ↑Montag 29. August 2022, 09:12Hallo und guten Tag,__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:
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...
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
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.
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
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.
Quatsch, alles eine Frage der richtigen Hardware.Die Kombinationen sind viel zu groß das dauert Jahre.
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
- __blackjack__
- User
- Beiträge: 13116
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Hallo und guten Tag,DeaD_EyE hat geschrieben: ↑Montag 29. August 2022, 10:02 Dafür sind Generatoren ideal.
Die Anzahl möglicher Kombinationen, kann man mit math.comb(n, k) berechnen.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))
dein Script schein zu funktionieren danach hatte ich gesucht. Ich teste es mal ausgiebig.
danke dafür...
bis dann...
noisefloor hat geschrieben: ↑Montag 29. August 2022, 10:03 Hallo,
Hallo und guten Tag,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
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..
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.
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.