103 lines
1.6 KiB
Tcl
103 lines
1.6 KiB
Tcl
|
load ./q3.so
|
||
|
|
||
|
source symul_lib.tcl;
|
||
|
|
||
|
set liczbaWierz 5
|
||
|
set sasiedzi(0) {4 1}
|
||
|
set sasiedzi(1) {0 2}
|
||
|
set sasiedzi(2) {1 3}
|
||
|
set sasiedzi(3) {2 4}
|
||
|
set sasiedzi(4) {3 0}
|
||
|
|
||
|
fiber create $liczbaWierz {
|
||
|
|
||
|
set lider ?;
|
||
|
wyslij 0 $id;
|
||
|
wyslij 1 $id;
|
||
|
fiber yield;
|
||
|
|
||
|
while {$run} {
|
||
|
|
||
|
if {$kom(0)!="" && $kom(1)!=""} {
|
||
|
set x ?;
|
||
|
if {$kom(0) > $kom(1)} {
|
||
|
set x $kom(0);
|
||
|
if {$lider==1} {
|
||
|
|
||
|
} elseif {$x==0} {
|
||
|
wyslij 1 0;
|
||
|
set lider 0;
|
||
|
} elseif {$x>$id} {
|
||
|
wyslij 1 $x;
|
||
|
} elseif {$x==$id} {
|
||
|
set lider 1;
|
||
|
wyslij 0 0;
|
||
|
wyslij 1 0;
|
||
|
} elseif {$x < $id} {
|
||
|
|
||
|
}
|
||
|
fiber yield;
|
||
|
} else {
|
||
|
set x $kom(1);
|
||
|
if {$lider==1} {
|
||
|
|
||
|
} elseif {$x==0} {
|
||
|
wyslij 0 $x;
|
||
|
set lider 0;
|
||
|
} elseif {$x>$id} {
|
||
|
wyslij 0 $x;
|
||
|
} elseif {$x==$id} {
|
||
|
set lider 1;
|
||
|
wyslij 0 0;
|
||
|
wyslij 1 0;
|
||
|
} elseif {$x < $id} {
|
||
|
|
||
|
}
|
||
|
fiber yield;
|
||
|
}
|
||
|
} elseif {$kom(0)!=""} {
|
||
|
set x $kom(0);
|
||
|
if {$lider==1} {
|
||
|
|
||
|
} elseif {$x==0} {
|
||
|
wyslij 1 0;
|
||
|
set lider 0;
|
||
|
} elseif {$x>$id} {
|
||
|
wyslij 1 $x;
|
||
|
} elseif {$x==$id} {
|
||
|
set lider 1;
|
||
|
wyslij 0 0;
|
||
|
wyslij 1 0;
|
||
|
} elseif {$x < $id} {
|
||
|
|
||
|
}
|
||
|
fiber yield;
|
||
|
} else {
|
||
|
set x $kom(1);
|
||
|
if {$lider==1} {
|
||
|
|
||
|
} elseif {$x==0} {
|
||
|
wyslij 0 $x;
|
||
|
set lider 0;
|
||
|
} elseif {$x>$id} {
|
||
|
wyslij 0 $x;
|
||
|
} elseif {$x==$id} {
|
||
|
set lider 1;
|
||
|
wyslij 0 0;
|
||
|
wyslij 1 0;
|
||
|
} elseif {$x < $id} {
|
||
|
|
||
|
}
|
||
|
fiber yield;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Inicjalizacja;
|
||
|
|
||
|
proc wizualizacja {} {
|
||
|
fiber_iterate {_puts "id: $id: lider: $lider, kom0: $kom0, kom1: $kom1"}
|
||
|
}
|
||
|
|
||
|
|
||
|
fiber yield; runda; wizualizacja
|