開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc.(Text Editor)
- Script言語:Perl
その他参考書籍
2.
コード(BBEdit)
sample.pl
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use 5.016;
binmode STDOUT, ':utf8';
binmode STDIN, ':utf8';
my @gilligan = qw(red_shirt hat lucky_socks water_bottle);
my @skipper = qw(blue_shirt hat jacket preserver sunscreen);
my @professor = qw(sunscreen water_bottle slide_rule batteries radio);
my %all = (
Gilligan => \@gilligan,
Skipper => \@skipper,
Professor => \@professor,
);
check_items_for_all(\%all);
sub check_items_for_all{
my $all = shift;
for (keys %$all) {
check_required_items($_, $all->{$_});
}
}
sub check_required_items{
my($who, $items) = @_;
my @required = qw(preserver sunscreen water_bottle jacket);
my @missing = ();
for my $item (@required){
unless(grep $item eq $_, @$items ){
print "$who is missing $item.\n";
push @missing, $item;
}
}
if (@missing){
print "Adding @missing to @$items for $who.\n";
push @$items, @missing;
}
}
入出力結果(Terminal)
$ ./sample.pl Gilligan is missing preserver. Gilligan is missing sunscreen. Gilligan is missing jacket. Adding preserver sunscreen jacket to red_shirt hat lucky_socks water_bottle for Gilligan. Skipper is missing water_bottle. Adding water_bottle to blue_shirt hat jacket preserver sunscreen for Skipper. Professor is missing preserver. Professor is missing jacket. Adding preserver jacket to sunscreen water_bottle slide_rule batteries radio for Professor. $
ちなみにJavaScriptの場合。
コード(BBEdit)
$('#pre0').html('');
var gilligan = ["red_shirt", "hat", "lucky_socks", "water_bottle"];
var skipper = ["blue_shirt", "hat", "jacket", "preserver", "sunscreen"];
var professor = ["sunscreen", "water_bottle", "slide_rule", "batteries", "radio"];
var all = { Gilligan: gilligan,
Skipper: skipper,
Professor: professor};
check_items_for_all(all);
function check_items_for_all(all){
for(var p in all){
check_required_items(p, all[p]);
}
}
function check_required_items(who, items){
var required = ["preserver", "sunscreen", "water_bottle", "jacket"];
var missing = [];
var i, j;
for(i = 0, max_i = required.length; i < max_i; i += 1){
innerloop: {
for ( j = 0, max_j = items.length; j < max_j; j += 1) {
if ( required[i] === items[j] ){
break innerloop;
}
}
$('#pre0').append( who + " is missing " + required[i] + ".\n");
missing.push(required[i]);
}
}
if ( missing ){
$('#pre0').append("Adding " + missing.join(" ") +
" to " + items.join(" ") + " for " + who + "\n");
items += missing;
}
}
pythonの場合。
sample.py
コード(BBEdit)
#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-
gilligan = ["red_shirt", "hat", "lucky_socks", "water_bottle"]
skipper = ["blue_shirt", "hat", "jacket", "preserver", "sunscreen"]
professor = ["sunscreen", "water_bottle", "slide_rule", "batteries", "radio"]
all = {"Gilligan": gilligan, "Skipper": skipper, "Professor": professor}
def check_required_items(who, items):
required = ["preserver", "sunscreen", "water_bottle", "jacket"]
missing = []
for item in required:
if not item in items:
print("{0} is missing {1}.".format(who, item))
missing.append(item)
if missing:
print("Adding {0} to {1} for {2}".format(
" ".join(missing), " ".join(items), who))
items += missing
def check_items_for_all(all):
for k, v in all.items():
check_required_items(k, v)
check_items_for_all(all)
入出力結果(Terminal)
$ ./sample.py Professor is missing preserver. Professor is missing jacket. Adding preserver jacket to sunscreen water_bottle slide_rule batteries radio for Professor Gilligan is missing preserver. Gilligan is missing sunscreen. Gilligan is missing jacket. Adding preserver sunscreen jacket to red_shirt hat lucky_socks water_bottle for Gilligan Skipper is missing water_bottle. Adding water_bottle to blue_shirt hat jacket preserver sunscreen for Skipper $
0 コメント:
コメントを投稿