量子相関X線撮影法

ご存知のとおりX線は医学で多用されています。ただ少々被曝が気になるところではあります。X線といえども光にすぎないのですが日光に比べて人体にたいする破壊力が大変に大きいのですよね。
さて、量子相関(エンタングルメント)されたEPR対のように二つの光子をペアで生成し、片方の光子Aは放置しておいて、もう片方の光子Bを人体撮影に使い透過してきたところで先ほど放置しておいた光子Aとひきあわせます。細かいテクニックはさておいてこの突合せ方法を上手に設定すると、理論値では従来のX線の100万分の1の光量で充分に医学的所見が得られるのだそうです。すさまじい。まだまだ必要な機材の開発ができていないようですが。このオハナシは少し前の日経サイエンス誌の記事になっていました。ですからこうしたアーキテクチャの方向性は本当に実現しかねないのです。
こんな未来社会を考えてみませんか?街中いたるところで量子相関X線撮影機によって監視されている…スキャンされるターゲットは我々の大脳皮質の皺のよりかたで、これは指紋同等に個人の識別が可能。 自宅でパソコンに向かうとX線照射されて自動ログイン。 銀行でも空港でも商店でもどこででも、あなたは追跡され続ける…脳紋で。
あ〜嫌だ嫌だ嫌だ嫌だ。
それはともかく、量子相関X線撮影は本当に有意義な技術ですよね。エンタングルメントの応用という明るい未来。

プラス記号を使わずに文字列を結合する。

結合したい!!

JavaScriptなオハナシ。所与の strA と strB とで、strCを作りたい。ただし、結果としてstrC = strA + strB になってほしい。 条件として、プラス記号を使わない、pushやconcatを使わない、slice系もナシ、joinも使わない、正規表現も使わない、要するに文字列結合に使えそうなメソッドは全部我慢する、さてどうしましょう? というのを本日、病院の待合室で考えていたら面白いものができたので書いてみます。

ノーマライズすれば結合できる

strAとstrBの文字列の値を持ったTextNodeをそれぞれ作って隣接させておき、その親のエレメントをnormalizeしてやれば、その2つのTextNodeが素敵なことに合体するので、出来上がったTextNodeの値をstrCに格納すればよかろう、という思いつきです。基本的な標準のDOM操作を使っているはずなのでクロスブラウザになっているといいかと思います。IE,Opera,Firefoxで確認しました。

var e, strA, strB, strC;
strA = "<aaa\r\n>";
strB = "bbb";

e = document.createDocumentElement("p");
e.appendChild(document.createTextNode(strA));
e.appendChild(document.createTextNode(strB));
e.normalize();
strC = e.firstChild.nodeValue;

alert(encodeURIComponent(strC));

みなさんからいただいたアイデアについて

トラックバックをいただきまして、さまざまなアイデアをいただきました。素敵杉。
hasegawayosukeさんからいただいたアイデアのうち、ひとつは、innerHTMLを使っていますが、strAに『<』とかがはいっているとどうなのでしょうか。ブラウザ毎に振り分けをしておいて、textContentもしくはinnerTextを使えばいいかと思います、たぶん。それと、『pre』要素を作っていますが、これを『xmp』や、『plaintext』にするとIEFirefoxではinnerHTMLのままでも『<』等が文字参照されずにすみます。CDATA扱いなのでしょうかねぇ。ただし、Operaではこの手は使えません、文字参照されちゃいます。そこで。『pre』の代わりに『script』や『style』ではと試みましたが、OperaFirefoxではなんだかイケソウな気がしますがIEではエラーになるっぽいです、残念。hasegawayosukeさんのほかの二つのアイデアは個人的に意表をつかれました。なるほろー。勉強になりますです。
yamagata21さんからいただいた3つのアイデア、記述がどれもこれも…背景が黒すぎますw。(HTMLのスタイルが。)ええと、Functionを使っているやつ、面白かったです。それと、"bbb"の先頭のnullを"aaa"で置き換えるってのは絶対に私には思いつきません。すげぇ。おかげさまで手元の謎サンプルが少々簡略表記できることになり…私のは黒くありません。メモ帳で書いてありますから。