たつをの ChangeLog : 2012-03-08

会社のお弁当売場であずき茶を扱わなくなってはや数年。アマゾンでリーズナブルな値段で購入できるのかー。1本約138円だって。


遠藤製餡 ゼロカロリーオーガニックあずき美人茶 500ml×24本

遠藤製餡 北海道産小豆 あずき茶 500ml×24本


箱買いして会社に送りつけたいけど、重いしデカいしで迷惑かけちゃうので自重。

過去記事

この記事に言及しているこのブログ内の記事

興味深い話だったのでメモ。

  • 食後すぐの歯磨きはNG 虫歯予防の新常識 (日本経済新聞)
    「食後は歯磨きまで30分ほど置くのが安全策」「なんとなく3回磨くよりも1日1回、特に寝る前に口の中から徹底的に汚れを出すことが大事」口の中の食べカスが歯垢になるまで48~72時間かかる。毎食後に歯を磨けなくてもまだ間に合う。寝ている間は唾液が減って口の中の菌が増えやすくなるので、寝る前に口の中をきれいにするのが効率的だ。
    2センチメートル大の歯ブラシのヘッドなら、その3分の2くらいにたっぷり歯磨き粉を絞り出して歯茎に塗り込む感覚で使う。水で流れないように磨いた後の口のすすぎは最小限に抑える。低濃度でも歯が長時間フッ素に接することで効果があるので、毎食後に歯を磨ける人は歯に小まめにフッ素を与える機会になる。

1日3回食後3分以内に3分間、とか言われていたけど、それが正しいというわけでなないということが分かってきてらしい。ちょっと衝撃的。

フッ素の有用性はよく聞くよね。うちも最近はフッ素入りの歯磨き粉を使っています。

とあるタスクにおいて、重複を持たない組合せ(コンビネーション)を羅列する必要があったので、復習も兼ねてPerlでゼロから書いてみた。
(参考:Wikipedia:組合せ_(数学)

異なる n 個のものから異なる m 個を選ぶ。高校の数学でやった「場合の数」。



数はどうでもいいので、実際の組み合わせを深さ優先と幅優先の両方の方式で羅列する。汎用性のため、リスト(配列)そのものから選ぶのではなく、インデックス(配列の添字)から選ぶ。

■コード(combination.pl):
#!/usr/bin/perl
use strict;
use warnings;

my @chars = qw(A B C D E F G H I J K);
my $n = 5; # 全体の数
my $m = 3; # 選ぶ数

my @results = ();
df_combination($n, $m, []);
print join("", map {join(",", @$_)."\n"}  @results);
print join("", map {join("", map {$chars[$_]} @$_)."\n"}  @results);

@results = ();
bf_combination($n, $m, []);
print join("", map {join(",", @$_)."\n"}  @results);
print join("", map {join("", map {$chars[$_]} @$_)."\n"}  @results);

# 深さ優先探索 Depth first search
sub df_combination {
    my ($n, $m, $p_ref) = @_;
    if (@$p_ref == $m) {
        push @results, $p_ref;
        return;
    }
    my $lv = (not @$p_ref) ? 0 : $p_ref->[-1] + 1;
    for (my $i = $lv; $i < $n; $i++) {
        df_combination($n, $m, [@$p_ref, $i]);
    }
}

# 幅優先探索 Breadth first search
sub bf_combination {
    my ($n, $m) = @_;
    my @nodes = map {[$_]} (0..$n-1);
    while (@nodes) {
        my $v = shift @nodes;
        my @vs = @$v;
        if (@vs == $m) {
            push @results, $v;
            next;
        }
        my $lv = $vs[$#vs];
        foreach my $i ($lv+1..$n-1) {
            push @nodes, [@vs, $i];
        }
    }
}

■実行例:
./combination.pl
0,1,2
0,1,3
0,1,4
0,2,3
0,2,4
0,3,4
1,2,3
1,2,4
1,3,4
2,3,4
ABC
ABD
ABE
ACD
ACE
ADE
BCD
BCE
BDE
CDE
0,1,2
0,1,3
0,1,4
0,2,3
0,2,4
0,3,4
1,2,3
1,2,4
1,3,4
2,3,4
ABC
ABD
ABE
ACD
ACE
ADE
BCD
BCE
BDE
CDE
この記事に言及しているこのブログ内の記事

2ちゃんねるで流れている「さっちゃん」の替え歌が、非常に示唆に富む内容であったので、ついつい歌ってしまった。



- さっちゃんはね、さち子ていうんだ本当はね。 (ぁゃιぃ(*゜ー゜)NEWS 2nd)
http://ayacnews2nd.com/archives/51909570.html
さっちゃんはね、さち子ていうんだ本当はね。
だけど実名をさらすと問題発言をしたときに社会的な立場を損なわせるような嫌がらせを受けたり個人情報を抜かれて犯罪行為に巻き込まれたりするリスクを背負うことになるからネット上では自分のことさっちゃんて呼ぶんだよ。
そつがないね、さっちゃん

via さっちゃんはね、さち子ていうんだ本当はね。 (あひるちゃんがゆく)
http://blog.livedoor.jp/ahiru178/archives/51867709.html
つい歌った。

まあ、実名に近い呼び名だとなんだかんだで本人特定のヒントになってしまうので、ベンザエモンとか玄米太郎とかまったく完全に関係のない名前にするのが良いかと思います。

追記120310: 2ちゃんねるの元ネタはこれっぽいです。投稿は2012年2月17日。
https://twitter.com/#!/yam_nx/statuses/170508854537355266

たつをの ChangeLog
Powered by chalow