my code

Snippet options

Download: Download snippet as
Copy snippet: For this you need a free my code account.
Embed code : You will find the embed code for this snippet at the end of the page, if you want to embed it into a website or a blog!

print """
We pick two numbers a and b, so that 99 ≥ a ≥ b ≥ 2.
We tell Mr. P. the product a × b and Mr. S. the sum a + b.
Then Mr. S. and Mr. P. engage in the following dialog:

Mr. P.: I don’t know the numbers.

Mr. S.: I knew you didn’t know. I don’t know either.

Mr. P.: Now I know the numbers.

Mr. S.: Now I know them too.

Find the numbers a and b.

import os

global list_of_crisis
list_of_crisis = [(a,b) for a in range(2,100) for b in range(2,100) if a >= b]

def map(operation):

    Z = {}

    for a,b in list_of_crisis:
        z = operation(a,b)
        if not z in Z: Z[z] = []

    return Z

single_sol = lambda l: len(l) == 1

S = map(lambda a,b: a + b)
P = map(lambda a,b: a * b)

MrP_Dont = lambda p: not single_sol(P[p])
MrS_Dont = lambda s: not single_sol(S[s])

MrS_Do_MrP_Dont = lambda s: all([MrP_Dont(a*b) for a,b in S[s]])
MrP_Do = lambda p: single_sol([(a,b) for a,b in P[p] if MrS_Do_MrP_Dont(a + b)])
MrS_Do_MrP_Do = lambda s: single_sol([(a,b) for a,b in S[s] if MrP_Do(a*b)])

for a,b in list_of_crisis:
    s,p = (a + b), (a * b)

    if MrP_Dont(p)\
       and MrS_Dont(s)\
       and MrS_Do_MrP_Dont(s)\
       and MrP_Do(p)\
       and MrS_Do_MrP_Do(s): print "Numbers a & b Are ", a, ",", b, "Respectively."


Create a free my code account now.

my code is a free service, which allows you to save and manage code snippes of any kind and programming language. We provide many advantages for your daily work with code-snippets, also for your teamwork. Give it a try!

Find out more and register now

You can customize the height of iFrame-Codes as needed! You can find more infos in our API Reference for iframe Embeds.