Math Battle [ 0036: 2次元ブックマーク ]

[ 0036: 2次元ブックマーク ]


[ 湯会老人の出題 ]

私は既存のブラウザーのブックマークが好きではないのです。
縦に並べるにせよ、横に並べるにせよ 1 次元。
項目が多いとスクロールが面倒。
2 次元ブックマークの HTML ファイルを自動で作るプログラムを書いてください。

Perl で書くのであれば、実行は:

$ perl create_bookmark.pl < list > bookmark.html

テキストファイル list の各行は:

 ① URL (非空白文字列)。
 ② 1個以上の空白文字。
 ③ 説明 (非空白文字列)。

こんな感じになります。

http://obiwan3.greater.jp/ 奇想天外ホーム
https://mail.google.com/mail/u/0/?pli=1#inbox Gmail
https://www.wolframalpha.com/ Wolfram|Alpha
http://kubrick.blog.jp/archives/52018394.html HAL9000の反乱
https://www.youtube.com/watch?v=h8PzQODTw_k Caro_mio_ben
https://www.youtube.com/watch?v=9jK-NcRmVcw Final_countdown
....
https://www.youtube.com/watch?v=lFktfr1kmHc Queen_of_the_Night
https://www.nfl.com/ NFL_Official
https://www.youtube.com/watch?v=r5BGIi84arY Ramanujan
https://www.youtube.com/watch?v=cvG77iyFvlU 1869MIT問題
....


[ 浅見多絵さんの回答 ]

とりあえず書いてみました。Perl と HTML の基礎はわかります。
わからないところは疾矢君に聞きました。

いつもの口癖で「多絵さん、こんなの朝メシ前だよ」と言いますので、
つい私も頑張ってしまいました。

...
print <<"EOS";
<html>
<meta http-equiv="Content-Type" content="text/html;
charset=UTF-8" />
<style type="text/css">
<head>
<style>
body {line-height : 6px ; }
</style>
<title>
2次元ブックマーク
</title>
</head>
<body bgcolor="#00ddcc">
<table border="1" bgcolor="#cceeff" cellpadding="3">
EOS

$td = '<td valign="middle" ';
$td .= 'align="center" ';
$td .= 'width="150" ';
$td .= 'height="15" ';
$td .= 'bgcolor="#ffeeee">';

$n = 0;
@lines = <STDIN>;
foreach $line (@lines) {
 goto match_error unless $line =~ /(\S+)(\s+)(\S+)/;
 $n++;
 print '<tr>' if ($n % 4 == 1);
 print "$td";
 print "<a href=\"$1\">";
 print "$3";
 print '</a>';
 print '</td>';
 print '</tr>' if ($n % 4 == 0);
 print STDERR "Matching OK\n\"$line\"\n($1) ($2) ($3)\n";
 next;
match_error:
 print STDERR "Matching error\n\"$line\"\n($1) ($2) ($3)\n";
}
print <<"EOS2";
</body>
</html>
EOS2


[ 湯会老人のコメント ]

多絵さん、ご苦労さま。やることが速いですね。

ところが、実際に実行しますと、「Matching error」が出る行がいろいろあります。
私にも原因がわかりません。しばらく考えてみます。
/(\S+)(\s+)(\S+)/ というパターンマッチングの指定は全く間違っていません。
Perl のバグなのかな。


[ 千手春弥さんのコメント ]

私が気がついたのは: $td を一つの文字列("....")であらわすと
syntax error になること。変ですね。
多絵さんもそれにぶち当たって、文字列の結合にしたのでしょう。


[ 湯会老人のコメント ]

iPhone である設定をすると、 iPhone を横向きした場合、
画面表示も横長にすることができます。


[ 千手春弥さんのコメント ]

私もやってみました。メール機能に使うと見やすいですね。


[ 湯会老人のコメント ]

横長表示にすると、画面にあらわれるキーボードが大きくなります。
押し間違えがなくて快適ですね。

[ 0041: 次の記事 ]

[ 0040: 穴あき球の体積 ]

[ 0039: SATの出題 ]

[ 0038: サッカーボールの形状 ]

[ 0037: 25頭の中の1着から3着 ]

[ 0036: 2次元ブックマーク ]

[ 0035: Smooth Operator ]

[ 0034: n次元球の表面積と体積 ]

[ 0033: Boxing Day とは? ]

[ 0032: 4匹の肉食性昆虫 ]

[ 0031: 9の「9の9乗」乗の下2桁 ]

[ 0030: 未来黙示録の曲 ]

[ 0029: メロディーの共通点 ]

[ 0028: 仮名手本忠臣蔵 ]

[ 0027: 地球貫通の時間 ]

[ 0026: 車かヤギか ]

[ 0025: 騎士2人に競わせる妙手 ]

[ 0024: 日本代表コレクション ]

[ 0023: ベンツ時刻 ]

[ 0022: 赤い三角形の面積 ]

[ 0021: ナイキマークの面積 ]

[ 0020: 前の記事 ]

[ トップページへ ]