ME部perl宿題メール解説ページ
文責 定 翼
このページは、ME部メーリングリスト上で出題された問題に対する部員から寄せられた回答と、別解を掲載した物である。


第1問
問題
hello world !!
と、HTMLで画面に出力してください。
出題 定 翼

回答
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<HTML>\n";
print "<HEAD><TITLE>宿題第一問</TITLE></HEAD>\n";
print "<BODY>\n";
print "hello world !!<BR>\n";

print "</BODY>\n";
print "</HTML>\n";

回答 若山 知薫
第2問
問題
変数$Aに1を入れ、これを二倍してHTML出力してください。
出題 定 翼

回答
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";

$A = 1;
$A *= 2;

print "<HTML>\n";
print "<HEAD><TITLE>宿題第一問</TITLE></HEAD>\n";
print "<BODY>\n";
print "$A<BR>\n";

print "</BODY>\n";

print "\n"; 回答 若山 知薫

別解
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
$A = 1;
$A = $A << 1;
print "$A\n";
別解 定 翼
第3問
問題
文字列"まさこさま"を整形し、逆から読めるようにし、新たな文字列を作り、HTML出力して下さい
出題 定 翼

回答
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";

$A = "まさこさま";

$B = substr($A, 0, 2);
$C = substr($A, 2, 2);
$D = substr($A, 4, 2);
$E = substr($A, 6, 2);
$F = substr($A, 8, 2);

print "<HTML>\n";
print "<HEAD><TITLE>宿題第三問</TITLE></HEAD>\n";
print "<BODY>\n";
print "$A <BR>\n";

print "$F$E$D$C$B <BR>\n";

print "</BODY>\n";
print "</HTML>\n";

回答 若山 知薫

別解
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
$A = "まさこさま";
for ($i=10; $i>-2; $i=$i-2)
{
$B=$B.substr($A,$i,2);
}
print "$A\n";
print "<BR>";
print "$B\n";
別解 定 翼
第4問
問題
1次元の配列変数を用意し、第一の要素に文字列"おわだまさこ"、
第二の要素に"かわしまきこ"を入れ、第一の要素から1,3,5文字目の文字を、
第二の要素の2,4,6文字目の文字を抽出し、互い違いに文字を入れ、
新たな文字列を作成し、第三の要素に入れてください。
第四の要素には、第三の要素と同じ要領で、第二の要素の1,3,5文字目の文字を、
第一の要素の2,4,6文字目の文字を抽出し、互い違いに文字を入れ、
新たな文字列を作成した物を格納して下さい。
これによって出来た第三と第四の要素をHTML出力して下さい。

出題 定 翼

回答
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";

@A = ("おわだまさこ","かわしまきこ");

$B = substr($A[0], 0, 2);
$C = substr($A[1], 2, 2);
$D = substr($A[0], 4, 2);
$E = substr($A[1], 6, 2);
$F = substr($A[0], 8, 2);
$G = substr($A[1], 10, 2);

$H = $B.$C.$D.$E.$F.$G;


print "<HTML>\n";<BR>
print "<HEAD><TITLE>宿題第四問</TITLE></HEAD>\n";<BR>
print "<BODY>\n";<BR>
print "$H <BR>\n";<BR>
<BR>
<BR>
print "</BODY>\n";<BR>
print "</HTML>\n";<BR>
回答 若山 知薫

別解
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";

@A = ("おわだまさこ","かわしまきこ","","");
for ($i=0; $i<=12; $i=$i+2)
{
$A[2]=$A[2].substr($A[($i/2)%2], $i, 2);
$A[3]=$A[3].substr($A[($i/2+1)%2], $i, 2);
}
print "$A[2]\n";
print "<BR>";
print "$A[3]\n";

別解 定 翼
第5問
問題
@アクロスティック、Aテレスティック、Bダブルアクロスティックの文章を作り、HTMLでそれらが分かりやすいようにプレゼンテーションしてください。

アクロスティックとは、文章の各行の最初の文字をつなげると意味のある文字列が出現する物です。
テレスティックとは、文章の各行の最後の文字をつなげると意味のある文字列が出現する物です。
ダブルアクロスティックとは、文章の各行の最初の文字をつなげると意味のある文字列が出現し、それが文章の各行の最後の文字をつなげると出現する文字と同じ物になる文章です。

最後の第5問は人工知能によくある例題です。ちょっと頭を使わないと解けないと思いますが、がんばってください。
多少文章がおかしいのは仕方がないですから、出来たと思ったらどんどんメールしてください。

出題 定 翼

回答
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";

@A = ("らくばかり","くろうしらずのいいじだい","だけどさいごに","いたいめにあい"
);

$B = substr($A[0], 0, 2);
$C = substr($A[1], 0, 2);
$D = substr($A[2], 0, 2);
$E = substr($A[3], 0, 2);


$H = $B.$C.$D.$E;


print "<HTML>\n";<BR>
print "<HEAD><TITLE>宿題第五問</TITLE></HEAD>\n";<BR>
print "<BODY>\n";<BR>
print " <BR><B>アクロスティック文</B><BR><BR><BR>タイトル  落第<BR><BR>\n";<BR>
<BR>
print "$A[0] <BR>$A[1] <BR>$A[2] <BR>$A[3] <BR>\n";<BR>
print "<BR><B>$H</B> <BR>\n";<BR>
print "「楽ばかり 苦労知らずのいい時代 だけど最後に 痛い目にあい」\n";<BR>
<BR>
print "<BR><BR><BR>以下テレスティック、ダブルアクロスティックは省略 <BR>\n";<BR>
print "参考  アクロスティックの部屋 <BR>\n";<BR>
print "http://www.sutv.zaq.ne.jp/shirokuma/acrostic.html <BR>\n";<BR>
print "</BODY>\n";<BR>
print "</HTML>\n";<BR>


回答 若山 知薫