Graph colouring: Difference between revisions
→{{header|Perl 6}}: Thanks Paddy3118 for the notification, update accordingly
m (→{{header|Go}}: Doh, typo reintroduced.) |
(→{{header|Perl 6}}: Thanks Paddy3118 for the notification, update accordingly) |
||
Line 456:
=={{header|Perl 6}}==
<lang perl6>#!/usr/bin/env perl6
sub GraphNodeColor(@RAW) {
my %OneMany = my %NodeColor
for @RAW { %OneMany{$_[0]}.push: $_[1] ; %OneMany{$_[1]}.push: $_[0] }
my @ColorPool = "0", "1" … ^+%OneMany.elems
my %NodePool = %OneMany.keys.SetHash;
if %OneMany<
%NodePool{$_}:delete for @(%OneMany<
%NodePool<
}
while %NodePool
my $color = @ColorPool.grab;
my %TempPool = %NodePool;
while (my \n = %TempPool
%NodeColor{n} = $color;
%TempPool{n}:delete;
Line 478 ⟶ 477:
}
}
if %OneMany<
%NodeColor{$_} = %NodeColor
}
return %NodeColor
Line 485 ⟶ 484:
my \DATA = [
[<0 1>,<1 2>,<2 0>,<3
[<1 6>,<1 7>,<1 8>,<2 5>,<2 7>,<2 8>,<3 5>,<3 6>,<3 8>,<4 5>,<4 6>,<4 7>],
[<1 4>,<1 6>,<1 8>,<3 2>,<3 6>,<3 8>,<5 2>,<5 4>,<5 8>,<7 2>,<7 4>,<7 6>],
Line 493 ⟶ 492:
for DATA {
say "DATA : ", $_;
say "Result : "
my %out = GraphNodeColor $_;
say "Nodes : ", %output.keys.elems;▼
say "$_[0]-$_[1]:\t Color %out{$_[0]} ",$_[1].isNaN??''!!%out{$_[1]} for @$_;
say "Edges : ", $_.elems;
say "Colors : ", %
}</lang>
{{out}}
<pre>DATA
Result :
0-1: Color 2 4
Nodes : 6▼
1-2: Color 4 3
Edges : 6▼
2-0: Color 3 2
3-NaN: Color 4
4-NaN: Color 3
5-NaN: Color 2
Colors : 3
DATA
Result :
1-6: Color 5 6
Nodes : 8▼
1-7: Color 5 6
Edges : 12▼
1-8: Color 5 6
2-5: Color 5 6
2-7: Color 5 6
2-8: Color 5 6
3-5: Color 5 6
3-6: Color 5 6
3-8: Color 5 6
4-5: Color 5 6
4-6: Color 5 6
4-7: Color 5 6
Colors : 2
DATA
Result :
1-4: Color 3 6
Nodes : 8▼
1-6: Color 3 6
Edges : 12▼
1-8: Color 3 6
3-2: Color 3 6
3-6: Color 3 6
3-8: Color 3 6
5-2: Color 3 6
5-4: Color 3 6
5-8: Color 3 6
7-2: Color 3 6
7-4: Color 3 6
7-6: Color 3 6
Colors : 2
DATA
Result :
1-6: Color 1 5
Nodes : 8▼
7-1: Color 5 1
Edges : 12▼
8-1: Color 5 1
5-2: Color 5 1
2-7: Color 1 5
2-8: Color 1 5
3-5: Color 1 5
6-3: Color 5 1
3-8: Color 1 5
4-5: Color 1 5
4-6: Color 1 5
4-7: Color 1 5
Colors : 2</pre>
|