#!/perl/hin/perl # use strict; my @points = ([0,1], [0,5,8,10], [1,6,9,10], [0,3,7,9], [0,2,4,6], [1,2,3,5], [1,4,7,8]); my %triangles; my @line; my $lineNo=1; # labelled thelines for my $lineref (@points) { for(my $i=0; $i<=$#{$lineref}; $i++) { for(my $j=0; $j<=$#{$lineref}; $j++) { next if $i==$j; $line[$lineref->[$i]][$lineref->[$j]]=$lineNo; $line[$lineref->[$j]][$lineref->[$i]]=$lineNo; } } $lineNo++; } for(my $i=0; $i<11; $i++) { for(my $j=0; $j<11; $j++) { for(my $k=0; $k<11; $k++) { # 3 points form a triangle if # 1) not all on 1 straight line # 2) each pair has common line next if $i==$j || $i==$k || $j==$k; next if(!$line[$i][$j] || !$line[$i][$k] || !$line[$j][$k]); next if ($line[$i][$j]==$line[$i][$k]); my @arr = sort ($i,$j,$k); $triangles{$arr[0],$arr[1],$arr[2]}=1; } } } printf "No. of triangles %d\n", scalar keys %triangles;