home *** CD-ROM | disk | FTP | other *** search
- map:4:3
- {`3:i,`1:i;`2:y;}
- {
- &1:1:1:1
- (`1:i)
- => ([]);;
- (_) |-
- &2:2:0(((#1:i+:i1)):i, #1:i)[;] ();
- &1:1:1(((#1:i+:i1)):i)[;] (?#-2:l)
- => [#-2:l;] (1:i[#1:i|#-2:l]).
- &2:2:0:1
- (_, `1:i)
- => ();;
- (_, _) |-
- ((((`3:i*:i4757)+:i1)%:i32768)):i = ?`3:i;
- ((((`3:i/:i16)%:i256)+:i1)):i = ?#-2:i;
- #-2:i = ?`2[(#1:i):i,(#2:i):i]:i;
- #-2:i = ?`2[(#2:i):i,(#1:i):i]:i
- => &2(((#2:i+:i1)):i, #1:i).
- }
- Tsp:8:5
- {`7:i;`6:l,`5:y,`4:l;}
- {
- &1:5:0:2 [;]
- (_, _, _, _, _) :-
- (#4:i):i >= (`7:i):i
- => ();
- ([], [], [?#-2:i|_]?#-3:l, _, _) |-
- &3:2:0(((#4:i+:i`5[(#-2:i):i,(0):i]:i)):i, #-3:l)[;] ()
- => ();
- (_, _, _, _, 0) |-
- &4:2:1(1:o[task:5{#1:l,#2:l,#3:l,#4:i}], `4:l)[#3:l,#2:l,#1:l;] (?`4:l)
- => ();;
- (_, _, _, _, _) |-
- &2:5:0(#5:i, #4:i, #3:l, #2:l, #1:l)[#3:l,#2:l,#1:l;] ()
- => &2(#5:i, #4:i, #3:l, #1:l, #2:l).
- &2:5:0:5 [;]
- ([], _, _, _, _)
- => ();;
- ([?#-6:i|?#-5:l], _, [?#-3:i|?#-2:l]?#-4:l, _, _) |-
- &1:5:0(((#5:i-:i1)):i, ((#4:i+:i`5[(#-6:i):i,(#-3:i):i]:i)):i, 2:i[#-6:i,#-3:i|#-2:l], #2:l, #-5:l)[#-4:l,#2:l,#-5:l;] ()
- => &2(#5:i, #4:i, #-4:l, 1:i[#-6:i|#2:l], #-5:l).
- &3:2:0:0
- (_, _) :-
- (#2:i):i >= (`7:i):i
- => ()*;;
- (?`6:l, ?`7:i)
- => ()*.
- &4:2:1:3
- ([], _)
- => (#2:l);;
- ([?#-4:o|?#-3:l], _) |-
- &4:2:1(#2:l, #-3:l)[#-4:o;] (?#-2:l)
- => [#-2:l,#-4:o;] (1:o[#-4:o|#-2:l]).
- }
- Tsp :: Slave:9:7
- {`7:i;`8:a,`6:l,`5:y,`4:l;}
- {
- ?- 0 &5:0:0()[;] ().
- &6:0:0:0;
- () :-
- &3[:i, :l](`7:i, `6:l)[] ! `8:a,
- &5:0:0()[;] () :0()
- => ().
- &5:0:0:7
- () :-
- &7[]()[:i, :l, :o] ! `8:a :3(?#-8:o, ?#-7:l, ?#-6:i);
- #-8:o = task:5{?#-5:l,?#-4:l,?#-3:l,?#-2:i};
- &3:2:0(#-6:i, #-7:l) ::Tsp[#-3:l,#-4:l,#-5:l;] ();
- &1:5:0((-1):i, #-2:i, #-3:l, #-4:l, #-5:l) ::Tsp[;] ();
- &6:0:0()[;] ()
- => ();;
- ()
- => ().
- }
- Tsp :: Master:8:8
- {`7:i;`6:l,`5:y,`4:l;}
- {
- &5:3:2:4 [;];
- ($[?#-5:i,#-5:i]?`5:y, _, _) :-
- [] = ?`6:l;
- 65535 = ?`7:i;
- map:4{#-5:i,`5:y,197} = ?#-4:o;
- &1:1:1(0) ! #-4:o[#-4:o;] ([?#-3:i|?#-2:l]);
- &1:5:0(#2:i, 0, 1:i[#-3:i], [], #-2:l) ::Tsp[;] ();
- &6:1:0(#3:i)[;] ();
- $wait(#3:i)!~2[;]
- => (`7:i, `6:l)*.
- &6:1:0:0 [;]
- (0)
- => ();;
- (_) |-
- Slave:9{[],`5:y,[],65535,#0:a}@0:0 = _
- => &6(((#1:i-:i1)):i).
- &7:0:3:1
- () :-
- [] == `4:l;
- $post(1)!~2
- => (`7:i, `6:l, $nil)*;
- () :-
- `4:l = [?#-2:o|?`4:l];
- (`7:i):i > (#-2.`4:i):i
- => (`7:i, `6:l, #-2:o)*;;
- () |-
- &7:0:3()[;] (?#-2:o, _, _)
- => (`7:i, `6:l, #-2:o)*.
- }
- task:5:1
- {`4:i;`3:l,`2:l,`1:l;}
- {}
-