Ramsey's theorem: Difference between revisions

Added Perl example
m (→‎{{header|Ring}}: Remove vanity tags)
(Added Perl example)
Line 899:
M=matrix(17,17,x,y,my(t=abs(x-y)%17);t==2^min(valuation(t,2),3))
check(M)</lang>
 
=={{header|Perl}}==
{{trans|Perl 6}}
<lang perl>use ntheory qw(forcomb);
use Math::Cartesian::Product;
 
$n = 17;
push @a, [(0) x $n] for 0..$n-1;
$a[$_][$_] = '-' for 0..$n-1;
 
for $x (cartesian {@_} [(0..$n-1)], [(1,2,4,8)]) {
$i = @$x[0];
$k = @$x[1];
$j = ($i + $k) % $n;
$a[$i][$j] = $a[$j][$i] = 1;
}
 
forcomb {
my $l = 0;
@i = @_;
forcomb { $l += $a[ $i[$_[0]] ][ $i[$_[1]] ]; } (4,2);
die "Bogus!" unless 0 < $l and $l < 6;
} ($n,4);
 
print join(' ' ,@$_) . "\n" for @a;
print 'OK'</lang>
{{out}}
<pre>- 1 1 0 1 0 0 0 1 1 0 0 0 1 0 1 1
1 - 1 1 0 1 0 0 0 1 1 0 0 0 1 0 1
1 1 - 1 1 0 1 0 0 0 1 1 0 0 0 1 0
0 1 1 - 1 1 0 1 0 0 0 1 1 0 0 0 1
1 0 1 1 - 1 1 0 1 0 0 0 1 1 0 0 0
0 1 0 1 1 - 1 1 0 1 0 0 0 1 1 0 0
0 0 1 0 1 1 - 1 1 0 1 0 0 0 1 1 0
0 0 0 1 0 1 1 - 1 1 0 1 0 0 0 1 1
1 0 0 0 1 0 1 1 - 1 1 0 1 0 0 0 1
1 1 0 0 0 1 0 1 1 - 1 1 0 1 0 0 0
0 1 1 0 0 0 1 0 1 1 - 1 1 0 1 0 0
0 0 1 1 0 0 0 1 0 1 1 - 1 1 0 1 0
0 0 0 1 1 0 0 0 1 0 1 1 - 1 1 0 1
1 0 0 0 1 1 0 0 0 1 0 1 1 - 1 1 0
0 1 0 0 0 1 1 0 0 0 1 0 1 1 - 1 1
1 0 1 0 0 0 1 1 0 0 0 1 0 1 1 - 1
1 1 0 1 0 0 0 1 1 0 0 0 1 0 1 1 -
OK</pre>
 
=={{header|Perl 6}}==
2,392

edits