43 lines
652 B
Tcl
43 lines
652 B
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;
|
|
fiber yield;
|
|
while {$run} {
|
|
if {$kom(1)!=""} {
|
|
set x $kom(1);
|
|
if {$lider==1} {
|
|
|
|
} elseif {$x>$id} {
|
|
wyslij 0 $x;
|
|
} elseif {$x==0} {
|
|
wyslij 0 $x;
|
|
set lider 0;
|
|
} elseif {$x==$id} {
|
|
set lider 1;
|
|
wyslij 0 0;
|
|
} elseif {$x < $id} {
|
|
|
|
}
|
|
}
|
|
fiber yield;
|
|
}
|
|
}
|
|
|
|
Inicjalizacja;
|
|
|
|
proc wizualizacja {} {
|
|
fiber_iterate {_puts "$id: $lider, $kom(1)"}
|
|
}
|
|
|
|
fiber yield; runda; wizualizacja |