パスカルの三角形
30分プログラム、その766。パスカルの三角形を書いてみる。
久しぶりなのでリハビリがてら簡単なやつを。Perlだとzipが使えなくてつらかったです。
使い方
$ perl pascal_tri.pl 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 1 10 45 120 210 252 210 120 45 10 1
ソースコード
#! /usr/bin/perl # -*- mode:perl; coding:utf-8 -*- use strict; use warnings; use Data::Dumper; use List::MoreUtils qw(zip mesh); sub tail{ my ($none, @xs) = @_; @xs; } sub pascal($){ my ($n) = @_; if($n == 0){ (1); }else{ my @xs = &pascal($n-1); my @ys = tail @xs; my @zs = map { $xs[$_] + $ys[$_] } (0..@ys-1); return (1,@zs,1); } } for(0..10){ my @xs = pascal($_); print "@xs\n"; }