開発環境
- 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章(入出力)、5.13(練習問題)3を解いてみる。
その他参考書籍
3.
コード(TextWrangler)
sample.pl
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use 5.016;
binmode STDIN, ':utf8';
binmode STDOUT, ':utf8';
print "カラム幅を指定: ";
chomp(my $width = <STDIN>);
print "文字のリストを1行に1個ずつ入力\n";
chomp(my @strings = <STDIN>);
unless($width =~/^\d+$/){
$width = 0;
for(@strings){
$width = length $_ if length $_ > $width;
}
}
print "1234567890" x ($width / 10 + 1) . "\n";
for(@strings){
printf "%${width}s\n", $_;
}
入出力結果(Terminal)
$ ./sample.pl
カラム幅を指定: 30
文字のリストを1行に1個ずつ入力
hello
good-bye
1234567890123456789012345678901234567890
hello
good-bye
$ ./sample.pl
カラム幅を指定: perl
文字のリストを1行に1個ずつ入力
hello
good-bye
1234567890
hello
good-bye
$
ちなみにJavaScriptの場合。
コード(TextWrangler)
var strings = [];
var str;
var width = prompt("カラム幅を指定", null);
while(true){
var str = prompt("文字列を入力(空文字で終了)", null);
if(/^\s*$/.test(str)) break;
strings.push(str);
}
String.prototype.repeat = function(n){
var result = "";
for(var i = 0; i < n; i++){
result += this;
}
return result;
};
if(! /^\d+$/.test(width)){
width = 0;
for(var i = 0; i < strings.length; i++){
if(strings[i].length > width) width = strings[i].length;
}
}
width = parseInt(width);
var pre = 0;
var result = "1234567890".repeat(Math.floor(width / 10) + 1) + "\n";
for(var i = 0; i < strings.length; i++){
var pre = width - strings[i].length;
result += " ".repeat(pre) + strings[i] + "\n";
}
$('#pre0').text(result);
pythonの場合。
sample.py
コード(TextWrangler)
#!/usr/bin/env python3.3
#-*- coding:utf-8 -*-
import re
strings = []
pattern = re.compile(r"^\s*$")
print("文字列のリストを1行に1個ずつ入力(空行で終了)")
while 1:
s = input()
if re.match(pattern, s): break
strings.append(s)
print("1234567890" * 6)
for s in strings:
print(s.rjust(20))
入出力結果(Terminal)
$ ./sample.py
カラム幅を入力: 30
文字列のリストを1行に1個ずつ入力(空行で終了)
hello
good-bye
1234567890123456789012345678901234567890
hello
good-bye
$ ./sample.py
カラム幅を入力: python
文字列のリストを1行に1個ずつ入力(空行で終了)
hello
good-bye
pattern
1234567890
hello
good-bye
$
0 コメント:
コメントを投稿