LabVIEWForum.de - Thread-LVF-Raetselecke

LabVIEWForum.de

Normale Version: Thread-LVF-Raetselecke
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Da hier wohl niemand drauf kommt, bzw. so viel Zeit hat: Die Lösung ist anscheinend 64 und 73

Dort ist eine Programmierlösung:
http://www.fairymail.de/das_hammerharte_...oesung.htm


Falls das jetzt noch einer auf die Schnelle erklären kann, dann Respekt. Big Grin

Gruß Markus


(26.07.2013 10:59 )Trinitatis schrieb: [ -> ]Ich habe ein Rätsel gefunden, dessen Lösung ich allerdings nicht kenne.
Es hört sich aber sehr interessant an. Also, wenn es einer lösen kann - ich bin gespannt, wie die Lösung aussieht.


Peter, Simon und Daniel sollen zwei Zahlen herausfinden. Hierfür erhalten sie folgende Informationen: Beide Zahlen liegen im Bereich von 1 bis 1000, und beide sind ganzzahlig und es wäre auch möglich, dass beide Zahlen identisch sind. Peter erfährt zudem das Produkt der beiden Zahlen, Simon bekommt die Summe, und Daniel die Differenz.

Daraufhin kommt es zu folgendem Gespräch:

Peter: Ich kenne die Zahlen nicht.

Simon: Das brauchst Du mir nicht zu sagen, denn das wusste ich schon.

Peter: Dann kenne ich die Zahlen jetzt.

Simon: Ich kenne sie jetzt auch.

Daniel: Ich kenne die beiden Zahlen noch nicht. Ich kann nur eine Zahl vermuten, die wahrscheinlich dabei ist, aber sicher weiß ich's nicht.

Peter: Ich weiß, welche Zahl Du vermutest, aber die ist falsch.

Daniel: OK, dann kenne ich jetzt auch beide Zahlen.

____________________________________________________________________


Ich habe keinen Schimmer!


Gruß, Marko
Ball flach halten, ich arbeite noch daran, das VI aufzuhübschen, welches die Lösung findet.

Im Prinzip geht das Ganze per Ausschlussverfahren.

Schritt 1: Erzeuge alle Paare a und b, wobei a und b aus der Menge 1-1000 sind und a>=b gilt.
Schritt 2: Berechne zu jedem Paar das Produkt a*b und die Summe a+b. Die Differenz brauchen wir erst einmal nicht.
Schritt 3: Mit der 1. Aussage von Peter können alle Paare (a,b) ausgeschlossen werden, deren Produkt nur 1x vorkommt. Denn sonst könnte Peter das Ergebnis nennen.
Schritt 4: Die 1. Aussage von Simon ermöglicht den Ausschluss von noch mehr Paaren (a,b). Simon wusste auf Grund seiner Summe schon, dass Peter die Lösung nicht kennt. Das bedeutet: Lässt sich mit 2 beliebigen Summanden i,j der Summe, die Simon kennt, ein Produkt bilden, dass welches nur 1x in der Produktmenge vorkommt, dann kann diese Summe und alle Paare (i,j) die zu dieser Summe führen, nicht die Lösung sein. EDIT: Man kann Schritt 3 bei der programmatischen Behandlung weglassen und gleich mit Schritt 4 beginnen.
Schritt 5: Peter kennt jetzt die Lösung: Aus den übriggebliebenen Kombinationen können jetzt alle Produkte gestrichen werden, die mehrfach vorkommen. Das Produkt darf nur 1x vorkommen, sonst würde Peter die Lösung nicht kennen.
Schritt 6: Auch Simon kennt nach dieser Aussage die Lösung: Aus der Restmenge können somit Summen gestrichen werden, die mehrfach vorkommen.
Schritt 7: Jetzt wird für die verbliebenen möglichen Paaren (a,b) jeweils die Differenz gebildet. Da Daniel die Lösung noch nicht kennt, kann die Dfferenz, die er kennt, nicht nur 1x in der Menge vorkommen. Alle einmalig vorkommenden Differenzen können gestrichen werden. Daniel kann nur sagen, dass er für eine Zahl vermutet, dass sie bei der Lösungsmenge dabei ist.
Damit können sogar alle Differenzen gestrichen werden, die genau 2x in der Lösungsmenge vorkommen. Denn entweder bilden die Zahlenpaare (a,b) und (i,j) jeweils die Differenz d, dann sind aber alle Zahlen unterschiedlich, oder die Zahlenpaare lauten (a,b) und (b,j), dann könnte Daniel eine Zahl mit Sicherheit nennen. Das kann er nicht.
Schritt 8: In der Lösung von Markus werden jetzt die verbliebenen Datensätze "manuell" untersucht. Bei der Differenz 21 sind nur Zahlenpaare (a,b) übrig, bei denen a und b immer unterschiedlich sind. Daniel könnte somit nicht sagen, dass eine der Lösungszahlen wahrscheinlicher ist. Also ist 21 nicht die korrekte Differenz. Bleibt die Differenz 9, hier kommt die 32 2x vor. Die wahrscheinlichere Zahl ist aber nicht die Lösung, also muss es 73 & 64 sein.

Dann muss man sich noch vorstellen, dass Peter, Simon und Daniel alle 3 dasselbe Computerprogramm laufen lassen, und somit nach jedem Ausschlussschritt wissen, welche möglichen Lösungsmöglichkeiten für die jeweils anderen beiden zu einem gegeben Schritt noch in Frage kommen.

Gruß, Jens
Krass. Blink Ich würde sagen, Du darfst. Big Grin

Gruß Markus
Wie versprochen, hier ein VI, welches die logischen Aussagen des "hammerharten" Rätsel programmatisch löst.

Vorerst nur als LabVIEW 2012 Version, da ich massiv von den Möglichkeiten des "Conditional Indexing" an Schleifenausgängen Gebrauch gemacht habe.

Das Blockdiagramm ist etwas breiter als gewöhnlich, da ich absichtlich keine SubVIs verwendet habe.

Gruß, Jens

P.S.: Man kann das Rätsel auch mit größeren Zahlenbereichen als 1-1000 noch lösen. Ihr könnt es ja mal ausprobieren.Smilie_sofa
Nachtrag: Und hier noch eine schnelle Nachbearbeitung für LabVIEW 2010.
Respekt. Hut ab. Guru2
Bei 5000 Zahlen rechnet mein Rechner schon ewig. Bei 10000 schmiert er wegen zu wenig Speicher ab (ist aber inzwischen schon ca. 7 bis 8 Jahre alt).
Das muss ich morgen mal mit meinem Arbeitsrechner testen.

Gruß Markus
(29.07.2013 20:41 )Y-P schrieb: [ -> ]Respekt. Hut ab. Guru2
Bei 5000 Zahlen rechnet mein Rechner schon ewig. Bei 10000 schmiert er wegen zu wenig Speicher ab (ist aber inzwischen schon ca. 7 bis 8 Jahre alt).
Das muss ich morgen mal mit meinem Arbeitsrechner testen.
Ja, nicht zu hoch gehen mit der Eingabe. Das VI ist NICHT auf Speicherverbrauch optimiert, im Gegenteil. Um am Anfang schnell die Häufigkeiten der möglichen Produkte zu zählen, wird der Einfachheit halber ein Array der Größe "x^2" initialisiert, bei 10000 sind das schon mal knapp 400 MB. Dann werden gnadenlos alle Paare, Produkte und Summen erzeugt, bei 10000 sind das insgesamt 10000*10001/2 Paare + Summen + Produkte, belegt auch noch mal ca. 800 MB.
EDIT: Es ist mit einem Speicherverbrauch von mind. 12*x^2 Bytes zu rechnen, durch die Build-Array-Funktionen in der ersten Loop sogar mehr. Aber ich hatte keine Lust mehr, das zu optimieren.

Ich komme übrigens schon viel früher auf keine eindeutige Lösung mehr, also etwas kleinere Brötchen backen. Badewanne_2_2

Gruß, Jens
Du darfst, Jens.

Gruß Markus
Eigentlich darfst du, Markus.
Du hast das Rätsel davor gelöst und auch Knobelrätsel die Lösung gepostet.

Aber da ich noch keine Antwort hierdrauf bekommen habe:
Zitat:P.S.: Man kann das Rätsel auch mit größeren Zahlenbereichen als 1-1000 noch lösen. Ihr könnt es ja mal ausprobieren.
machen wir das zum neuen Rätsel.

Was ist die größte Zahl zwischen 1000 und 2000, für die man das hammerharte Zahlenrätsel auch noch lösen kann.

Gruß, Jens
Wie gesagt, ich habe mit Deinem Bsp. sogar bei 5000 Werten noch "eine" Lösung gekriegt.

Gruß Markus

(05.08.2013 08:43 )jg schrieb: [ -> ]Was ist die größte Zahl zwischen 1000 und 2000, für die man das hammerharte Zahlenrätsel auch noch lösen kann.
Referenz-URLs