2013年1月20日日曜日

開発環境

『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の 8章(配列とイテレータ), 8.3(練習問題)目次改訂版 を解いてみる。

その他参考書籍

目次改訂版

コード(BBEdit)

sample.rb

#!/usr/bin/env ruby1.9
#-*- coding: utf-8 -*-

contents = [['start', 1], ['number', 11], ['string', 15]]

width = 40
puts "table of contents".center(width)
puts
half = width / 2
i = 1
contents.each { |item|
  puts "chapter #{i}: #{item[0]}".ljust(half) + "p.#{item[1]}".rjust(half)
  i += 1
}

入出力結果(Terminal)

$ ./sample.rb
           table of contents            

chapter 1: start                     p.1
chapter 2: number                   p.11
chapter 3: string                   p.15

ちなみにJavaScriptの場合。

コード(BBEdit)

String.prototype.ljust = function(n){
    var result = this;
    for ( var i = 0; i < n - this.length; i++ ) {
     result += " ";
    }
    return result;
};
String.prototype.rjust = function( n ) {
 var result = "";
 for ( var i = 0; i < n - this.length; i++ ) {
  result += " ";
 }
 result += this;
 return result;
};
String.prototype.center = function ( n ) {
 var result = "";
 for ( var i = 0; i < (n - this.length) / 2; i++ ) {
  result += " ";
 }
 result += this;
 return result;
};
var result = "";
var contents = [['start', 1], ['number', 11], ['string', 15]];
var width = 40;
var half = width / 2;
result += "table of contents".center(width) + "\n\n";
for ( var i = 0; i < contents.length; i++ ) {
 result += ("chapter " + (i + 1) + ": " + contents[i][0]).ljust(half) +
   ("p." + contents[i][1]).rjust(half) + "\n";
}
$('#pre0').text(result);



pythonの場合。

sample.py

コード(BBEdit)

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

contents = [['start', 1], ['number', 11], ['string', 15]]
width = 40
half = width // 2
print("table of contents".center(width))
print()
i = 1
for a, b in contents:
 print("chapter {0}: {1}".format(i, a).ljust(half) +
   "p.{0}".format(b).rjust(half))
 i += 1

入出力結果(Terminal)

$ ./sample.py
           table of contents            

chapter 1: start                     p.1
chapter 2: number                   p.11
chapter 3: string                   p.15

perlの場合。

sample.pl

コード(BBEdit)

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

my @contents = (['start', 1], ['number', 11], ['string', 15]);
my $width = 40;
my $half = $width / 2;
my $s = "table of contents";
print " " x (($width - length $s) / 2) . $s . "\n\n";
my $i = 1;
for( @contents ){
 printf "%-${half}s%${half}s\n", 
   "chapter $i: $_->[0]",
   "p. $_->[1]";
 $i++;
}

入出力結果(Terminal)

$ ./sample.pl
           table of contents

chapter 1: start                    p. 1
chapter 2: number                  p. 11
chapter 3: string                  p. 15
$

0 コメント:

コメントを投稿