2010-3-26 (Fri)
というのはウソでいっぱいたまってるんだけど (書く“べき”ことが、ではない)、 量をためすぎて一度に全部ぶちまけると大変なことになるのでやらない。
まァ時機もほとんど逸しまくってるし、 ためといても特に何も支障がなかった程度の内容だし。 とりあえず未来の自分 (のヒマツブシ) 用にぼちぼち小出しに。
それにしても…。
以下いろいろ拾った URL、ほぼ順不同 (時系列っぽいけど必ずしも時系列でもない)。
とかく日本人は、政治に関して忘れっぽい。とんでもない法案を出した議員でも、次の選挙の時期になるともうすっかり忘れて、聞いたことある名前だから、ということで投票してしまったりする。今回の騒動がどういう規模であったのか、今回の法案に賛成したのはどの政党で、賛成派はどの議員なのかをしっかり調べて、ネット上で記録として残しておくべきだ。今回の問題で実働した皆さんは、検索で探せる形にして、今回知り得た情報のメモをできるだけ沢山、ネット上に残しておいて欲しい。
継続審議とは「意義ある改正なのでより一層の審議を行い、次の議会で可決する」との意味。廃案にならないことが決定したと。従って、改正による条例文面を無害化するしかないとのこと。
購入記録
- ●
雑誌「まんがタイムオリジナル」2010.4 芳文社 - ●
雑誌「まんがライフMOMO」2010.4 竹書房 - ●
雑誌「まんがホーム」2010.4 芳文社 - ●
雑誌「まんがくらぶ」2010.4 竹書房 - ●
雑誌「まんがタイムジャンボ」2010.4 芳文社 - ●
雑誌「まんがタウン」2010.4 双葉社 - ●
雑誌「まんがタイム」2010.4 芳文社 - ●
雑誌「まんがライフオリジナル」2010.4 竹書房 - ●
雑誌「まんがタイムラブリー」2010.4 芳文社 - ●
雑誌「まんがタイムファミリー」2010.5 芳文社 - ●
雑誌「まんがライフ」2010.5 竹書房 - ●
雑誌「まんがタイムスペシャル」2010.5 芳文社 - ●
雑誌「まんがくらぶオリジナル」2010.5 竹書房
2010-3-27 (Sat)
convert -channel R -normalize -channel B -normalize -channel G -normalize -channel RGB {他処理} 元画像 新画像
自転車購入から 2年半で 1300km って少ないんだろうなァ。 まァ滅多に外出しないからな。
蛇足的脚注
- *27-1 : 電池交換
- そういや先日 2度目の電池交換をしたんだった。 今度はバッテリー切れサインを見落とさず、 ちゃんとメモっておいた値を書き戻せたが、 電池交換の度に内容が揮発しちゃうのはややメンドくさい。 設定方法も若干ややこしくて覚えてられないんでその都度取説を引っ張り出さないとあかんし…。 まァ値段も値段だし仕方ないところだが。
2010-3-29 (Mon)
TV CM で、他人の (架空の) アイテムを“盗める”っつーのがウリらしい携帯用ゲームを宣伝してるんだけど (DeNA のモバゲーのなんとかいうやつ) CM をボーッと見ていて受けた印象では、 ゲーム内のキャラクタではなく現実世界の相手 (ゲームプレーヤ) を特定できてるように見える。 そんな訳ないよなァ…と思って検索してみたが、 やはりリアルな相手を (少なくともゲーム内から) 特定できるような仕掛けはなさそうだ。 ボーッと見てるのが悪いと言われればそれまでだが、 なんか紛らわしいよーな気がするんだよなあの CM…。
まァしかし実世界の誰かであっても架空世界のキャラクタであっても、 互いの (架空の) “持ち物”を窃盗しあうゲームって、面白いのかなあ。 そのセンスがよく理解できないなァ…と CM を見る度に思うんだった。 どっちみち携帯端末持ってないんで実際どういうシステムなのか確認もできないが。 Willcom の PHS はいわゆる“携帯”向けサービスからほぼ完全にハブられてるからな。 (それ以前に Willcom 自体風前の灯っぽいけど。 PHS は出力弱いところとその弱点をカバーするように高出力の基地局をたくさん作った旧 DDI ポケットの方針が好きなんで (ヘンな理由)、 細々でもいいから続いて欲しいんだけど、どうなることやら)
もう 2ヶ月も前のことだが、 生まれて初めて幅優先探索のコードを書いた。 これまでは深さ優先探索 (バックトラック法) のコードしか書く機会がなかったんだった。
↓これなんですがな。とある会社の中途採用の入社試験。 (応募した訳ではない)
内容は、壁とスペースで構成された迷路が与えられたとき、スタート地点からゴール地点に至る最短経路を求めよ、というものです。
たとえば、S:スタート G:ゴール *:壁 $:解答の経路 としたとき、
************************** *S* * * * * * * ************* * * * * ************ * * * * ************** *********** * * ** *********************** * * G * * * *********** * * * * ******* * * * * * **************************という入力に対し、
************************** *S* * $$$ * *$* *$$*$ ************* * *$* $$* $$$************ * *$$$$* $$$$$ * **************$*********** * $$$$$$$$$$$$$ * **$*********************** * $$$$$*$$$$$$$$$$$$$$G * * * $$$ *********** * * * * ******* * * * * * **************************という出力が来ればOK、というわけです。(ブラウザだと見づらいかもしれないのでテキストエディタ等にコピーすれば見やすくなります)
もうちょっと細かい条件としては、
- 入出力はテキストデータを用いる
- 一度に動けるのは上下左右のみ。斜めは不可
- 最短経路が複数あるときはそのうちの1つが出力されていればOK
- 入力データのバリデーション(長方形になっているか、スタート・ゴールが1つずつあるかどうか、等)は不要
- 制限時間は3時間
- プログラム言語・OSは自由
なお、可能な全経路を列挙した上で最短を求める、というアルゴリズムは、マップのほとんどがスペースである場合に現実的な時間で終わらなくなってしまうのでLv3扱いです。
可能な全経路を列挙した上で最短を求める、というアルゴリズム」というのは、 深さ優先探索 (バックトラック法) のことのようだ。
しかし迷路をたどる系プログラムというと深さ優先探索のコードしか書いたことがない。 まァこのくらいの迷路なら比較的単純な枝刈りだけでもそんなに時間もかからん気がするし、 どのくらいかかるかとりあえず書いて動かしみてダメそうだったらまた考えよう、という戦略で、 まずは深さ優先探索で (いつものように Perl で) 書いてみた。 所要時間約 30~40分 (うろ覚え)。 Cygwin 上で走らせたところ、数分程度で解が出た。
use strict; # 深さ優先探索 # マップ: # '*' 壁 # 'S' スタート地点 # 'G' ゴール地点 # '$' 足跡 # ' ' 道 my @map; while (<DATA>) { chomp; push @map, [split '', $_]; } # 何歩進んだかのカウンタ my $step = 0; # ゴールまでの歩数の過去最小値 my $minstep = 0; # 座標(スタート地点で初期化) my ($x, $y) = get_start(); search_next_and_go(); sub search_next_and_go { # 上 go_d(0, -1); # 右 go_d(1, 0); # 下 go_d(0, 1); # 左 go_d(-1, 0); } sub go_d { my ($dx, $dy) = @_; # 進めるか判定 my $c = $map[$y + $dy][$x + $dx]; return if $c ne ' ' and $c ne 'G'; # よし行け $step++; # 単純な枝刈り if ($minstep and ($minstep <= $step)) { $step--; return; } $x += $dx; $y += $dy; if ($map[$y][$x] eq 'G') { goal(); } else { $map[$y][$x] = '$'; search_next_and_go(); $map[$y][$x] = ' '; } $x -= $dx; $y -= $dy; $step--; } sub get_start { my $len = $#{$map[0]}; for (my $y = 0; $y <= $#map; $y++) { for (my $x = 0; $x <= $len; $x++) { return ($x, $y) if $map[$y][$x] eq 'S'; } } return (-1, -1); # MAPが正しければ決して返さない } sub goal { $minstep = $step; print "step: $minstep\n"; print_map(); } sub print_map { for (@map) { print @$_, "\n"; } } __DATA__ ************************** *S* * * * * * * ************* * * * * ************ * * * * ************** *********** * * ** *********************** * * G * * * *********** * * * * ******* * * * * * **************************ところで説明文にあるような「マップのほとんどがスペースである場合」はどうなるのか。 試しにマップをいじって広場をいくつか作ってみたところ、 今度は何十分待っても終わらない。 探索過程を表示させてみたら、とても数時間やそこらじゃ終わりそうにない感じの進み具合。 なるほど~。
で、 Web で情報漁りつつ幅優先探索のコードも書いてみた。 深さ優先探索がスタックを使って再帰的にたどるのに対し、 幅優先探索ではキューを使って出発点から近い順に処理していくのだが、 最短ルートをどう判別すればいいのかピンと来ず半日ほど悩む。 深さ優先なら処理を進めつつ、たどったノードをスタックに積んでいって (戻る時は値も捨てて)、 ゴールに着いたらスタックを底から読み出せばいいだけなんだけど。 結局、全ノード分のワーク (二次元配列) を用意して、 ノードごとに「どちらから進んできたか」の情報を格納しておき、 ゴールに着いた時点でゴールから経路を遡ってたどればいいと分かるまでずいぶんかかってしまった。 (頭錆びついてけつかる)
そんなこんなでなんとかコードをでっち上げて走らせたところ、 ほぼ一瞬で答えが出てしまった。うほー。 マップを広場だらけに書き換えてもほぼ一瞬。 全部広場にしてもほぼ一瞬。 まァ原理的には確かにそうなんだろうけど、 しかし探索の仕方でこうも劇的に処理速度が変わるんだなァ、と改めて思った次第。
use strict; # 幅優先探索 # マップ: # '*' 壁 # 'S' スタート地点 # 'G' ゴール地点 # '$' 足跡 # ' ' 道 my @map; while (<DATA>) { chomp; push @map, [split '', $_]; } # 座標(スタート地点で初期化) my ($x, $y) = get_start(); my @queue; my $from; # スタート地点の目印 $from->[$y][$x] = [-1, -1]; search_next_and_go(); sub search_next_and_go { push @queue, [$x, $y]; while (($x, $y) = @{shift @queue}) { if ($map[$y][$x] eq 'G') { goal(); return; } else { for ([0, -1], [1, 0], [0, 1], [-1, 0]) { my ($dx, $dy) = @{$_}; # 進めるか判定 my $c = $map[$y + $dy][$x + $dx]; if (! $from->[$x + $dx][$y + $dy] and ($c eq ' ' or $c eq 'G')) { push @queue, [$x + $dx, $y + $dy]; $from->[$x + $dx][$y + $dy] = [$x, $y]; } } } } print "no answer.\n"; } sub get_start { my $len = $#{$map[0]}; for (my $y = 0; $y <= $#map; $y++) { for (my $x = 0; $x <= $len; $x++) { return ($x, $y) if $map[$y][$x] eq 'S'; } } return (-1, -1); # MAPが正しければ決して返さない } sub goal { my $step; # mapに足跡を描く while (1) { my ($nx, $ny) = @{$from->[$x][$y]}; last if ($nx < 0 or $ny < 0); $map[$y][$x] = '$' if $map[$y][$x] eq ' '; $step++; ($x, $y) = ($nx, $ny); } print "step: $step\n"; print_map(); } sub print_map { for (@map) { print @$_, "\n"; } } __DATA__ ************************** *S* * * * * * * ************* * * * * ************ * * * * ************** *********** * * ** *********************** * * G * * * *********** * * * * ******* * * * * * **************************ちなみに他にも探索アルゴリズムとして A* 法だとかダイクストラ法だとかいろいろあるらしいが、 今回はごく普通の幅優先探索で済んだので使ってみてない。
他の人の解も見てみたが、やはり深さ優先探索で解いてる人がいた。 そう、先述サイトの例題 (マップ) に限ればそれで解けちゃうんだよねえ。 出題者の仕掛けたワナかも。 あと OO なコードの人がやっぱし多い。気がする。 ま~ OO な言語を使ってる人が多いから当然なんだろうけど…。 しかし OO かどうか以前にグローバル変数デフォルトな時点でアレだよな。ワシのコードの場合。 (全体がこれくらいの規模ならまァ問題なかろう的な感じで。 でも実は規模に関係なくいつもそんな感じだったりする)
「非実在少年・規制推進派」メンバーの弁護士・後藤啓二氏が、 出版業界関係者などが、一人もいない(たぶん、いませんでした)場所で、 外務省、ユニセフ関係者、外国人警察関係に対して、どのように説明するかが知りたかったからです。
(*後藤啓二/元警察庁の官僚。児童ポルノ、児童買春、トラフィッキングの取り締まりや、 これら禁止法の制定でNGOと昔から協力。東京都青少年健全育成条例の、草案メンバー) 著書『なぜ被害者より加害者を助けるのか』は、元安倍総理も推薦している。
昨日の都条例改定に反対する漫画家会見は、朝日新聞が1面で報じたり、テレビのニュースでも扱われるなど大きな報道となった。新聞では東京新聞も社会面で大きな扱い。毎日や産経も記事にしている。ようやく12日頃から新聞記事が出始めたこの問題だが、一気に大きな話題になった。
昨日の集会でも、今までこういう動きがあったのを知らなかったという発言が多かったのだが、実は昨年来、児童ポルノ法と青少年条例改定の問題は水面下で連動しながら着々と動いていたのだ。ほとんど報じられていないその経緯について、詳しく報告したのが『創』2010年1月号の長岡義幸さんのレポートで、これがこの間、改めて注目を浴びている。
その関心の高まりを受けてアマゾンなどでもこの号の追加注文が入るなどしているのだが、事態が風雲急を告げているため、『創』はここに、そのレポートを公開することにした。大手出版社にはありえない太っ腹な判断だが、あと数日のうちに条例改定が採決されてしまうという大事な局面に細かいことを言っている場合ではない。
同時に、このサイトでは、この間出された改定に反対する声明や意見書もできるだけ紹介し、リンクを張っていきたいと思う。
では以下、『創』1月号に掲載された「児ポ法、青少年条例など性表現規制強化の動き」(長岡義幸)の全文である。