2012年11月29日木曜日

開発環境

『初めての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 コメント:

コメントを投稿