開発環境
- 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) の5章(ハッシュ)、6.6(練習問題)2を解いてみる。
その他参考書籍
2.
コード(TextWrangler)
sample.pl
#!/usr/bin/env perl use strict; use warnings; use utf8; use 5.016; binmode STDIN, ':utf8'; binmode STDOUT, ':utf8'; my %count = (); while(<>){ chomp; next if /^\s*$/; $count{$_} += 1; } for(sort keys %count){ print "$_: $count{$_}回\n"; }
入出力結果(Terminal)
$ ./sample.pl tmp.txt barney: 1回 dino: 1回 fred: 3回 wilma: 1回 $ cat tmp.txt fred barney fred dino wilma fred $
ちなみにJavaScriptの場合。
コード(TextWrangler)
var result = ""; var text = 'fred\nbarney\nfred\ndino\nwilma\nfred\n\n'; var lines = text.split("\n"); var count = {}; for(var i = 0; i < lines.length; i++){ if(/^\s*$/.test(lines[i])) continue; if(lines[i] in count){ count[lines[i]] += 1; } else { count[lines[i]] = 1; } } var keys = []; for(var p in count){ keys.push(p); } keys.sort(); for(var i = 0; i < keys.length; i++){ result += keys[i] + ": " + count[keys[i]] + "回\n"; } $('#pre0').text(result);
pythonの場合。
sample.py
コード(TextWrangler)
#!/usr/bin/env python3.3 #-*- coding:utf-8 -*- import re pattern = re.compile(r"^\s*$") count = {} for line in open('tmp.txt'): if re.match(pattern, line): continue line = line.strip() if line in count: count[line] += 1 else: count[line] = 1 for key in sorted(count): print("{0}: {1}回".format(key, count[key]))
入出力結果(Terminal)
$ ./sample.py barney: 1回 dino: 1回 fred: 3回 wilma: 1回 $
0 コメント:
コメントを投稿