Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Perl入学式 第1回 ピザ会 課題 2019/04/13
#!/usr/bin/perl
# guess-ad-year.pl - 和暦を引数に与えると西暦年を応えてくれる
# ad は A.D. (Anno Domini = 西暦年) の略
#
# 例:
# guess-ad-year.pl 平成30年
# 2018年
# guess-ad-year.pl 昭和54年
# 1979年
use strict;
use warnings;
my $jp_year = shift || ""; # 後述の正規表現マッチで穏当にマッチを外すよう、未定義だった場合は空文字を設定する
if ( my ($jp_era_name, $jp_era_year) = $jp_year =~ /^(.*?)(\d+)年$/ ) {
my $base_ad_year;
if ( $jp_era_name eq "平成" ) {
$base_ad_year = 1988;
} elsif ( $jp_era_name eq "昭和" ) {
$base_ad_year = 1925;
}
my $ad_year = $base_ad_year + $jp_era_year;
print "西暦${ad_year}\n";
} else {
die "認識できない書式です\n";
}
#!/usr/bin/ruby
# guess-ad-year.rb - 和暦を引数に与えると西暦年を応えてくれる
# ad は A.D. (Anno Domini = 西暦年) の略
#
# 例:
# guess-ad-year.rb 平成30年
# 2018年
# guess-ad-year.rb 昭和54年
# 1979年
jp_year = ARGV.shift || ""
if jp_year =~ /^(.*?)(\d+)年$/
jp_era_name = $1
jp_era_year = $2.to_i
if jp_era_name == "平成"
base_ad_year = 1988
elsif jp_era_name == "昭和"
base_ad_year = 1924
end
ad_year = base_ad_year + jp_era_year
puts "西暦#{ad_year}年"
else
warn "認識できない書式です"
exit 1
end

課題1

  • guess-ad-year.{pl,rb}perl guess-ad-year.pl 平成30年 とコマンドを打つと 西暦2018年 と表示される、和暦→西暦変換プログラムです
  • guess-ad-year.{pl,rb} で以下の部分を対応してみましょう
    • 令和対応 をして下さい。 perl guess-ad-year.pl 令和2年 と打つと 西暦2020年 と返すようにして下さい
    • 元年表記対応 をして下さい。このプログラムは 平成1年 という入力は受け付けますが 平成元年 という入力を受け付けることができません。これを受け付けるようにして下さい
    • 明治・大正対応 をして下さい
  • 参考:元号一覧 (日本) - Wikipedia
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.