2013年3月4日月曜日

開発環境

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

その他参考書籍

3.

コード(BBEdit)

sample.pl

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

print "文字列を入力(ctr+Dで終了)\n";
chomp(my @strs = <STDIN>);
print "カラム幅を入力: ";
chomp(my $cols = <STDIN>);
print "1234567890" x ($cols / 10 + 1) , "\n";
for (@strs) {
    printf "%${cols}s\n", $_;
}

入出力結果(Terminal)

$ ./sample.pl
文字列を入力(ctr+Dで終了)
hello
good-bye
カラム幅を入力: 20
123456789012345678901234567890
               hello
            good-bye
$ ./sample.pl
文字列を入力(ctr+Dで終了)
hello
good-bye
カラム幅を入力: 50
123456789012345678901234567890123456789012345678901234567890
                                             hello
                                          good-bye
$ ./sample.pl
文字列を入力(ctr+Dで終了)
hello
good-bye
カラム幅を入力: 25
123456789012345678901234567890
                    hello
                 good-bye
$

ちなみにJavaScriptの場合。

コード(BBEdit)

var strs = [],
    s = "",
    result = "",
    i, max, cols;
while (true) {
    s = prompt("文字列(空白で終了)", "");
    if (/^\s*$/.test(s)) {
        break;
    }
    strs.push(s);
}
cols = parseInt(prompt("カラムの幅を指定", ""), 10);
result += new Array( Math.floor(cols / 10) + 2 ).join("1234567890") + "\n";
for (i = 0, max = strs.length; i < max; i += 1) {
    result += new Array(cols - strs[i].length + 1).join(" ") + strs[i] + "\n";
}
$('#pre0').text(result);



pythonの場合。

コード(BBEdit)

sample.py

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

import re

strs = []
while True:
    s = input("文字列(空白で終了)")
    if re.search(r"^\s*$", s):
        break
    strs.append(s)
cols = int(input("カラムの幅を指定: "))
print("1234567890" * (cols // 10 + 1))
for s in strs:
    print("%{0}s".format(cols) % s)

入出力結果(Terminal)

$ ./sample.py
文字列(空白で終了)hello
文字列(空白で終了)good-bye
文字列(空白で終了)  
カラムの幅を指定: 20
123456789012345678901234567890
               hello
            good-bye
$ ./sample.py
文字列(空白で終了)hello
文字列(空白で終了)good-bye
文字列(空白で終了)50
文字列(空白で終了)
カラムの幅を指定: 50
123456789012345678901234567890123456789012345678901234567890
                                             hello
                                          good-bye
                                                50
$ ./sample.py
文字列(空白で終了)hello
文字列(空白で終了)good-bye
文字列(空白で終了)
カラムの幅を指定: 25
123456789012345678901234567890
                    hello
                 good-bye
$

0 コメント:

コメントを投稿