Autor |
Beitrag |
Mathematiker
Beiträge: 2622
Erhaltene Danke: 1447
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: Di 11.12.18 19:45
Schestex hat folgendes geschrieben : | Hat dieses mathematische Spiel einen speziellen Namen? |
Ja, "lateinische Summen".
U.a. enthalten in "Mathematik alpha" ( mathematikalpha.de/download ) unter dem Menüpunkt Logikspiele/Sudokuähnliche Rätsel und dann Auswahlfeld "Lateinische Summen".
LG Steffen
_________________ Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
|
|
BenBE
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Di 11.12.18 20:07
Mir hat eine kleine Nachlässigkeit gute 15 Minuten gekostet, weil ich einen Teil der Aufgabenstellung mit einer zusätzlichen Einschränkung zuerst übersehen hatte und daher die erste abgetippte Lösung diese Einschränkung nicht beachtet hatte ...
Die zu ergänzen war kurz Copy&Paste und noch mal von Hand die neue Lösung eintragen Aber ohne Automatisiertes Backtracking mittels Computer wäre das doch etwas anstrengend geworden.
Naja, Code zu meiner Lösung poste ich später, wenn der 11. Tag zur allgemeinen Lösungsdiskussion freigegeben ist.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Mathematiker
Beiträge: 2622
Erhaltene Danke: 1447
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: Di 11.12.18 21:50
Hallo,
zu den Lösungen 9. und 10.:
Die Kisten wurden von fast allen erfolgreich verschoben, d.h. eine exakte Lösung ist nicht notwendig.
10.Rätsel:
Die Zahlen 1 bis 7 sind so in die 7 Kreise einzutragen, dass die Summe je dreier Zahlen, die durch eine Strecke miteinander verbunden sind, jeweils 12 ergibt.
Lösung:
In jeder der 5 Dreiersummen kommt jede Zahl 2mal vor, die Zahl im mittleren Kreis 3mal. Die Summe der Zahlen von 1 bis 7 ist 28, die doppelte Summe 56; da auf 60 (5 Dreiersummen zu 12) die Zahl 4 fehlt, muss diese 3mal in der Gesamtsumme vorkommen und steht damit in der Mitte.
Die anderen Zahlen bilden Paare 1-7, 2-6 und 3-5, von denen je drei oben bzw. unten stehen müssen 6-1-5 und 3-7-2. Da es 6 Möglichkeiten gibt die Zahlen 1, 5, 6 zu permutieren und diese entweder oben oder unten stehen, gibt es somit insgesamt 12 verschiedene Lösungen des Rätsels.
Natürlich kann man die Aufgabe auch wieder mit "roher Gewalt" lösen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.Button1Click(Sender: TObject); var a,b,c,d,e,f,g : integer; begin listbox1.Clear; for a:=1 to 7 do begin for b:=1 to 7 do begin if (a<>b) then for c:=1 to 7 do begin if (a<>c) and (b<>c) then for d:=1 to 7 do begin if (a<>d) and (b<>d) and (c<>d) then for e:=1 to 7 do begin if (a<>e) and (b<>e) and (c<>e) and (d<>e) then for f:=1 to 7 do begin for g:=1 to 7 do begin if (a+b+c=12) and (a+d+g=12) and (b+d+f=12) and (c+d+e=12) and (e+f+g=12) then listbox1.Items.add(inttostr(a)+#9+inttostr(b)+#9+inttostr(c)+#9 +inttostr(d)+#9+inttostr(e)+#9+inttostr(f)+#9+inttostr(g)); end; end; end; end; end; end; end; label1.caption:=inttostr(listbox1.Items.Count)+' Möglichkeiten'; end; |
Das heutige Rätsel ist wohl das bisher schwerste. Es sind noch viele Lösungsversuche offen.
Dafür wird es morgen sehr einfach, versprochen.
LG Steffen
Einloggen, um Attachments anzusehen!
_________________ Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Für diesen Beitrag haben gedankt: Hidden
|
|
Hidden
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Di 11.12.18 21:53
10. Zahlenrätsel
Quelltext
{a,b,c,d,e,f,g} = {1,2,3,4,5,6,7}
---
Für {x,y} aus {{a,g}, {b,f}, {c,e}} muss x + d + y = 12 sein. Durchprobieren der Möglichkeiten für d liefert:
d=7: x+y = 5 => Widerspruch für x = 6, da y = -1 sein müsste
d=6: x+y = 6 => Widerspruch für x = 7, da y = -1 sein müsste
d=5: x+y = 7 => Widerspruch für x = 7, da y = 0 sein müsste
d=4: x+y = 8 => {{a,g}, {b,f}, {c,e}} = {{1,7}, {2,6}, {3,5}} (mit Mengenklammern, weil nicht festgelegt ist wie die drei Paare auf die sechs Variablen verteilt sind.)
d=3: x+y = 9 => Widerspruch für x = 1, da y = 8 sein müsste
d=2: x+y = 10 => Widerspruch für x = 1, da y = 9 sein müsste
d=1: x+y = 11 => Widerspruch für x = 2, da y = 9 sein müsste
Also ist d = 4 für alle Lösungen.
---
Die oben erhaltene Gleichung {{a,g}, {b,f}, {c,e}} = {{1,7}, {2,6}, {3,5}} liefert 2^3 = 8 mögliche Kombinationen für {a, b, c} und {e, f, g}:
- {a,b,c}={1,2,3}, {e,f,g}={7,6,5} => a + b + c \ne 12
- {a,b,c}={1,2,5}, {e,f,g}={7,6,3} => a + b + c \ne 12
- {a,b,c}={1,6,3}, {e,f,g}={7,2,5} => a + b + c \ne 12
- {a,b,c}={1,6,5}, {e,f,g}={7,2,3} => a + b + c = 12 = e + f + g
- {a,b,c}={7,2,3}, {e,f,g}={1,6,5} => a + b + c = 12 = e + f + g
- {a,b,c}={7,2,5}, {e,f,g}={1,6,3} => a + b + c \ne 12
- {a,b,c}={7,6,3}, {e,f,g}={1,2,5} => a + b + c \ne 12
- {a,b,c}={7,6,5}, {e,f,g}={1,2,3} => a + b + c \ne 12
Insgesamt: {{a,b,c}, {e,f,g}} = {{1,5,6}, {2,3,7}}.
---
Also gibt es 2 verschiedene Möglichkeiten für {a,b,c}, und 3! = 6 Wege diese drei Zahlen anzuordnen.
Die Anordnung von {e,f,g} wird durch die von {a,b,c} bestimmt. Hier kommen also keine weiteren Kombinationsmöglichkeiten hinzu.
Zusammen: 2 * 6 = 12 Lösungen.
Edit: Wow, Mathematiker's Lösung ist sehr viel schöner und kürzer^^
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Zuletzt bearbeitet von Hidden am Di 11.12.18 21:57, insgesamt 1-mal bearbeitet
|
|
Symbroson
Beiträge: 382
Erhaltene Danke: 67
Raspbian, Ubuntu, Win10
C, C++, Python, JavaScript, Lazarus, Delphi7, Casio Basic
|
Verfasst: Di 11.12.18 21:55
_________________ most good programmers do programming not because they expect to get paid or get adulation by the public, but because it's fun to program. (Linus Torvalds)
|
|
pzktupel
Hält's aus hier
Beiträge: 129
Erhaltene Danke: 30
|
Verfasst: Di 11.12.18 22:13
Lösung Rätsel 10 mal anders mit "Fakultät-Prüfbelegung "
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| DIM AS UBYTE a,b,c,d,e,f,g,v v=0 FOR a=1 TO 7 FOR b=1 TO 7 FOR c=1 TO 7 FOR d=1 TO 7 FOR e=1 TO 7 FOR f=1 TO 7 FOR g=1 TO 7 IF a*b*c*d*e*f*g<>5040 THEN GOTO G IF a+b+c<>12 THEN GOTO G IF e+f+g<>12 THEN GOTO G IF a+d+g<>12 THEN GOTO G IF c+d+e<>12 THEN GOTO G PRINT a,b,c PRINT " ",d PRINT e,f,g v+=1:PRINT "Nr.";v SLEEP G:NEXT g:NEXT f:NEXT e:NEXT d:NEXT c:NEXT b:NEXT a PRINT "Fertig":SLEEP |
Moderiert von Christian S.: Code-Tags hinzugefügt
Zuletzt bearbeitet von pzktupel am Di 11.12.18 22:20, insgesamt 3-mal bearbeitet
Für diesen Beitrag haben gedankt: Mathematiker
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 11.12.18 22:15
- Nachträglich durch die Entwickler-Ecke gelöscht -
Für diesen Beitrag haben gedankt: Mathematiker, Narses
|
|
Mathematiker
Beiträge: 2622
Erhaltene Danke: 1447
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: Di 11.12.18 22:16
Hallo,
pzktupel hat folgendes geschrieben : |
IF a*b*c*d*e*f*g<>5040 THEN GOTO G
|
Die Idee mit dem Test der sieben Zahlen auf Unterschiedlichkeit mit dem Produkt gefällt mir.
Darauf bin nicht gekommen.
LG Steffen
_________________ Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Für diesen Beitrag haben gedankt: pzktupel
|
|
Symbroson
Beiträge: 382
Erhaltene Danke: 67
Raspbian, Ubuntu, Win10
C, C++, Python, JavaScript, Lazarus, Delphi7, Casio Basic
|
Verfasst: Di 11.12.18 22:20
_________________ most good programmers do programming not because they expect to get paid or get adulation by the public, but because it's fun to program. (Linus Torvalds)
|
|
Delphi-Laie
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Di 11.12.18 22:21
Zum Rätsel vom 10.12: Eine siebenfach (!) verschachtelte Schleife, die jeweils von 1 bis 7 läuft, ist ein wenig unelegant und "hyperbrachial", da die sieben Elemente nur permutiert werden müssen.
Bei den Permutationsenumerationsalgorithmen (scheußliches, aber treffendes Wortungetüm) sind die besonders effizient, die auf der Grundlage nur jeweils einer Vertauschung jeweils logischerweise zweier Elemente die nächste Permutation generieren.
Davon sind mir zwei bekannt, einer von Ford & Johnson, der andere von Oleg Victorow. Beide sind in meinem Sortierprogramm implementiert. Ich habe einfach besagtes Programm ein klein wenig "modifiziert", um auf die Anzahl zu kommen.
_________________ Ordnung ist das halbe Leben - und sie zu schaffen die andere Hälfte.
|
|
Mathematiker
Beiträge: 2622
Erhaltene Danke: 1447
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: Di 11.12.18 22:22
_________________ Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
|
|
Symbroson
Beiträge: 382
Erhaltene Danke: 67
Raspbian, Ubuntu, Win10
C, C++, Python, JavaScript, Lazarus, Delphi7, Casio Basic
|
Verfasst: Di 11.12.18 22:24
_________________ most good programmers do programming not because they expect to get paid or get adulation by the public, but because it's fun to program. (Linus Torvalds)
|
|
pzktupel
Hält's aus hier
Beiträge: 129
Erhaltene Danke: 30
|
Verfasst: Di 11.12.18 22:25
Naja, ich bin nicht so der Programmierer, aber auf seltsame Ideen komm ich immer mal
Genauso wie heute der Kracher
|
|
Delphi-Laie
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Di 11.12.18 22:32
Eine kleine Ergonomieverbesserung hätte ich für Programme der Art wie das heutige anzuregen: Wie wäre es, wenn man farblich kennzeichnet, daß die angezeigte Summe von den Umgebungsfeldern überschritten wird? Und / oder, daß mehr als eine gleiche Zahl in eine Reihe bzw. Spalte hineingerutscht ist?
Ich weiß, das schreibt sich so leicht, ist aber nicht immer ganz so simpel zu implementieren.
So, wie es jetzt gelöst ist, was ja sicher schon eine Heidenarbeit war, ist es außer der Lösungsauswertung "nur ein Papierersatz" (nicht abfällig gemeint), ohne jegliche Hilfe des Computers.
Oder ist der Zwang zum ständigen Rechnen Teil des Konzeptes?! Mag sein. Mag aber nicht jeder, das Rechnen....
Wie gesagt, nur als vorsichtige Anregung gemeint.
Gruß Delphi-Laie
_________________ Ordnung ist das halbe Leben - und sie zu schaffen die andere Hälfte.
Zuletzt bearbeitet von Delphi-Laie am Di 11.12.18 22:53, insgesamt 3-mal bearbeitet
|
|
pzktupel
Hält's aus hier
Beiträge: 129
Erhaltene Danke: 30
|
Verfasst: Di 11.12.18 22:40
Ja, da hätte ich auch eine Anmerkung. Zumindest die eigenen Wahl-Zahlen Rot färben.
Das schwarz und dunkelblau ist schwer zu unterscheiden.
|
|
Delphi-Laie
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Di 11.12.18 23:40
_________________ Ordnung ist das halbe Leben - und sie zu schaffen die andere Hälfte.
|
|
BenBE
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mi 12.12.18 00:06
Das Zahlenrätsel vom 10. wanderte bei mir kurzerhand in den Interpreter von SWI Prolog:
zahlen.pl 1: 2: 3: 4: 5: 6: 7:
| g(A, B, C, D, E, F, G) :- permutation([1,2,3,4,5,6,7],[A,B,C,D,E,F,G]), A + B + C =:= 12, A + D + G =:= 12, B + D + F =:= 12, C + D + E =:= 12, E + F + G =:= 12. |
Das einmal in einer Session gegen SWI Prolog geworfen ...
SWI Prolog 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| ?- [zahlen]. true.
?- g(A,B,C,D,E,F,G). A = 1, B = 5, C = 6, D = 4, E = 2, F = 3, G = 7 ; A = 1, B = 6, C = 5, D = 4, E = 3, F = 2, G = 7 ; A = 2, B = 3, C = 7, D = 4, E = 1, F = 5, G = 6 ; A = 2, B = 7, C = 3, D = 4, E = 5, F = 1, G = 6 ; A = 3, B = 2, C = 7, D = 4, E = 1, F = 6, G = 5 ; A = 3, B = 7, C = 2, D = 4, E = 6, F = 1, G = 5 ; A = 5, B = 1, C = 6, D = 4, E = 2, F = 7, G = 3 ; A = 5, B = 6, C = 1, D = 4, E = 7, F = 2, G = 3 ; A = 6, B = 1, C = 5, D = 4, E = 3, F = 7, G = 2 ; A = 6, B = 5, C = 1, D = 4, E = 7, F = 3, G = 2 ; A = 7, B = 2, C = 3, D = 4, E = 5, F = 6, G = 1 ; A = 7, B = 3, C = 2, D = 4, E = 6, F = 5, G = 1 ; false. |
... und man brauchte danach lediglich noch Antworten zählen und die ermittelte Anzahl eintragen ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Für diesen Beitrag haben gedankt: Delphi-Laie, Hidden, Mathematiker, ub60
|
|
Horst_H
Beiträge: 1653
Erhaltene Danke: 243
WIN10,PuppyLinux
FreePascal,Lazarus
|
Verfasst: Mi 12.12.18 08:36
Hallo,
Zu Tag 10: Ich nahm auch permtation, wollte dabei die Zahl der rekursiven Aufrufe möglichst gering halten:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73:
| {$IFDEF FPC}{$MOde Delphi}{$ELSE}{$APPTYPE CONSOLE}{$IFEND} type tElement = NativeUint;
var Zahl : array[0..7] of tElement; cnt,rekCount : NativeInt; function Summe :boolean; Begin result := (Zahl[1]+Zahl[2]+Zahl[3]) =12; If Not result then EXIT; result := (Zahl[1]+Zahl[4]+Zahl[7]) =12; If Not result then EXIT; result := (Zahl[2]+Zahl[4]+Zahl[6]) =12; If Not result then EXIT; result := (Zahl[3]+Zahl[4]+Zahl[5]) =12; If Not result then EXIT; result := (Zahl[5]+Zahl[6]+Zahl[7]) =12; end;
procedure Ausgabe; Begin inc(cnt); writeln('Variante ', cnt); writeln(Zahl[1]:3,Zahl[2]:3,Zahl[3]:3); writeln(Zahl[4]:6); writeln(Zahl[5]:3,Zahl[6]:3,Zahl[7]:3); end; procedure SwapElements(i,j:tElement);inline; var tmp:tElement; Begin if i<>j then Begin tmp := Zahl[i];Zahl[i]:= zahl[j];Zahl[j] := tmp; End; end;
procedure rekurs(i:NativeInt); var j : NativeInt; begin inc(rekCount); j:= i; repeat SwapElements(i,j); case i of 0..2: rekurs(i+1); 3: IF (Zahl[1]+Zahl[2]+Zahl[3]) = 12 then rekurs(4); 4: rekurs(i+1); 5: IF (Zahl[3]+Zahl[4]+Zahl[5]) = 12 then rekurs(6); 6: IF (Zahl[2]+Zahl[4]+Zahl[6]) = 12 then rekurs(7); else If summe then Ausgabe; end; SwapElements(i,j); inc(j); until j>High(Zahl); end;
var i : Integer; Begin cnt := 0; rekCount := 0; For i := 0 to 7 do Zahl[i]:= i; rekurs(1); writeln; writeln('Es gibt ',cnt,' Loesungen'); writeln('Es gab ',rekCount,' rekursive Aufrufe'); end. |
Mit dem Ergebnis:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51:
| Variante 1 1 5 6 4 2 3 7 Variante 2 1 6 5 4 3 2 7 Variante 3 2 3 7 4 1 5 6 Variante 4 2 7 3 4 5 1 6 Variante 5 3 2 7 4 1 6 5 Variante 6 3 7 2 4 6 1 5 Variante 7 5 1 6 4 2 7 3 Variante 8 5 6 1 4 7 2 3 Variante 9 6 5 1 4 7 3 2 Variante 10 6 1 5 4 3 7 2 Variante 11 7 2 3 4 5 6 1 Variante 12 7 3 2 4 6 5 1
Es gibt 12 Loesungen Es gab 308 rekursive Aufrufe |
Gruß Horst
Für diesen Beitrag haben gedankt: Mathematiker
|
|
pzktupel
Hält's aus hier
Beiträge: 129
Erhaltene Danke: 30
|
Verfasst: Mi 12.12.18 11:46
Rätsel 12 von heute:
Es ist in der Tat ein Urlaubstag. Das Prinzip war aus den Vorjahren bereits bekannt, aber man könnte es vom Niveau auch anheben lassen...das macht es dann nicht mehr so einfach.
Wie wäre es, wenn eine minimale Lösung + Spielraum aus der konstanten Anfangssituation nur zuässig ist. Quasi nach x-Zügen muss es gelöst sein. Das würde sich dann von der Schwierigkeit her in die anderen Aufgaben mit einreihen können,oder ?
|
|
Mathematiker
Beiträge: 2622
Erhaltene Danke: 1447
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: Mi 12.12.18 12:42
pzktupel hat folgendes geschrieben : | Es ist in der Tat ein Urlaubstag. |
Warum denn nicht, gestern war doch etwas "anstrengend". Außerdem soll es ja etwas Spaß machen und nicht unbedingt in Stress ausarten.
Aber keine Sorge. Morgen wird es wieder etwas "niveauvoller".
LG Steffen
_________________ Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
|
|
|