1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Community
  3. Smalltalk

Rätsel

  • Dimitrij
  • 6. Oktober 2017 um 18:03
  • Unerledigt
  • Dimitrij
    7
    Dimitrij
    Mitglied
    Reaktionen
    12
    Punkte
    437
    Beiträge
    73
    • 6. Oktober 2017 um 18:03
    • #1

    Die berühmten Mathematiker Carl Friedrich Gauß und Leonhard Euler landen nach ihrem Tod in der Hölle. Luzifer verspricht ihnen die Freiheit, wenn sie ihm die beiden ganzen Zahlen (größer als 1 und kleiner als 100) sagen, die er sich ausgedacht hat. Er nennt Gauß das Produkt und Euler die Summe der beiden Zahlen; daraufhin entwickelt sich zwischen den Mathematikern der folgende Dialog:

    Gauß: „Ich kenne die beiden Zahlen nicht.“

    Euler: „Das war mir klar.“

    Gauß: „Jetzt kenne ich die beiden Zahlen.“

    Euler: „Dann kenne ich sie jetzt auch.“

    Wie lauten die beiden Zahlen?

    Dieses Rätsel stammt von Hans Freudenthal.

    de.lernu.net, lingwadeplaneta.info

  • Adok
    20
    Adok
    Mitglied
    Reaktionen
    49
    Punkte
    4.199
    Beiträge
    714
    • 9. Oktober 2017 um 07:17
    • #2

    Ich habe momentan keine Zeit, mich dem Rätsel ausführlich zu widmen...

    Spoiler anzeigen

    Aber klar ist, dass nach Aussage 1 es ausgeschlossen ist, dass beide Zahlen Primzahlen sind, sonst wäre ihr Produkt eindeutig.
    Aussage 2 bedeutet, dass die Summe der beiden Zahlen nicht der Summe zweier Primzahlen entspricht.
    Nun muss man eine Liste der Zahlen 2 bis 99 anfertigen und jene Zahlen durchstreichen, die ausgeschlossen sind.

  • Dimitrij
    7
    Dimitrij
    Mitglied
    Reaktionen
    12
    Punkte
    437
    Beiträge
    73
    • 9. Oktober 2017 um 17:54
    • #3
    Zitat von Adok

    Ich habe momentan keine Zeit, mich dem Rätsel ausführlich zu widmen...

    Spoiler anzeigen

    Aber klar ist, dass nach Aussage 1 es ausgeschlossen ist, dass beide Zahlen Primzahlen sind, sonst wäre ihr Produkt eindeutig.
    Aussage 2 bedeutet, dass die Summe der beiden Zahlen nicht der Summe zweier Primzahlen entspricht.
    Nun muss man eine Liste der Zahlen 2 bis 99 anfertigen und jene Zahlen durchstreichen, die ausgeschlossen sind.

    Das ist schon mal ein guter Anfang.

    Ein Tipp:

    Spoiler anzeigen

    Christian Goldbach

    de.lernu.net, lingwadeplaneta.info

  • emptyvi
    14
    emptyvi
    Logo 2012, Platz 2.
    Reaktionen
    102
    Punkte
    2.037
    Beiträge
    374
    • 9. Oktober 2017 um 23:44
    • #4

    Ich hab das ganze Mal informatisch-unmathematisch gelöst. Im folgenden zwei Spoiler:

    • Zuerst die 15 Zeilen Ruby-Code, die die Lösung generieren (die beiden verwendeten Hashes sind nur Buffer um die Berechnung zu beschleunigen)
    • Danach das gleiche nur kommentiert


    Ich möchte explizit die Lösung selbst hier nicht angeben (die sieht man ohnehin, wenn man den Code ausführt), da die Spoilergefahr trotz Spoiler-Tags relativ hoch ist und ich das Rätsel zu schön finde, um jemandem gleich die Lösung zu spoilern.

    Unkommentierter Code der die Lösung ausgibt

    Spoiler anzeigen


    combinations = (2..99).to_a.repeated_combination(2)


    additions = Hash.new { |h, k| h[k] = combinations.select {|a,b| a+b == k} }
    multiplications = Hash.new { |h, k| h[k] = combinations.select {|a,b| a*b == k} }
    combinations = combinations.select { |a,b| multiplications[a*b].size > 1}.select {|a,b|
    additions[a+b].all? {|c,d| multiplications[c*d].size > 1}
    }


    multiplications = Hash.new { |h, k| h[k] = combinations.select {|a,b| a*b == k} }
    combinations = combinations.select {|a,b| multiplications[a*b].size == 1 }


    additions = Hash.new { |h, k| h[k] = combinations.select {|a,b| a+b == k} }
    combinations = combinations.select {|a,b| additions[a+b].size == 1}


    p combinations

    Kommentierter Code der die Lösung ausgibt:

    Spoiler anzeigen


    combinations = (2..99).to_a.repeated_combination(2)


    # Generiere Buffer-Hashes, um die Berechnung zu beschleunigen
    additions = Hash.new { |h, k| h[k] = combinations.select {|a,b| a+b == k} }
    multiplications = Hash.new { |h, k| h[k] = combinations.select {|a,b| a*b == k} }


    combinations = combinations.select { |a,b|
    # Gauss geht von allen möglichen Kombinationen aus, die
    # das Produkt seiner Zahl ergeben könnten und sagt, dass
    # er die Zahl nicht kenne --> Es muss mehrere
    # Zahlen geben, die zum gleichen Produkt führen, sonst
    # könnte er bereits jetzt die Zahlen eindeutig bestimmen
    multiplications[a*b].size > 1
    }.select {|a,b|
    # Euler meinte, dass er schon vor der Aussage von Gauss
    # gewusst habe, dass dieser die Antwort nicht kennen kann.
    # --> Jede mögliche Kombination der beiden Zahlen die die
    # ihm bekannte Summe ergibt, hat ein zugehöriges Produkt, aus
    # dem die Zahlen nicht eindeutig geschlossen werden können
    # (siehe vorherigen Punkt)
    additions[a+b].all? {|c,d| multiplications[c*d].size > 1}
    }


    # Die kommende Aussage von Gauss bezieht sich auf den Informationsstand nach der
    # Aussage von Euler, die die möglichen Kombinationen wesentlich einschränkt.
    multiplications = Hash.new { |h, k| h[k] = combinations.select {|a,b| a*b == k} }


    combinations = combinations.select {|a,b|
    # Gauss kennt jetzt eine eindeutige Lösung --> Für das Produkt, das Gauss kennt
    # gibt es also nach der Information von Gauss nur noch eine einzige Kombination
    # mit diesem Produkt
    multiplications[a*b].size == 1
    }


    # Die kommende Aussage von Euler bezieht sich auf den Informationsstand nach
    # Gauss' voriger Aussage.
    additions = Hash.new { |h, k| h[k] = combinations.select {|a,b| a+b == k} }


    combinations = combinations.select {|a,b|
    # Euler kann jetzt ebenfalls eine eindeutige Lösung bestimmen.
    additions[a+b].size == 1
    }


    p combinations


    ¤¸¸.•´¯`•¸¸.•..>> Join the herd, join "My Little Pony @ TU-Wien" <<..•.¸¸•´¯`•.¸¸¤
    ¤¸¸.•´¯`•¸¸.•..>> (100% Twilight Sparkle approved) <<..•.¸¸•´¯`•.¸¸¤


    PP-Tutor WS2011 - WS2014
    EVC-Tutor SS2015


  • emptyvi
    14
    emptyvi
    Logo 2012, Platz 2.
    Reaktionen
    102
    Punkte
    2.037
    Beiträge
    374
    • 10. Oktober 2017 um 01:15
    • #5

    Und weil mir etwas langweilig war, noch eine weitere Codevariante:

    Spoiler anzeigen


    additions = Hash.new { |h, k| h[k] = [] }
    multiplications = Hash.new { |h, k| h[k] = [] }


    (2..99).to_a.repeated_combination(2).each do |a,b|
    combo = {a: a, b: b, active: true}
    additions[a+b] << combo
    multiplications[a * b] << combo
    end


    multiplications.each { |_, combos|
    combos.each {|c| c[:active] = false } unless combos.size > 1
    }
    additions.each {|sum, combos|
    combos.each {|c| c[:active] = false } unless combos.all? {|c| multiplications[c[:a] * c[:b]].size > 1 }
    }
    multiplications.each {|product, combos|
    combos.each {|c| c[:active] = false } unless combos.select {|c| c[:active]}.size == 1
    }
    additions.each {
    |sum, combos| combos.each {|c| c[:active] = false } unless combos.select {|c| c[:active]}.size == 1
    }


    p additions.values.flatten.select {|c| c[:active] }


    ¤¸¸.•´¯`•¸¸.•..>> Join the herd, join "My Little Pony @ TU-Wien" <<..•.¸¸•´¯`•.¸¸¤
    ¤¸¸.•´¯`•¸¸.•..>> (100% Twilight Sparkle approved) <<..•.¸¸•´¯`•.¸¸¤


    PP-Tutor WS2011 - WS2014
    EVC-Tutor SS2015


  • Dimitrij
    7
    Dimitrij
    Mitglied
    Reaktionen
    12
    Punkte
    437
    Beiträge
    73
    • 10. Oktober 2017 um 20:17
    • #6

    So geht's natürlich auch. Das Ergebnis stimmt.
    Man kann die Programme z.B. hier ausführen: https://repl.it/languages/ruby

    de.lernu.net, lingwadeplaneta.info

  • Adok
    20
    Adok
    Mitglied
    Reaktionen
    49
    Punkte
    4.199
    Beiträge
    714
    • 11. Oktober 2017 um 04:36
    • #7
    Zitat von Dimitrij

    Das ist schon mal ein guter Anfang.

    Ein Tipp:

    Spoiler anzeigen

    Christian Goldbach


    Danke für den Tipp.

    Spoiler anzeigen

    "Jede gerade Zahl, die größer als 2 ist, ist Summe zweier Primzahlen." So lautet die Goldbachsche Vermutung. Somit können wir schon alle gerade Zahlen als mögliche Summen ausschließen.

  • Adok
    20
    Adok
    Mitglied
    Reaktionen
    49
    Punkte
    4.199
    Beiträge
    714
    • 11. Oktober 2017 um 05:02
    • #8
    Spoiler anzeigen

    Gauß weiß nach Eulers Aussage also: Die Summe ist ungerade.
    Da er nun die Zahlen kennt, muss sich das Produkt auf verschiedene Arten zerlegen lassen, aber nur eine Art ergibt eine ungerade Summe.
    Eine Summe ist nur dann ungerade, wenn ein Summand gerade ist und der andere ungerade.
    Das bedeutet, dass das Produkt gerade ist.
    Ferner bedeutet es, dass jede Zerlegung des Produkts in zwei Zahlen zu zwei geraden Zahlen führen würde, außer einer bestimmten Zerlegung.
    Somit muss eine der beiden Zahlen entweder 2 sein und die andere Zahl eine ungerade Zahl.
    In diesem Fall muss die ungerade Zahl muss zumindest das Produkt zweier ungerader Primzahlen sein. Es kann sich aber auch um eine Quadratzahl handeln.
    Es kann aber auch eine der beiden Zahlen eine Zweierpotenz sein und die andere Zahl eine Primzahl.

    Weiter weiß ich momentan nicht.

  • Dimitrij
    7
    Dimitrij
    Mitglied
    Reaktionen
    12
    Punkte
    437
    Beiträge
    73
    • 11. Oktober 2017 um 18:29
    • #9

    Es ist nicht so einfach, wie ich dachte. Ich bin zwar auf die richtige Lösung gekommen, aber der Weg war doch nicht ganz logisch. Vielleicht gibt es keinen einfachen Weg. Der Weg von emptyvi ist wohl der beste.

    de.lernu.net, lingwadeplaneta.info

  • Dimitrij
    7
    Dimitrij
    Mitglied
    Reaktionen
    12
    Punkte
    437
    Beiträge
    73
    • 11. Oktober 2017 um 19:06
    • #10

    Hier ist ein anderes, einfacheres Rätsel. Vielleicht kennt ihr es schon, denn es war vor zwei Jahren in den Medien.

    Albert and Bernard have just become friends with Cheryl, and they want to know when her birthday is. Cheryl gives them a list of 10 possible dates:

    [TABLE='class: grid, width: 200, align: left']

    [tr][td]

    May

    [/td][td][/td][td]

    15

    [/td][td]

    16

    [/td][td][/td][td][/td][td]

    19

    [/td][/tr][tr][td]

    June

    [/td][td][/td][td][/td][td][/td][td]

    17

    [/td][td]

    18

    [/td][td][/td][/tr][tr][td]

    July

    [/td][td]

    14

    [/td][td][/td][td]

    16

    [/td][td][/td][td][/td][td][/td][/tr][tr][td]

    August

    [/td][td]

    14

    [/td][td]

    15

    [/td][td][/td][td]

    17

    [/td][td][/td][td][/td][/tr]


    [/TABLE]


    Cheryl then separately tells Albert the month and Bernard the day of her birthday.

    Albert: I don't know when Cheryl's birthday is, but I know that Bernard doesn't know either.

    Bernard: At first I didn't know when Cheryl's birthday is, but I know now.

    Albert: Then I also know when Cheryl's birthday is.

    So when is Cheryl's birthday?

    de.lernu.net, lingwadeplaneta.info

  • emptyvi
    14
    emptyvi
    Logo 2012, Platz 2.
    Reaktionen
    102
    Punkte
    2.037
    Beiträge
    374
    • 12. Oktober 2017 um 02:17
    • #11

    Ich kannte es noch nicht, aber das Prinzip der Hinweise ist ähnlich, aber sehr viel leichter zu "berechnen". Find ich cool! :grinning_squinting_face:
    Meine Lösung:

    Spoiler anzeigen


    16. Juli


    Weg: Albert kann vom Monat unmöglich auf den Tag kommen, aber mit seiner Aussage, dass er sicher ist,
    dass Bernhard es auch nicht weiß, schließt er Mai und Juni aus (der 18. und 19. kommen jeweils nur einmal vor.
    Bleiben Juli und August. Bernhard sagt nun, dass er das Datum jetzt kenne, was wiederum den 14. ausschließt
    (den gibt es sowohl im Juli wie auch August). Es bleiben 15. und 17. August sowie 16. Juli. Nachdem Albert jetzt
    aber das Datum auch weiß, muss Cheryl ihm den Juli genannt haben (da im August noch zwei Tage zur Auswahl
    stünden). Es bleibt der 16. Juli übrig.


    ¤¸¸.•´¯`•¸¸.•..>> Join the herd, join "My Little Pony @ TU-Wien" <<..•.¸¸•´¯`•.¸¸¤
    ¤¸¸.•´¯`•¸¸.•..>> (100% Twilight Sparkle approved) <<..•.¸¸•´¯`•.¸¸¤


    PP-Tutor WS2011 - WS2014
    EVC-Tutor SS2015


    Einmal editiert, zuletzt von emptyvi (12. Oktober 2017 um 12:24) aus folgendem Grund: Zeilenumbrüche eingefügt.

  • Adok
    20
    Adok
    Mitglied
    Reaktionen
    49
    Punkte
    4.199
    Beiträge
    714
    • 12. Oktober 2017 um 12:12
    • #12
    Spoiler anzeigen

    Nur wenn der Geburtsmonat Mai oder Juni wäre, könnte Bernard das Geburtsdatum kennen,
    weil nur in diesen beiden Monaten Tage vorkommen, die in jeweils keinem anderen Monat vorkommen.

    Also ist der Geburtsmonat Juli oder August.

    Da Bernard nun die Lösung kennt, kann es sich nicht um den 14. handeln.

    Wenn dieses Wissen dazu führt, dass auch Albert nun die Lösung kennt, kann es sich nur um den 16. Juli handeln,
    denn wenn es ein Tag im August wäre, wäre die Lösung nicht eindeutig.

  • Adok
    20
    Adok
    Mitglied
    Reaktionen
    49
    Punkte
    4.199
    Beiträge
    714
    • 17. November 2017 um 03:27
    • #13

    Ich bin jetzt darauf gekommen, dass ich das ursprüngliche Rätsel (Posting #1) schon einmal gelöst habe. Ich habe am 15. März 2005 darüber in meinem Blog geschrieben.

    Zitat

    As promised, here's the task 6 of the quiz from the current issue of the magazine of the Austrian high intelligence society:

    "We're looking for two numbers. Everybody knows that they are two different numbers, that they are integers, that they are greater than 1, and that person 1 knows only the sum of the two numbers, while person 2 knows only the product of the two numbers. Now the following dialogue happens:

    1: 'I don't know either number.'
    2: 'Me neither.'
    1: 'Well, now I know both numbers!'
    2: 'So do I!'

    Assume that both persons are extremely good at logical thinking. So what are the numbers?"

    Solution:

    Let's check out the dialogue: Person 1 knows the sum s, but isn't able to deduce the two numbers from it. So there are at least two possibilities to compute the sum. Thus the possibilities 2+3 and 2+4 are obsolete.

    Person 2 knows the product p, but isn't able to deduce the two numbers from it. So there are at least two possibilities to compute the product. From this follows:

    1. At least one of the two numbers is not a prime number.
    2. If one of the two numbers - let's call it n - is a prime number, the other number must not be n^2.
    3. If one of the two numbers - let's call it n - is a prime number, the other number must not be n^3.

    After both persons announce that they don't know the numbers, person 1 is able to deduce the numbers.

    As person 1 is extremely good at logical thinking, he/she is aware of the facts presented above. So the fact that person 1 is now able to deduce the numbers means that all possibilities to compute s except one involve either two prime numbers or one prime number n and n^2 or one prime number n and n^3. There are only the following possible values for s:

    Step 1. Just one possibility not involving two prime numbers:

    7=(2+5)=3+4
    8=2+6=(3+5)

    There are no other possibilities because for any s > 8 there are at least two ways to compute the number as the sum of two non-prime numbers. Proof for all s != 12: s - 4 > 0 and s - 4 != 4 and s - 6 > 0 and s - 6 != 6. It's also easy to prove that it applies for s = 12.

    Step 2. Just one possibility not involving two prime numbers or a prime number n and n^2:

    7=(2+5)=3+4
    8=2+6=(3+5)

    There are no other possibilities for the following reasons: 2+4 is not possible (see above), and for any s = n + n^2 with n being a prime number and n >= 3 it's possible to show that apart from the combination of a prime number n and n^2, there are at least two further combinations in which at least one of the two numbers is not a prime number.

    Step 3. Just one possibility not involving two prime numbers or a prime number n and n^2 or a prime number n and n^3:

    7=(2+5)=3+4
    8=2+6=(3+5)
    10=(2+8)=(3+7)=4+6

    There are no other possibilities. In analogy to the previous case it's possible to show that for s = n + n^3 with a being a prime number and n >= 3 there are at least two further combinations involving at least one non-prime number.

    So when person 1 says that he/she has now deduced the two numbers, it means that they are either 3 and 4, 2 and 6, or 4 and 6.

    Person 2 has done all the reasoning so far himself/herself and says that he/she has now been able to deduce the numbers. So it could not have been the pairs 3 and 4 or 2 and 6 because their products are equal. Therefore the correct solution is: 4 and 6.

    Alles anzeigen
  • Dimitrij
    7
    Dimitrij
    Mitglied
    Reaktionen
    12
    Punkte
    437
    Beiträge
    73
    • 17. November 2017 um 21:10
    • #14

    Das ist nicht ganz dasselbe Rätsel. Die Lösungszahlen sind auch anders.

    de.lernu.net, lingwadeplaneta.info

  • Marcrader
    1
    Marcrader
    Mitglied
    Punkte
    10
    Beiträge
    2
    • 12. Januar 2018 um 15:43
    • #15

    Echt coole Rätsel, die man sich in seiner Freizeit anschauen kann.

  • Maximilian Rupp 27. Dezember 2024 um 00:15

    Hat das Thema aus dem Forum Off-Topic nach Off-Topic verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung