パスカルの三角形

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";
}