Matt Owen

source code for "files/pe/pe_042.pl"

return to portfolio
  1.  #!/usr/bin/perl
  2.  
  3.  use strict;
  4.  use warnings;
  5.  
  6.  
  7.  # triangle
  8.  sub compute_triangle {
  9.   my $sum = 0;
  10.   for my $k (map { ord($_)-64 } split //, shift) {
  11.   $sum += $k;
  12.   }
  13.   return $sum;
  14.  }
  15.  
  16.  
  17.  # file handle
  18.  open WORDS, "files/words.txt";
  19.  
  20.  
  21.  # init
  22.  my ($count) = 0;
  23.  my @words = split ',', <WORDS>;
  24.  
  25.  @words = map { substr $_, 1, length($_) - 2 } @words;
  26.  
  27.  
  28.  # work
  29.  for (@words) {
  30.   my $tri = compute_triangle $_;
  31.   my $sol = (-1 + sqrt(1+8*$tri))/2;
  32.   $count ++ if $sol == int $sol && $sol >= 0;
  33.  }
  34.  
  35.  
  36.  print $count;
  37.  close WORDS;