開発環境
- 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 コメント:
コメントを投稿