2013年7月10日水曜日

開発環境

『初めてのPerl 第6版』(Randal L. Schwartz, Tom Phoenix, brian d foy 共著、近藤 嘉雪 訳、オライリー・ジャパン、2012年、ISBN978-4-87311-567-2)の4章(サブルーチン)の4.12(練習問題)3を解いてみる。

その他参考書籍

3.

コード(BBEdit)

sample.pl

#!/usr/bin/env perl
use strict;
use warnings;
use 5.016;
use utf8;
binmode STDOUT, ':utf8';
binmode STDIN, ':utf8';

sub total {
    my $result = 0;
    for  (@_) {
        $result += $_;
    }
    $result;
}

sub average {
    total(@_) / @_;
}

sub above_average {
    my @result = ();
    my $a = average(@_);
    for  (@_) {
        push @result, $_ if $_ > $a;
    }
    @result;
}
my @fred = above_average(1..10);
print "\@fred is @fred\n";
print "(Should be 6 7 8 9 10)\n";
my @barney = above_average(100, 1.10);
print "\@barney is @barney\n";
print "(Should be just 100)\n";

入出力結果(Terminal)

$ ./sample.pl
@fred is 6 7 8 9 10
(Should be 6 7 8 9 10)
@barney is 100
(Should be just 100)
$

ちなみにpython3.3の場合。

コード(BBEdit)

sample.py

#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

def total(a):
    res = 0
    for n in a:
        res += n
    return res

def average(a):
    return sum(a) / len(a)

def above_average(a):
    n = average(a)
    return list(filter(lambda x: x > n, a))

spam = above_average([x for x in range(1, 11)])
print("spam is {0}".format(spam))
print("(Should be 6 7 8 9 10)")
egg = above_average([100] + [x for x in range(1, 11)])
print("egg is {0}".format(egg))
print("(Should be just 100)")

入出力結果(Terminal)

$ ./sample.py
spam is [6, 7, 8, 9, 10]
(Should be 6 7 8 9 10)
egg is [100]
(Should be just 100)
$

0 コメント:

コメントを投稿