IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

perl vs Haskell

問題

各辺が10以下の整数で、辺の合計が24の直角三角形の、各辺の長さを求める。
http://learnyouahaskell.com/starting-out#im-a-list-comprehension

perlの負けっぽい。

  1 use strict;
  2 use Data::Dumper;
  3
  4 my @data;
  5
  6 for my $i (1..10) {
  7         for my $j (1..$i) {
  8                 for my $k (1..$j) {
  9                     push (@data, +[$i, $j, $k]);
 10                 }
 11         }
 12 }
 13
 14 my @ret = grep { $_->[0] + $_->[1] + $_->[2] == 24 }
 15           grep { $_->[0]**2 == $_->[1]**2 + $_->[2]**2 } @data;
 16
 17 print Dumper(\@ret);

L6..L12の良いコーディングが思いつかなかった。
対象となる集合を作るところで、perlの負け。