開発環境
- 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 コメント:
コメントを投稿