Nochmal deutlicher: die Information, dass Susanne weiß, dass Peter die Lösung nicht kennt, sagt uns viel mehr als die Information, dass Peter die Lösung nicht kennt. Wir dürfen aus der Menge der Lösungen alle Summen streichen, bei denen eine oder mehrere Kombinationen von Summanden existieren, mit denen man bei Kenntnis des Produktes die Lösung kennen würde.
Wir erzeugen eine Tabelle mit Summen und zählen dabei, wie viele Paare von Zahlen diese Summe ergeben und deren Produkt keine andere Kombination von Faktoren gestattet. Hä?
Nochmal anders: Peter kennt die Lösung nicht. Das heißt, alle Produkte, die nur durch eine
Art zustande kommen können, scheiden aus.
Susanne weiß, dass Peter die Lösung nicht kennt, obwohl sie nur die
Summe sieht und nicht das Produkt. Das bedeutet, ihre Summe erlaubt ausschließlich Zahlenpaare, deren
Produkte nicht eindeutig sind. Deswegen fallen jetzt auf einmal alle diejenigen Zahlenpaare raus, deren
Summe man auch mit einem anderen Zahlenpaar erzeugen kann, dessen Produkt eindeutig ist.
Wir haben vorhin eine Tabelle mit allen Produkten erzeugt, aus der man ablesen kann, ob ein Produkt eindeutig ist. Jetzt erzeugen wir daraus eine Tabelle mit allen Summen, die sich durch Addition der Faktoren dieser eindeutigen Produkte ergeben.
create table Summe (summe int, anzahl int) insert into Summe select Paar.summe, count(1) from Paar inner join Produkt on Produkt.produkt = Paar.produkt where Produkt.anzahl = 1 group by Paar.summeJetzt dürfen wir alle Zahlenpaare löschen, deren Summe in dieser Tabelle steht.
delete Paar where summe in (select summe from Summe)Das hat die Lösungsmenge erfreulich reduziert: es gibt nur noch 145 Zeilen in der Tabelle Paar.