開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの機能制限無料版、light版)
- Script言語:Perl
『初めての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 utf8;
use 5.016;
binmode STDOUT, ':utf8';
binmode STDIN, ':utf8';
sub total {
my $result = 0;
for (@_) {
$result += $_;
}
$result;
}
sub average {
return unless @_;
total(@_) / @_;
}
sub above_average {
my $a = average @_;
grep {$_ > $a} @_;
}
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) $
ちなみにJavaScriptの場合。
コード(BBEdit)
var nums1 = [],
nums2 = [],
total = function( nums ) {
var result = 0,
i, max;
for (i = 0, max = nums.length; i < max; i += 1) {
result += nums[i];
}
return result;
},
average = function( nums ) {
return total(nums) / nums.length;
},
above_average = function( nums ) {
var a = average(nums),
result = [];
for (i = 0, max = nums.length; i < max; i += 1) {
if (nums[i] > a) {
result.push(nums[i]);
}
}
return result;
},
result = "",
i, max;
for (i = 0, max = 10; i < max; i += 1) {
nums1[i] = i + 1;
}
nums2[0] = 100;
for (i = 0, max = 10; i < max; i += 1) {
nums2.push(i + 1);
}
result = above_average(nums1) + "\n" + above_average(nums2);
$('#pre0').text(result);
pythonの場合。
コード(BBEdit)
sample.py
#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-
def total(nums):
result = 0
for x in nums:
result += x
return result
def average(nums):
return total(nums) / len(nums)
def above_average(nums):
result = []
a = average(nums)
for x in nums:
if x > a:
result.append(x)
return result
nums1 = [x for x in range(1,11)]
nums2 = [100] + [x for x in range(1, 10)]
for x in [nums1, nums2]:
print(above_average(x))
入出力結果(Terminal)
$ ./sample.py [6, 7, 8, 9, 10] [100] $
0 コメント:
コメントを投稿