Hacker News new | ask | show | jobs
by rexpan 1498 days ago
My SQL Solution (SQL Server)

    -- Create Table #x(v) from 1..99
    WITH x AS (SELECT n FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) v(n))
    SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS v INTO #x 
    FROM x ones, x tens ORDER BY 1
    ;
    DELETE FROM #x WHERE v > 99
    ;
    -- Create Candidate #c(x, y, s, p) with pair (x,y) (x <= y) and sum `s` and product `p`
    SELECT x.v AS x, y.v AS y, x.v + y.v AS s, x.v \* y.v AS p INTO #c FROM #x x, #x y WHERE x.v <= y.v
    ;
    -- Peter: I don’t know the numbers.
    DELETE FROM #c WHERE p IN (SELECT p FROM (SELECT p, COUNT(*) AS n FROM #c GROUP BY p) AS d WHERE n < 2)
    -- Sandy: I don’t know the numbers.
    DELETE FROM #c WHERE s IN (SELECT s FROM (SELECT s, COUNT(*) AS n FROM #c GROUP BY s) AS d WHERE n < 2)
    -- Peter: I don’t know the numbers.
    DELETE FROM #c WHERE p IN (SELECT p FROM (SELECT p, COUNT(*) AS n FROM #c GROUP BY p) AS d WHERE n < 2)
    -- Sandy: I don’t know the numbers.
    DELETE FROM #c WHERE s IN (SELECT s FROM (SELECT s, COUNT(*) AS n FROM #c GROUP BY s) AS d WHERE n < 2)
    -- Peter: I don’t know the numbers.
    DELETE FROM #c WHERE p IN (SELECT p FROM (SELECT p, COUNT(*) AS n FROM #c GROUP BY p) AS d WHERE n < 2)
    -- Sandy: I don’t know the numbers.
    DELETE FROM #c WHERE s IN (SELECT s FROM (SELECT s, COUNT(*) AS n FROM #c GROUP BY s) AS d WHERE n < 2)
    -- Peter: I don’t know the numbers.
    DELETE FROM #c WHERE p IN (SELECT p FROM (SELECT p, COUNT(*) AS n FROM #c GROUP BY p) AS d WHERE n < 2)
    -- Sandy: I don’t know the numbers.
    DELETE FROM #c WHERE s IN (SELECT s FROM (SELECT s, COUNT(*) AS n FROM #c GROUP BY s) AS d WHERE n < 2)
    -- Peter: I don’t know the numbers.
    DELETE FROM #c WHERE p IN (SELECT p FROM (SELECT p, COUNT(*) AS n FROM #c GROUP BY p) AS d WHERE n < 2)
    -- Sandy: I don’t know the numbers.
    DELETE FROM #c WHERE s IN (SELECT s FROM (SELECT s, COUNT(*) AS n FROM #c GROUP BY s) AS d WHERE n < 2)
    -- Peter: I don’t know the numbers.
    DELETE FROM #c WHERE p IN (SELECT p FROM (SELECT p, COUNT(*) AS n FROM #c GROUP BY p) AS d WHERE n < 2)
    -- Sandy: I don’t know the numbers.
    DELETE FROM #c WHERE s IN (SELECT s FROM (SELECT s, COUNT(*) AS n FROM #c GROUP BY s) AS d WHERE n < 2)
    -- Peter: I don’t know the numbers.
    DELETE FROM #c WHERE p IN (SELECT p FROM (SELECT p, COUNT(*) AS n FROM #c GROUP BY p) AS d WHERE n < 2)
    -- Sandy: I don’t know the numbers.
    DELETE FROM #c WHERE s IN (SELECT s FROM (SELECT s, COUNT(*) AS n FROM #c GROUP BY s) AS d WHERE n < 2)
    -- Peter: I do know the numbers.
    SELECT * FROM #c WHERE p IN (SELECT p FROM (SELECT p, COUNT(*) AS n FROM #c GROUP BY p) AS d WHERE n < 2)
    /*
    x y s p
    77 84 161 6468
    */
1 comments

It's not pretty, but it works!