巨大Hit and Blow

#Hit and Blow
use List::Util(shuffle);
($max_kind, $max_length) = (26, 70);
($kind, $length, $seed) = @ARGV;
unless($kind){
	print <<"EOM";
Hit and Blow
答えの文字を推理する遊びです。答えだと思う文字列を入力してください。

使い方: スクリプト名 文字の種類数 文字長 問題番号

文字の種類数に正の数を指定すると、答えが文字重複なしになります。
文字の種類数に負の数を指定すると、答えが文字重複ありになります。

文字の種類数、文字長、問題番号が同一なら、答えは同一になりますので
じっくり解きたい場合に向いています。

ただしperlのseed関数とList::Utilモジュールに依存していますので
それらに変更があった場合、答えも変更される可能性があります。
EOM
}

srand $seed;
if($kind < 0){ #文字種
	$kind = $max_kind < -$kind ? -$max_kind : $kind;
	$length = $length < $max_length ? $length : $max_length;
	@answer = map{(A..Z)[rand -$kind]}1..$length;
	print "mode:文字重複あり\n";
}else{
	$kind = $max_kind < $kind ? $max_kind : $kind;
	$length = $length < $kind ? $length : $kind;
	@answer = A..Z;
	@answer = shuffle @answer[0..$kind-1];
	@answer = @answer[0..$length-1];
	print "mode:文字重複なし\n";
}
#print "答え".(join'',@answer)."\n";
print "文字種 ".(join '',map{[A..Z]->[$_]}(0..-1+abs $kind))."\n";

while(1){
	$count++;
	my($hit, $blow, %input_blow, %answer_blow)=(0,0);
	print '!>'.(join' ',(map{'****'}(1..(int $length/4))),("*" x ($length % 4)));
	print "\n?>";
	$input = <STDIN>;
	$input =~ tr/a-z \t\n/A-Z/d;
	@input = split //, $input;
	for$i(0..$#answer){
		if($input[$i] eq $answer[$i]){
			$hit++;
		}else{
			$input_blow{$input[$i]}++;
			$answer_blow{$answer[$i]}++;
		}
	}
	last if $hit == $length;
	$blow = grep{exists $answer_blow{$_}} keys %input_blow;
	print "$count回目:位置も種類も合っている文字数(hit) $hit / 種類だけ合っている文字数(blow) $blow\n\n";
}
print "\n正解。 答えは 「".(join'', @answer)."」です。\n\n";
exit;

4桁とか数字の種類が9つとかに飽きたらなくなったので、厄介なものを作ってみた。
設定 26 13 2 で104回かかってしまった…。

少々気になる質問を見かけた。
http://q.hatena.ne.jp/1301626537
高齢男性のコミュニケーションについての質問である。

私が気になる点は、どうしたら高齢男性とコミュニケーションを楽しく取れるか、では『ない』。その前の段階、そもそもほぼすべての人に対して楽しいコミュニケーションを築くこと自体が可能なのか、である。もっと積極的に言えば、どう工夫してもコミュニケーション自体が苦痛な人はまあまあ存在するのではないだろうか。確証はないが、もしかしたら、女性が自らの子に対して愛情を抱くこと程度に自然なことかもしれない。

ただ、必要最小限のコミュニケーションを行う際に、少しでも苦痛を抑える方法は考えられるのかもしれない。マニュアル対応や事務員のように機械的に応対する、機械や書類などを介してコミュニケーションをとる、などである。

……機嫌が悪い時に、怒らせまいと人情味のある対応をとられると、かえってぶち切れる人はいる。

電気料金を値上げすれば計画停電は回避できたのか?

http://blog.livedoor.jp/kazu_fujisawa/archives/51804805.htmlなどを読んで。

以下は単なる推測で根拠はありませんが……。

1:どうやって値上げ開始時点の基準電力量を土日で計測するというのか。
2:電力料金の値上げに鈍感、あるいはかなり電力料金を値上げされてもこの電力量は使うという決断がなされる箇所は多そうだ。
3:値上げ幅と電力量消費の相関は正確に見込めるのか。わずかでも需要オーバーすれば即全域停電になる危険が非常に高い。
4:電気を使う業者が電気料金の上昇を瞬間的にきちんと各種料金などに転化させられるのか。
5:電気を使う業者が電気料金の値上げを理由にサービス等料金などに転化した場合、急な料金やサービス内容の変化に対し、客とのトラブルが大量に発生するであろう。それよりは東電が泥を被るほうがまだ社会的混乱が小さい可能性がある。

ということで私は短期的には計画停電しかなかったと考える。電気料金の突然の暴騰でえられる計画停電回避のリターンは、暴騰にまつわる各種コストに比べれば小さいのでは?

ただし中期的には支持できる政策。
この夏は酷暑が予想されているので、それをどう乗り切るかが鍵でしょう。
大勢の人は地理的に避暑するしかないかもしれませんね。
(長期的にはもちろん発電能力の回復と機器の省エネ化)

http://q.hatena.ne.jp/1299505561

仮にA君が嘘を言っていないと仮定すると、小さいのを食べたのはA君になります。
しかしA君は嘘を言っています。
ということは大中小とABCの対応を入れ替えなければ事実にはなりません。
それには少なくとも2つの対応を入れ替えなければなりません。
しかしA君が直接言った嘘は1つだけなので、
A君が直接言ってはいない「小さいのを食べたのはA君」も偽であることが確定します。

同様にB君の証言を考えれば、小さいのを食べたのはC君ではありません。

二人の証言を合わせれば
【小さいのを食べたのは】A君でもC君でもないので、【B君で確定】します。

よってA君の証言に戻り、A君の証言で嘘なのは
「大きいのを食べたのはB君」の方なので
【中くらいのを食べたのはC君】は真になり

残ったケーキと人物を組み合わせて
【大きいのを食べたのはA君】となります。

5×5のマス目に6個の○

5行5列に6個の○、かつどの行・列にも○が1つはあるので、とある1行に2個○があり、またととある1列にも同じように○が2個ある。

○●●●●
●○●●●
●●○○●
●●○●●
●●●●○

上のように2個○がある行と2個○がある列の交点に◯があるタイプは、まず交点の○を外して考えると

○●●●●
●○●●●
●●●○●
●●○●●
●●●●○

と5!通りあり、そして交点の○についてはそれぞれ20通りあってダブリがない。よって5! x 20 = 2400通り。

そして2個○がある行と2個○がある列の交点に◯が「ない」タイプは

○●●●●
●○●●●
●●○○●
●●●●○
●●●●○

こんな感じになるが

▽▼●●●
▼▽●●●
●●☆☆★
●●★★☆
●●★★☆

のように2x2と3x3に分解できる。(行・列ともに重複していない○が2つ、行か列のどちらかが重複している○が必ずしも連続していない3x3に4つ)

この分解は(5C2)^2通りあり、さらに2x2には2通り、3x3は交点の選び方だけでパターンが決定され3x3通りある。つまり
{(5C2)^2}x2x(3x3)=1800通りあってダブリがない。

総計は 2400 + 1800 = 4200通り。

味覚をメディアに飼い慣らされることはほぼ誤りだと思う

味覚をメディアに飼い慣らされることはほぼ誤りだと思う。

チャーハンの中に混ぜても子供にピーマンや人参をなかなか食べさせられない親、パイナップルの酵素の効果を知ってもなお酢豚へパイナップルを入れることに激怒する人々(私もそうだ)、駄菓子屋におけるニッキ水、青汁、横井庄一が投降したときに塩を求めた話、そして決定打としては、特に文明前においては個々の食物の状態はそれぞれなため、実際の味覚においては他者の評価を鵜呑みにすると危険であったこと、そのへんから考えられると思う。

時間があったら丁寧な文章に大きく書きなおそうと思うが……いとまず手元にあるできたばかりの夕食をいただくとする。いただきます。

なぜ3×5が二重に間違っていると私は考えるのか

http://kidsnote.com/2010/11/15/35or53/
私は、皿に比率を積するほうがずっと文章の内容を自然に表した式と考えます。

「何を言うんだ、5だって、一つ分じゃないか。ほら、一つずつ皿にのせた場合、5つ載せると一巡する」
皿に1つずつりんごが載っている状態を1つ分と考えることは現実的ではありません。5皿に1つずつ載った状態を一つ分と考え、それが3つ分だと考えるなら、皿も15皿必要になります。
どちらかというとこれは割り算の考え方に近いです。

「違うって。皿に1つずつ、5皿分載せる作業を1つ分とするんだ。」
そしたら、1×3になりませんか?だって作業は回数であって、個数ではないですから。
1作業×3回=3回作業した あれ。聞かれていることと変わってきてますよ。答えが。

問題文には「1皿にリンゴが3個ずつ」とあります。すでにここからして”比率を用いた表現”であって、”同数の集合”表現ではありません。
これを3+3+3+3+3と主張したいのであれば、”整数被乗数と比率の積は、比率を整数被乗数の回数だけ加算したものに等しい”という別の主張が必要になります。
その主張が式の他に必要となるという点で不自然です。

また「”整数被乗数と比率の積は、比率を整数被乗数の回数だけ加算したものに等しい”という主張は、脳内で皿とリンゴの様子を思い浮かべれば、交換しても同じだと理解できるからいいじゃないか」と主張されるかもしれませんが、それなら「5皿それぞれにいっぺんに1つずつりんごを乗せる作業を思い浮かべ、5個リンゴを扱う作業が3回と理解するくらいいい」ですよね?

3x5の方が、文章が述べていることと式が述べていることの順序が逆だと、私は主張します。

逆にしてもいいとすることの弊害

* 倍の概念が育ちません
* 割り算の時にも引っかかりが出ます
* 計算に小数が入ってきたときにつまずきます
* 平均、単位量あたりの大きさでつまずきます

それにしても3x5を正解にすると、そのような弊害が起こると主張されますか。ふむ。


積を表す文章において、よっぽどのことがなければ、被乗数は先に現れます。

仮想問題1:5つの皿に3つずつりんごが載っています。りんごは全部でいくつですか?

これでも3x5ですか?では次の問題はどうでしょう。

仮想問題2:
a)5つの皿に3つずつりんごが載っています。りんごは全部でいくつですか?
b)4つずつりんごを載せたらりんご全部でいくつですか?
c)6つずつではどうですか?

どうですか?いちいち前のほうの数字を替えて3x5、4x5、6x5とするのは抵抗がありませんか?それに比べれば5x3、5x4、5x6と替えていくのはずっと抵抗感が小さいはずです。
そうです、前提となるもの、操作されるものは先に述べられ、それに作用するものが後から述べられる、これがごく自然なのです。

こうするとよりわかりやすくなるでしょう。足し算法を素直に適用して解けるでしょうか?

仮想問題3:
皿が12枚あります。3皿につきりんごを1個ずつつけます。
りんごは全部で何個あるでしょう。

そもそも論争を引き起こした問題そのものと表現が、比率そのもの……割り算にかなり近い要素を内包しているのではないでしょうか。

おそらく出題者は式の順序がちゃんとできるかをみる引掛け問題を出したつもりなのでしょうが、真に意味からして順序が逆の問題を作ってしまったけれど、それに気づけなかったんでしょうね。

━━━━━━━━━━━━━━━━━━━━━━
小学生が学ぶ可換な掛け算において積の順序を重視するのはナンセンスである上に、順序を重視するならむしろ5x3が正しく3x5が誤りという、二重の誤り。小学生はほんと大変だ。