Download
language ESSENCE 1.2.0
$ prob041.essence: N-Fractions Puzzle
$ Problem details available at http://www.csplib.org/Problems/prob041/
$ 07 September 2007
$

given n : int(1..)

letting Index be domain int(1..3*n),
        Digit be domain int(1..9)

find assign : function (total, surjective) Index --> Digit

such that
    (sum i : int(0..n-1) . assign(3*i+1) / (assign(3*i+2)*10
                                            + assign(3*i+3))) = 1,
    forAll d : Digit . (sum i : Index . toInt(assign(i) = d)) <= (n+1)/3