<?xml version="1.0" encoding="UTF-8" ?>
	<rss version = "2.0"  xmlns:blogChannel="http://backend.userland.com/blogChannelModule">
		<channel>
			<title>風の迷路</title>
			<description>RPGツクール2000と数学のブログ。
これらを組み合わせてわけのわからないことをしています。
RPGツクール2000と数学の両方が好きな方なら、きっとお楽しみ頂けます。</description>
			<link>https://blogs.yahoo.co.jp/fermiumbay2</link>
			<language>ja</language>
			<copyright>Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.</copyright>
		<image>
			<title>風の迷路</title>
			<url>https://s.yimg.jp/i/jp/blog/iym_img.gif</url>
			<description>RPGツクール2000と数学のブログ。
これらを組み合わせてわけのわからないことをしています。
RPGツクール2000と数学の両方が好きな方なら、きっとお楽しみ頂けます。</description>
			<link>https://blogs.yahoo.co.jp/fermiumbay2</link>
		</image>
		<item>
			<title>本ブログ記事一覧（転載先URL表）</title>
			<description>&lt;div class=&#039;wiki&#039;&gt;&lt;h1&gt;&lt;a name=&#039;section-1&#039;&gt;&lt;/a&gt;転載先URLへの更新 ご協力をお願いします&lt;/h1&gt;
本ブログ（風の迷路）は、12月15日に閉鎖されます。&lt;br /&gt;
いくつかの記事は新ブログ（&lt;a href=&quot;http://fermiumbay13.hatenablog.com/&quot; target=&quot;_blank&quot;&gt;RPGツクールと数学のブログ&lt;/a&gt;）に転載しておりますので、&lt;br /&gt;
お手数ですが、本ブログの記事を引用している場合は、転載先のURLに変更頂きますよう、お願いいたします。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;転載対象は、基本的に以下の選定基準で決めています：&lt;br /&gt;
・新ブログの方針（RPGツクール、数学の話題の提供）に関係するもの。&lt;br /&gt;
・本ブログで概ね固有の内容で、何かに活用できそうなもの。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;本ブログの記事一覧（転載先URL表）は以下に掲載しております：&lt;br /&gt;
&lt;a href=&quot;https://docs.google.com/spreadsheets/d/1UQx7mLM8YkUQ4Ojm3-0eyYmBVRvbley8We-NYiPTiFU/edit?usp=sharing&quot; target=&quot;_blank&quot;&gt;https://docs.google.com/spreadsheets/d/1UQx7mLM8YkUQ4Ojm3-0eyYmBVRvbley8We-NYiPTiFU/edit?usp=sharing&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;上記表にて、D列「URL」が本ブログにおける記事のURLです。&lt;br /&gt;
K列「転載要否」が○の記事が、新ブログへの転載対象であり、L列「転載先」のURLに転載されています。&lt;br /&gt;
転載要否が○の記事については、D列のURLを、L列のURLに変更いただきたく、お願いします。&lt;br /&gt;
転載要否が×の記事については転載しない記事ですので、12月15日以降は閲覧できなくなります。&lt;br /&gt;
×の記事のうち、転載すべき記事がございましたら、コメントにてご相談頂けますと幸いです。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;また限定記事が○の記事は、一般公開していない記事ですので、&lt;br /&gt;
ご相談頂きましても、基本的には転載はしない方針とさせて頂きたく思います。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1231935/45/42346845/img_0_m?1564670469&quot; width=&quot;560&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 1&quot; class=&quot;popup_img_1294_334 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</description>
			<link>https://blogs.yahoo.co.jp/fermiumbay2/42346845.html</link>
			<pubDate>Thu, 01 Aug 2019 23:41:09 +0900</pubDate>
			<category>練習用</category>
		</item>
		<item>
			<title>ヤフーブログ終了に伴うこのブログの対応</title>
			<description>&lt;div class=&#039;wiki&#039;&gt;&lt;h1&gt;&lt;a name=&#039;section-1&#039;&gt;&lt;/a&gt;本ブログはヤフーブログ終了に伴い12月15日に閉鎖します&lt;/h1&gt;
フェルミウム湾です。ご無沙汰しております。&lt;br /&gt;
本ブログは2017年末をもって更新終了とし、以下の新ブログにすでに移転しております：&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;b&gt;RPGツクールと数学のブログ&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://fermiumbay13.hatenablog.com/&quot; target=&quot;_blank&quot;&gt;http://fermiumbay13.hatenablog.com/&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;本ブログはこのまま放置とし、ブログを消す気は全くなかったのですが、&lt;br /&gt;
ヤフーブログ自体が今年の12月15日に終了するとのことなので、&lt;br /&gt;
本ブログも自動的に12月15日に閉鎖ということになります；ｗ；&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;それでは惜しいので、現在、本ブログの記事を移行計画中です。&lt;br /&gt;
ただ、おかしな記事も多いので、全部の記事を移行する気はありません。&lt;br /&gt;
全部見直して、残した方がよい記事のみ選定し、リメイクして&lt;br /&gt;
上記の新ブログの記事として投稿するようにしていきます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;本ブログが終了してしまうとURLも当然なくなってしまいますので、&lt;br /&gt;
本記事をリンク先に使って頂いている方は、記事がリメイクされましたら、&lt;br /&gt;
お手数ですが、そちらにリンク先を変えて頂ければまことに幸せです。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;どの記事を移行するかは私の独断になってしまいますので、&lt;br /&gt;
この記事をぜひ移行して欲しい、など、もしありましたら、コメントしていただければ是非移行します。&lt;br /&gt;
（基本的にはこのブログにしか書いてないような技術内容は全て移すつもりです）&lt;br /&gt;
11月末までであれば対応できると思いますので、よろしくお願いします…！&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;div class=&#039;quote&#039;&gt;&lt;i&gt;（2019年8月1日 追記）&lt;/i&gt;&lt;br /&gt;
移行完了しました。どの記事を転載しているか、転載先のURLは何か、&lt;br /&gt;
以下リンク先の表に掲載していますので、URLの更新 ご協力お願いします。&lt;br /&gt;
&lt;a href=&quot;https://blogs.yahoo.co.jp/fermiumbay2/42346845.html&quot; target=&quot;_blank&quot;&gt;https://blogs.yahoo.co.jp/fermiumbay2/42346845.html&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;

&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1189285/60/42278460/img_0_m?1564670615&quot; width=&quot;560&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 1&quot; class=&quot;popup_img_800_650 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;長かったねぇ。１２年間、ありがとうございました。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;ジオシティーズも終了して、ヤフーブログも終了してしまうので、&lt;br /&gt;
ヤフーさんとの関わりはもうなくなってしまうと思います……（知恵袋も最近のぞいてないもんね）&lt;br /&gt;
でもほんと、色々楽しかったです。ブログに投稿するぞ！っていうのを活力に&lt;br /&gt;
自分でもびっくりするぐらい色々編み出しては記事にしていけたように思います。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;遊んでくれたみなさん、再三だけどありがとうございました。&lt;br /&gt;
これからもずっとがんばるよ。みんなもがんばってね。&lt;br /&gt;
&lt;/div&gt;</description>
			<link>https://blogs.yahoo.co.jp/fermiumbay2/42278460.html</link>
			<pubDate>Wed, 06 Mar 2019 22:35:43 +0900</pubDate>
			<category>ゲーム</category>
		</item>
		<item>
			<title>あけましておめでとうございます！＆移転してます</title>
			<description>&lt;div class=&#039;wiki&#039;&gt;&lt;h1&gt;&lt;a name=&#039;section-1&#039;&gt;&lt;/a&gt;！あけましておめでとうございます！&lt;/h1&gt;
このブログは既に放置され、新しいブログに移転して活動しています。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;b&gt;RPGツクールと数学のブログ&lt;/b&gt;&lt;br /&gt;
&lt;a href=&quot;http://fermiumbay13.hatenablog.com/&quot; target=&quot;_blank&quot;&gt;http://fermiumbay13.hatenablog.com/&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;今後は新ブログに記事が投稿され、このブログには投稿されなくなると思います；＿；&lt;br /&gt;
でも、このブログを消すことはまずありません。&lt;br /&gt;
姑息にもこのブログにある記事を新ブログに転載している現状です。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;じゃあ、なんで移転するのだというと&lt;br /&gt;
別にヤフーさん批判というわけではないですが、リニューアルされてしまうじゃないですか。&lt;br /&gt;
ヤフーブログが一新し、過去に書いた記事もレイアウトなど含めて大きく変わってしまうようで、&lt;br /&gt;
今までの投稿がどんなことになるのかちょっと怖くなったので、&lt;br /&gt;
逃げという意味ではてなブログに移転することにした、というだけのことです。&lt;br /&gt;
新ブログでも投稿のスタイルは全く変わりません。&lt;br /&gt;
むしろ数式などを新ブログの方が書きやすいので、今までより見やすい投稿が&lt;br /&gt;
出来るんじゃないかと思っています。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;ということで、今まで読んで頂いた多くの皆さま本当ありがとうございました。&lt;br /&gt;
新ブログのほうもごひいきにです。&lt;br /&gt;
何度も書きますが、本ブログを閉鎖とか削除はしませんよ コメントいつでもウェルカムです！&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;h4&gt;&lt;a name=&#039;section-2&#039;&gt;&lt;/a&gt;あとがき（切実な会）&lt;/h4&gt;
&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1231935/72/41948972/img_0_m?1514815821&quot; width=&quot;560&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 1&quot; class=&quot;popup_img_1600_1200 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;ヤフーブログで１０年続けてきました。（放置の時期は多かったわけですが）&lt;br /&gt;
言葉の通り１０年一昔に感じるものがありまして、１０年前はまさかここまで&lt;br /&gt;
ブログを書こうという気もなく、そしてこんなに著者自身が&lt;br /&gt;
ブログに翻弄されることになるとも思っていなかったことでしょう。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;各年の活動の様子を表にまとめましたよ：&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;table class=&#039;wiki&#039; cellpadding=&#039;3&#039; cellspacing=&#039;2&#039;&gt;
&lt;tr class=&quot;wiki&quot;&gt;&lt;td class=&quot;wiki&quot;&gt;&lt;b&gt;年&lt;/b&gt;&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;&lt;b&gt;濃密度合い（適当）&lt;/b&gt;&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;&lt;b&gt;主な内容&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;wiki&quot;&gt;&lt;td class=&quot;wiki&quot;&gt;2007&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;★★☆☆☆&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;ネタ目的で開設 ゲーム投稿を始め、活発に&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;wiki&quot;&gt;&lt;td class=&quot;wiki&quot;&gt;2008&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;★★☆☆☆&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;気分で投稿&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;wiki&quot;&gt;&lt;td class=&quot;wiki&quot;&gt;2009&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;★☆☆☆☆&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;消沈気味 このまま凍結が予想された&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;wiki&quot;&gt;&lt;td class=&quot;wiki&quot;&gt;2010&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;★★★★☆&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;趣味仲間の出現により一気に加速 第一次活動期と称する（？）&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;wiki&quot;&gt;&lt;td class=&quot;wiki&quot;&gt;2011&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;★★★☆☆&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;勢いは弱まるが、平常運転&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;wiki&quot;&gt;&lt;td class=&quot;wiki&quot;&gt;2012&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;★★★★★&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;一番ブログしてた時期 第二次活動期と称する（？）&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;wiki&quot;&gt;&lt;td class=&quot;wiki&quot;&gt;2013&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;★★☆☆☆&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;友人関係を拗らせて低迷&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;wiki&quot;&gt;&lt;td class=&quot;wiki&quot;&gt;2014&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;★★☆☆☆&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;低頻度ではあるが気分で投稿を続ける&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;wiki&quot;&gt;&lt;td class=&quot;wiki&quot;&gt;2015&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;★★☆☆☆&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;さらに低迷 しかし後半に謎のやる気を得て一人で活発化&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;wiki&quot;&gt;&lt;td class=&quot;wiki&quot;&gt;2016&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;★☆☆☆☆&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;活発化虚しく低迷は続く&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;wiki&quot;&gt;&lt;td class=&quot;wiki&quot;&gt;2017&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;★☆☆☆☆&lt;/td&gt;&lt;td class=&quot;wiki&quot;&gt;落ち切った 収束 もうだめだ；ｗ；&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;br /&gt;
開設からちょうど５年目あたり（2012年あたり）が投稿のピークでして&lt;br /&gt;
ブログ友達さんと好き勝手に自分のことやお友達さんのことを書き合う文化が根付き、&lt;br /&gt;
高頻度で楽しく記事を投稿させてもらっておりました。&lt;br /&gt;
ブログを書き合うようなモチベーションでもないと続かないというのは、&lt;br /&gt;
上の表からも明らかですね；ｗ；　自分自身が一番びっくりしてますよ。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;あんまり悲観的なことばっかり書いていてもしょうがないので&lt;br /&gt;
振り返りはこのあたりにしておき、今年もがんばっていきましょう。&lt;br /&gt;
幸いにも前年2017年は、ブログの投稿が少なかっただけであって&lt;br /&gt;
活動はしており、水面下で色々と充実しておりました。&lt;br /&gt;
新ブログで是非とも第三次活動期を起こしていきたいですね。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;新ブログもよろしくね ぜひ来てね！ 待ってるよ＞＜&lt;br /&gt;
ほらもう一回リンク貼るから：&lt;br /&gt;
&lt;a href=&quot;http://fermiumbay13.hatenablog.com/&quot; target=&quot;_blank&quot;&gt;http://fermiumbay13.hatenablog.com/&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;またこんど！！&lt;br /&gt;
&lt;/div&gt;</description>
			<link>https://blogs.yahoo.co.jp/fermiumbay2/41948972.html</link>
			<pubDate>Mon, 01 Jan 2018 15:48:30 +0900</pubDate>
			<category>ホームページ</category>
		</item>
		<item>
			<title>XOR交換アルゴリズム</title>
			<description>&lt;div class=&#039;wiki&#039;&gt;&lt;div class=&#039;quote&#039;&gt;&lt;i&gt;（2019/8/2追記）&lt;/i&gt;&lt;br /&gt;
本記事の内容は新ブログに転載済みです：&lt;br /&gt;
&lt;a href=&quot;https://fermiumbay13.hatenablog.com/entry/2019/04/14/181053&quot; target=&quot;_blank&quot;&gt;https://fermiumbay13.hatenablog.com/entry/2019/04/14/181053&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;

&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;プログラミングで値の交換をするとき、ちょっと困ることがあります。&lt;br /&gt;
例えば、変数Aと変数Bがあったとして、Aの値をBに、Bの値をAに、それぞれ交換することを考えます。&lt;br /&gt;
しかしプログラムでは値のコピーはできても、値の交換を直接行うことができません。&lt;br /&gt;
A＝1234、B＝5678を交換しようとして、AにBの値をコピーしてしまうと&lt;br /&gt;
A＝5678、B＝5678となってしまい、もともとのAの値であった1234が消えてしまいます。&lt;br /&gt;
これでは交換できませんね。そのため普通は下の図のように、もう一つ変数を用意する必要があります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287189/39/41902739/img_0_m?1564680106&quot; width=&quot;560&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 1&quot; class=&quot;popup_img_881_247 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;一時変数tempにAの値をコピーすることで、Aの値を退避させておきます。&lt;br /&gt;
それからBの値をAにコピーして、最後にtempの値をBにコピーします。これで交換ができます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;このように、変数の交換はちょっと手間なのです。&lt;br /&gt;
現実でもそうですよね。両手がふさがっているときは、&lt;br /&gt;
一旦どちらかをどこかに置いて片手を空けてから交換を行います。それと同じことです。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287189/39/41902739/img_1_m?1564680106&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 2&quot; class=&quot;popup_img_402_367 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;ところが、整数のデータに限ってはこのtempがなくても交換できる&lt;br /&gt;
&lt;b&gt;XOR交換アルゴリズム&lt;/b&gt;というものを使うことができます。&lt;br /&gt;
XORという演算を使えば、不思議なことが起こってAとBが交換されるのです。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;h1&gt;&lt;a name=&#039;section-1&#039;&gt;&lt;/a&gt;XOR交換アルゴリズム&lt;/h1&gt;
XOR（排他的論理和）とは、次のような2進数の演算です。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287189/39/41902739/img_2_m?1564680106&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 3&quot; class=&quot;popup_img_418_217 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;例えば、&lt;b&gt;12 XOR 15 ＝ 3&lt;/b&gt; になります。&lt;br /&gt;
それぞれ2進数に直すと、12は1100、15は1111、となり、これを筆算のように縦に並べます。&lt;br /&gt;
これを足し算の筆算のように各桁足し算していくのですが、普通の足し算とは異なって&lt;br /&gt;
&lt;b&gt;1＋1＝0&lt;/b&gt;となるように計算します。&lt;br /&gt;
上の例では0＋1＝1となっていますが、1＋1＝0となるので、上の桁が落ちていって&lt;br /&gt;
0011が答えとなります。0011は10進数に直すと3ですから、3が答えになります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;そして、このXORを使って、次のような計算を順番に行っていきます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;b&gt; A XOR B の値をAに代入&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; A XOR B の値をBに代入&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; A XOR B の値をAに代入&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;A XOR B をひたすら計算しながら代入していくだけですね。A＝12, B＝15の例で実際にやってみます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt; 12 XOR 15 ＝ 3 をAに代入 … &lt;b&gt;A＝3, B＝15&lt;/b&gt;&lt;br /&gt;
 3 XOR 15 ＝ 12 をBに代入 … &lt;b&gt;A＝3, B＝12&lt;/b&gt;&lt;br /&gt;
 3 XOR 12 ＝ 15 をAに代入 … &lt;b&gt;A＝15, B＝12&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;なんと、AとBの値が入れ替わっていますね！&lt;br /&gt;
このように、XORを使うとtempを使わずに値の交換が出来てしまうのです。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287189/39/41902739/img_3_m?1564680106&quot; width=&quot;560&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 4&quot; class=&quot;popup_img_756_177 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;回路図のイメージは上図のようになります。&lt;br /&gt;
途中にある3つの素子がXOR演算を表していて、左の二入力に対するXORの結果が右に出ます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287189/39/41902739/img_4_m?1564680106&quot; width=&quot;560&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 5&quot; class=&quot;popup_img_756_177 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;上はA＝1234、B＝5678の例です。確かにAとBが交換されていますね。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;h1&gt;&lt;a name=&#039;section-2&#039;&gt;&lt;/a&gt;交換の仕組み&lt;/h1&gt;
XORを使うと何で値の交換が出来るのか確認してみます。&lt;br /&gt;
XOR演算には、次のような性質があります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;pre class=&#039;wiki&#039;&gt; 結合法則が成り立つ … (A XOR B) XOR C ＝ A XOR (B XOR C)
 交換法則が成り立つ … A XOR B ＝ B XOR A
 自分自身との演算結果が0（単位元）になる … A XOR A ＝ 0
&lt;/pre&gt;

&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;これら3つの性質のおかげで、XOR交換アルゴリズムが実現します。&lt;br /&gt;
手順ごとに格納される値を確認していきます。&lt;br /&gt;
AとBの値がどんどん変わっていきますので、最初の値をそれぞれA1, B1とします。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt; A1 XOR B1 ＝ A2とする&lt;br /&gt;
 A2 XOR B1 ＝ B2とする&lt;br /&gt;
 A2 XOR B2 ＝ A3とする&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;B2＝A1, A3＝B1になって値が入れ替わっている、という手順でした。&lt;br /&gt;
それぞれ求めていきます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;B2 ＝ A2 XOR B1 ＝ (A1 XOR B1) XOR B1&lt;br /&gt;
＝ A1 XOR (B1 XOR B1) … 結合法則&lt;br /&gt;
＝ A1 XOR 0 … 自分自身が逆元&lt;br /&gt;
＝ A1 … 0は単位元&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;A3 ＝ A2 XOR B2 ＝ (A1 XOR B1) XOR A1&lt;br /&gt;
＝ (B1 XOR A1) XOR A1 … 交換法則&lt;br /&gt;
＝ B1 XOR (A1 XOR A1) … 結合法則&lt;br /&gt;
＝ B1 XOR 0 … 自分自身が逆元&lt;br /&gt;
＝ B1 … 0は単位元&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;以上のように、確かに B2＝A1, A3＝B1 が成り立っています。&lt;br /&gt;
これがXORを使って値交換が出来る仕組みです。&lt;br /&gt;
逆に言えば、最初に挙げた3つの法則を持っている演算なら同様にして交換アルゴリズムに使えるのです。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;h1&gt;&lt;a name=&#039;section-3&#039;&gt;&lt;/a&gt;他の演算を使った例&lt;/h1&gt;
結合法則、交換法則が成り立ち、さらに自分自身と演算すると単位元になる、&lt;br /&gt;
という3つの法則を持った演算なら、XORでなくてもこの交換アルゴリズムは使えます。&lt;br /&gt;
あんまりそういう演算の例がないのですが、例えばこんなものがあります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;√a×√b＝√(ab) を計算し、ルートの外に係数で出せるものを出して整理して、k√cとなるとき&lt;br /&gt;
&lt;b&gt;a ☆ b ＝ c&lt;/b&gt; と表す演算子☆&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;この演算子☆は、上記の3つの法則が成り立ちます。&lt;br /&gt;
ただし、a, b, cの素因数にもともと偶数乗の素因数が入ってしまっていると&lt;br /&gt;
何もしなくてもルートの外に出てしまうので、そういう値には適用できません。&lt;br /&gt;
実用性はないでしょう……単なる例です。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;b&gt; A ☆ B の値をAに代入&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; A ☆ B の値をBに代入&lt;/b&gt;&lt;br /&gt;
&lt;b&gt; A ☆ B の値をAに代入&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;A＝1234, B＝5678 でやってみましょう。&lt;br /&gt;
√1234も√5678も、これ以上ルートの中身が整理できないので、このアルゴリズムが適用できます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt; √1234×√5678＝2√1751663 より &lt;b&gt;A＝1751663, B＝5678&lt;/b&gt;&lt;br /&gt;
 √1751663×√5678＝2839√1234 より &lt;b&gt;A＝1751663, B＝1234&lt;/b&gt;&lt;br /&gt;
 √1751663×√1234＝617√5678 より &lt;b&gt;A＝5678, B＝1234&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;確かに入れ替わりましたね！&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;割と自分自身が逆元という性質を満たす演算を探すのが難しいですが、&lt;br /&gt;
見つけることができればこのように交換アルゴリズムを考えることができます。&lt;br /&gt;
いろいろ探してみて、ぜひ遊んでみましょう＾＾！&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;余談ですが、XORのグラフは下図のようになります。&lt;br /&gt;
X座標、Y座標に対する点の明るさを X XOR Y の大きさにしています。（明るいほど大きな値）&lt;br /&gt;
キレイなフラクタル図形になるのですね！　2進数の演算をグラフにすると割と幾何学模様が現れて面白いです。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287189/39/41902739/img_5_m?1564680106&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 6&quot; class=&quot;popup_img_512_512 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;</description>
			<link>https://blogs.yahoo.co.jp/fermiumbay2/41902739.html</link>
			<pubDate>Sun, 12 Nov 2017 22:59:44 +0900</pubDate>
			<category>その他自然科学</category>
		</item>
		<item>
			<title>C++で論理回路のシミュレーション</title>
			<description>&lt;div class=&#039;wiki&#039;&gt;&lt;div class=&#039;quote&#039;&gt;&lt;i&gt;（2019/8/2追記）&lt;/i&gt;&lt;br /&gt;
本記事の内容は新ブログに転載済みです：&lt;br /&gt;
&lt;a href=&quot;https://fermiumbay13.hatenablog.com/entry/2019/04/14/180618&quot; target=&quot;_blank&quot;&gt;https://fermiumbay13.hatenablog.com/entry/2019/04/14/180618&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;

&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;論理回路のシミュレーションをプログラミングで行うための支援ライブラリを作りました。&lt;br /&gt;
&lt;a href=&quot;https://github.com/fermiumbay/LogicSimulator&quot; target=&quot;_blank&quot;&gt;https://github.com/fermiumbay/LogicSimulator&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;論理計算を行うだけであれば、単に計算式を記述して答えを出させれば済みますが、&lt;br /&gt;
このライブラリは素子を登録してそれぞれ接続し、回路を作ることが出来るのが特徴です。&lt;br /&gt;
計算式に基づいて出力値が出るのではなく、出力値を得たい素子の値からたどって計算を行います。&lt;br /&gt;
素子を接続して実装することから、順序回路のような循環している回路も作成できます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;本ライブラリはC++用です。（C++11以降）&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;h1&gt;&lt;a name=&#039;section-1&#039;&gt;&lt;/a&gt;導入&lt;/h1&gt;
上のリンクからLogicParts.hとLogicParts.cppをダウンロードし、&lt;br /&gt;
cppファイルをコンパイルするソースに入れてください。&lt;br /&gt;
使用するときはLogicParts.hをインクルードします。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1231935/83/41855883/img_0_m?1564680012&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 1&quot; class=&quot;popup_img_525_333 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;例えば上のような回路を実装する場合は次のように記述します。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;pre class=&#039;wiki&#039;&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

#include &amp;quot;LogicParts.h&amp;quot;
using namespace LogicParts;

int main() {
    auto A = Terminal();    // 端子Aの定義
    auto B = Terminal();    // 端子Bの定義
    auto C = And(Or(A, B), Nand(A, B));    // 端子Cに論理回路を接続

    A-&amp;gt;set(0);    // 端子Aに入力値0をセット
    B-&amp;gt;set(1);    // 端子Bに入力値1をセット

    cout &amp;lt;&amp;lt; C-&amp;gt;get() &amp;lt;&amp;lt; endl;    // 端子Cの値を出力
}
&lt;/pre&gt;

&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;最初に各端子を定義して論理回路を作ります。&lt;br /&gt;
変数の型は面倒なのでautoで宣言していますが、BaseParts*でもOKです。&lt;br /&gt;
後は端子にset関数で入力値をセットして、出力値を得たい端子のget関数を呼べばOKです。&lt;br /&gt;
上の例はXor回路なので、A＝Bのとき0、A≠Bのとき1が返ります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;h1&gt;&lt;a name=&#039;section-2&#039;&gt;&lt;/a&gt;例&lt;/h1&gt;
&lt;h4&gt;&lt;a name=&#039;section-3&#039;&gt;&lt;/a&gt;半加算器&lt;/h4&gt;
&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1231935/83/41855883/img_1_m?1564680012&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 2&quot; class=&quot;popup_img_487_427 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;上図は半加算器HAの例です。出力が2つありますが、同様にして回路を作れます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;pre class=&#039;wiki&#039;&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

#include &amp;quot;LogicParts.h&amp;quot;
using namespace LogicParts;

int main() {
    auto A = Terminal();    // 端子Aの定義
    auto B = Terminal();    // 端子Bの定義
    auto C = And(A, B);    // 端子CにAnd素子を接続
    auto S = Xor(A, B);    // 端子SにXor素子を接続

    A-&amp;gt;set(0);    // 端子Aに入力値0をセット
    B-&amp;gt;set(1);    // 端子Bに入力値1をセット

    cout &amp;lt;&amp;lt; C-&amp;gt;get() &amp;lt;&amp;lt; endl;    // 端子Cの値を出力
    cout &amp;lt;&amp;lt; S-&amp;gt;get() &amp;lt;&amp;lt; endl;    // 端子Sの値を出力
}
&lt;/pre&gt;

&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;このHAの部分だけを一つの部品として、&lt;br /&gt;
次のように関数を作っておくと便利です。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;pre class=&#039;wiki&#039;&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

#include &amp;quot;LogicParts.h&amp;quot;
using namespace LogicParts;

// 半加算器(A, B) = (C, S)
vector&amp;lt;BaseParts*&amp;gt; HA(BaseParts* A, BaseParts* B) {
    auto C = And(A, B);    // 端子CにAnd素子を接続
    auto S = Xor(A, B);    // 端子SにXor素子を接続
    return { C, S };	// 出力端子の配列を返す
}

int main() {
    auto A = Terminal();    // 端子Aの定義
    auto B = Terminal();    // 端子Bの定義
    auto D = HA(A, B);    // 端子DにA, Bを接続したHAを接続
    auto C = D[0];    // A, Bを接続したHAの出力C
    auto S = D[1];    // A, Bを接続したHAの出力S

    A-&amp;gt;set(0);    // 端子Aに入力値0をセット
    B-&amp;gt;set(1);    // 端子Bに入力値1をセット

    cout &amp;lt;&amp;lt; C-&amp;gt;get() &amp;lt;&amp;lt; endl;    // 端子Cの値を出力
    cout &amp;lt;&amp;lt; S-&amp;gt;get() &amp;lt;&amp;lt; endl;    // 端子Sの値を出力
}
&lt;/pre&gt;

&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;h4&gt;&lt;a name=&#039;section-4&#039;&gt;&lt;/a&gt;全加算器&lt;/h4&gt;
&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1231935/83/41855883/img_2_m?1564680012&quot; width=&quot;560&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 3&quot; class=&quot;popup_img_601_347 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;HAを接続して全加算器FAを作ります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;pre class=&#039;wiki&#039;&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

#include &amp;quot;LogicParts.h&amp;quot;
using namespace LogicParts;

// 半加算器(A, B) = (C, S)
vector&amp;lt;BaseParts*&amp;gt; HA(BaseParts* A, BaseParts* B) {
    auto C = And(A, B);    // 端子CにAnd素子を接続
    auto S = Xor(A, B);    // 端子SにXor素子を接続
    return{ C, S };	// 出力端子の配列を返す
}

// 全加算器(A, B, prevC) = (C, S)
vector&amp;lt;BaseParts*&amp;gt; FA(BaseParts* A, BaseParts* B, BaseParts* prevC) {
    auto D = HA(A, B);    // HAの出力を端子群Dとして定義
    auto E = HA(D[1], prevC);    // HAの出力を端子群Eとして定義
    auto C = Or(D[0], E[0]);    // HAの出力とOr素子を接続して端子Cに接続
    auto S = E[1];    // HAの出力を端子Sに接続
    return{ C, S };	// 出力端子の配列を返す
}

int main() {
    auto A = Terminal();    // 端子Aの定義
    auto B = Terminal();    // 端子Bの定義
    auto prevC = Terminal();    // 端子prevCの定義
    auto C = FA(A, B, prevC)[0];    // A, Bを接続したFAの出力C
    auto S = FA(A, B, prevC)[1];    // A, Bを接続したFAの出力S

    A-&amp;gt;set(1);    // 端子Aに入力値1をセット
    B-&amp;gt;set(1);    // 端子Bに入力値1をセット
    prevC-&amp;gt;set(1);    // 端子prevCに入力値1をセット

    cout &amp;lt;&amp;lt; C-&amp;gt;get() &amp;lt;&amp;lt; endl;    // 端子Cの値を出力
    cout &amp;lt;&amp;lt; S-&amp;gt;get() &amp;lt;&amp;lt; endl;    // 端子Sの値を出力
}
&lt;/pre&gt;

&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;一旦部品を作ってしまえば取り扱いが楽になります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;h4&gt;&lt;a name=&#039;section-5&#039;&gt;&lt;/a&gt;RSフリップフロップ&lt;/h4&gt;
&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1231935/83/41855883/img_3_m?1564680012&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 4&quot; class=&quot;popup_img_540_341 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;入力端子を循環させれば順序回路も作れます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;pre class=&#039;wiki&#039;&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

#include &amp;quot;LogicParts.h&amp;quot;
using namespace LogicParts;

// RSフリップフロップ
vector&amp;lt;BaseParts*&amp;gt; RS_FF(BaseParts* S, BaseParts* R) {
	auto Q = Nand(Not(S), 0);    // 端子Q
	auto notQ = Nand(Not(R), Q);    // 端子notQ
	Q-&amp;gt;input[1] = notQ;    // 端子Qの入力端子の一つにnotQをセット

	return{ Q, notQ };	// 出力端子の配列を返す
}

int main() {
	auto S = Terminal();    // 端子Sの定義
	auto R = Terminal();    // 端子Rの定義
	auto Q = RS_FF(S, R)[0];    // 出力QをA, Bを接続したHAの出力C

	S-&amp;gt;set(0); R-&amp;gt;set(0); cout &amp;lt;&amp;lt; Q-&amp;gt;get() &amp;lt;&amp;lt; endl;    // 保持
	S-&amp;gt;set(1); R-&amp;gt;set(0); cout &amp;lt;&amp;lt; Q-&amp;gt;get() &amp;lt;&amp;lt; endl;    // Q＝1にセット
	S-&amp;gt;set(0); R-&amp;gt;set(0); cout &amp;lt;&amp;lt; Q-&amp;gt;get() &amp;lt;&amp;lt; endl;    // 保持
	S-&amp;gt;set(0); R-&amp;gt;set(1); cout &amp;lt;&amp;lt; Q-&amp;gt;get() &amp;lt;&amp;lt; endl;    // Q＝0にセット
	S-&amp;gt;set(0); R-&amp;gt;set(0); cout &amp;lt;&amp;lt; Q-&amp;gt;get() &amp;lt;&amp;lt; endl;    // 保持
}
&lt;/pre&gt;

&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;notQが未定義の状態でQ = Nand(Not(S), notQ)とは出来ませんから、&lt;br /&gt;
上記のように、一旦notQの部分は0（未接続）としておいて、&lt;br /&gt;
notQを作ってからQの入力端子にnotQをセットする、という方法で接続しています。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;うまいように設計してやれば、大規模な論理回路も作れそうですね！&lt;br /&gt;
&lt;/div&gt;</description>
			<link>https://blogs.yahoo.co.jp/fermiumbay2/41855883.html</link>
			<pubDate>Sun, 01 Oct 2017 13:32:20 +0900</pubDate>
			<category>プログラム</category>
		</item>
		<item>
			<title>計算に要する一時変数の個数</title>
			<description>&lt;div class=&#039;wiki&#039;&gt;&lt;div class=&#039;quote&#039;&gt;&lt;i&gt;（2019/8/2追記）&lt;/i&gt;&lt;br /&gt;
本記事の内容は新ブログに転載済みです：&lt;br /&gt;
&lt;a href=&quot;https://fermiumbay13.hatenablog.com/entry/2019/04/14/175538&quot; target=&quot;_blank&quot;&gt;https://fermiumbay13.hatenablog.com/entry/2019/04/14/175538&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;

&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;RPGツクール2000ではプログラミング言語を使えないので、&lt;br /&gt;
計算式を入力して直接計算するということが出来ません。&lt;br /&gt;
難しい計算を入れようと思うと、変数を一個一個定義して&lt;br /&gt;
それらの四則演算を駆使する必要があります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;1＋2×3 みたいな式であれば、優先度の高い掛け算の方を先に計算して&lt;br /&gt;
◆変数1番 ＝ 2（2を代入）&lt;br /&gt;
◆変数1番 × 3（3倍する）&lt;br /&gt;
◆変数1番 ＋ 1（1足す）&lt;br /&gt;
みたいにしてやれば、1個の変数で足ります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;しかし、2×3＋4×5 のような式を計算する際は変数1個では足りません。&lt;br /&gt;
一時的に計算用の変数を用意しておいて、それを途中計算で使うことになります。&lt;br /&gt;
◆変数1番 ＝ 2&lt;br /&gt;
◆変数1番 × 3&lt;br /&gt;
◆変数2番 ＝ 4&lt;br /&gt;
◆変数2番 × 5&lt;br /&gt;
◆変数1番 ＋ 変数2番&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;一般に、計算式が複雑になればなるほど一時変数は多く必要になります。&lt;br /&gt;
では、最低何個あれば足りるのか、というのを計算式から判断できるでしょうか。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;h1&gt;&lt;a name=&#039;section-1&#039;&gt;&lt;/a&gt;使用変数の個数計算アルゴリズム&lt;/h1&gt;
&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1334173/32/41855132/img_0_m?1564679881&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 1&quot; class=&quot;popup_img_359_353 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;まず、上のように計算式をツリー構造に置き換えます。&lt;br /&gt;
一つ一つの丸のことをノードと呼びます。&lt;br /&gt;
2＋3×5だったら3×5を先に計算するので、3と5を×の木で結び、&lt;br /&gt;
その結果と2を足すので、それぞれを＋の木で結びます。&lt;br /&gt;
計算するときは、下から順にまとめていけばいいですね。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;上の式なら次のように1つの変数があれば計算できます。&lt;br /&gt;
◆変数1番 ＝ 3&lt;br /&gt;
◆変数1番 × 5&lt;br /&gt;
◆変数1番 ＋ 2&lt;br /&gt;
3×5の結果を使い、それに2を足せばOKです。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1334173/32/41855132/img_1_m?1564679881&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 2&quot; class=&quot;popup_img_359_381 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;計算によって各ノードに至るまでに必要な使用変数の個数を下に数字で書いています。&lt;br /&gt;
ただの数値は基本変数を使わないので0としていますが、&lt;br /&gt;
初めの3×5の計算を行うために、3か5のどちらかを一旦変数に入れないといけません。&lt;br /&gt;
ここでは3を入れるものとし、3に変数を一つ使っています。&lt;br /&gt;
3×5の計算結果を変数1番に入れればよいので、×の使用変数は1となっています。&lt;br /&gt;
さらに、それに足した結果をそのまま変数1番に入れますから、&lt;br /&gt;
＋の使用変数はそのまま1となります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1334173/32/41855132/img_2_m?1564679881&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 3&quot; class=&quot;popup_img_387_379 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;複雑な式になっても同じです。&lt;br /&gt;
ただ、引き算や割り算のように交換法則が成り立たない演算の場合は&lt;br /&gt;
左の数の方を必ず変数に入れなければなりません。&lt;br /&gt;
それに注意しながら使用変数の個数を振っていくと上図のようになります。&lt;br /&gt;
◆変数1番 ＝ 1&lt;br /&gt;
◆変数1番 ÷ 5&lt;br /&gt;
◆変数2番 ＝ 1&lt;br /&gt;
◆変数2番 － 変数1番&lt;br /&gt;
◆変数2番 ＝ 8&lt;br /&gt;
◆変数2番 ÷ 変数1番&lt;br /&gt;
1÷5ではまず変数1番に1を入れておき、そこから5を割り算。&lt;br /&gt;
次に1からその結果を引く必要がありますが、変数1個では無理なので&lt;br /&gt;
変数2番を用意して、そこに1を入れておき、変数2番から変数1番を引けばOKです。&lt;br /&gt;
（A－B＝－(B－A)でいいじゃんというツッコミは禁止です＾＾；）&lt;br /&gt;
これを繰り返し、変数2個で計算できるということが分かります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;では、子ノードの値から親ノードの値を求めるにはどうすれば良いでしょうか。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;そのノードに振られている値は、言わば計算がそこに至るまでに&lt;br /&gt;
使用した変数の&lt;b&gt;最大個数&lt;/b&gt;を表します。&lt;br /&gt;
例えば上の式では「－」の部分で2となっていますが、&lt;br /&gt;
－の計算を終えた直後はもう変数1番しか使っていないので、変数2番が使えます。&lt;br /&gt;
8をわざわざ変数3番に入れなくても、使っていない変数2番に入れれば済みます。&lt;br /&gt;
だから、最後の「÷」は1＋2＝3個ではなく、&lt;br /&gt;
それまでの最大個数であった2個がそのまま÷に振られます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;演算を行う際には、各演算に用いるノードで使用変数が多かった部分を先に計算して&lt;br /&gt;
計算時に変数1個としておくことで、使用変数の節約が出来るようになります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1334173/32/41855132/img_3_m?1564679881&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 4&quot; class=&quot;popup_img_374_348 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;上図でいうと、使用変数が0個で済む2の方ではなくて、&lt;br /&gt;
使用変数が1個必要な3×5の方を先に計算すると最大個数が少なくて済みます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1334173/32/41855132/img_4_m?1564679881&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 5&quot; class=&quot;popup_img_370_344 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;上図のように使用変数が1個必要なもの同士を使って演算する場合は、&lt;br /&gt;
変数1番に左の×の結果を、変数2番に右の×の結果を入れて足し算する必要があるので、&lt;br /&gt;
変数は2個必要になります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;以上のことから、使用変数の個数について次の法則が言えます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;pre class=&#039;wiki&#039;&gt;【四則演算における親ノードの使用変数個数】
2つの子ノードの使用変数個数がそれぞれa, bとすると、
・a≠bのときmax{a, b}（a, bのうち大きい方）
・a＝bのときa＋1
&lt;/pre&gt;

&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;使用変数個数がお互い同じときしか個数が増えないということになります。&lt;br /&gt;
さっきの例がその法則に従って得られるか確認してみてください。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;h4&gt;&lt;a name=&#039;section-2&#039;&gt;&lt;/a&gt;例&lt;/h4&gt;
下のイベント命令は、変数1番に角度を入れると&lt;br /&gt;
sinの値を計算して、変数2番にその100倍の値を入れるものです。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;pre class=&#039;wiki&#039;&gt;◆変数の操作：[0003:一時]代入，変数[0001]の値
◆変数の操作：[0003:一時]乗算，変数[0001]の値
◆変数の操作：[0003:一時]乗算，64
◆変数の操作：[0003:一時]除算，2025
◆変数の操作：[0002:結果]代入，変数[0003]の値
◆変数の操作：[0002:結果]乗算，-20
◆変数の操作：[0002:結果]加算，12000
◆変数の操作：[0003:一時]乗算，変数[0003]の値
◆変数の操作：[0003:一時]除算，100
◆変数の操作：[0002:結果]加算，変数[0003]の値
◆変数の操作：[0002:結果]乗算，変数[0001]の値
◆変数の操作：[0002:結果]除算，6750
◆変数の操作：[0002:結果]乗算，変数[0004]の値
◆
&lt;/pre&gt;

&lt;a href=&quot;http://www.geocities.jp/orreiclan/content/report/tkool2000math/sin.html&quot; target=&quot;_blank&quot;&gt;http://www.geocities.jp/orreiclan/content/report/tkool2000math/sin.html&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;一時変数を含めて変数を3個使っていますが、本当に3個必要なのか確認しましょう。&lt;br /&gt;
この計算過程を下図のようなツリー構造にします。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1334173/32/41855132/img_5_m?1564679881&quot; width=&quot;560&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 6&quot; class=&quot;popup_img_1078_620 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;たどっていくと、確かに3になっていることが分かりますね。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;このように、何らかの計算アルゴリズムを作ったときに&lt;br /&gt;
その必要な使用変数の個数を求める際に便利だと思います。&lt;br /&gt;
ツクール2000では使えますが、最近のツクールだとあまり使わないかもしれませんね。&lt;br /&gt;
&lt;/div&gt;</description>
			<link>https://blogs.yahoo.co.jp/fermiumbay2/41855132.html</link>
			<pubDate>Sat, 30 Sep 2017 20:28:06 +0900</pubDate>
			<category>ゲーム</category>
		</item>
		<item>
			<title>並列回路演算子の性質</title>
			<description>&lt;div class=&#039;wiki&#039;&gt;電気回路において、並列回路の合成抵抗は以下のように計算されます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/02/41817802/img_0_m?1503847169&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 1&quot; class=&quot;popup_img_242_71 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;例えば2Ωと3Ωを並列接続して合成抵抗を計算すると、&lt;br /&gt;
2//3＝2×3／(2＋3)＝6／5 Ωとなります。&lt;br /&gt;
このとき用いた演算子&lt;b&gt;「//」&lt;/b&gt;は、足し算に似た色々と面白い性質を持っています。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/02/41817802/img_1_m?1503847169&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 2&quot; class=&quot;popup_img_551_474 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;∞を数として認めているのは&lt;a href=&quot;https://blogs.yahoo.co.jp/fermiumbay2/41817522.html&quot; target=&quot;_blank&quot;&gt;一意T空間&lt;/a&gt;を考えていることによるものです。&lt;br /&gt;
ここでは実数に、0の逆数としての符号のない数「∞」を付け加えた体系を考えています。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;ドモルガンの法則に似た性質があるのが見受けられますが、&lt;br /&gt;
スイッチを直列に繋ぐとAND回路が、並列に繋ぐとOR回路が作れることから連想されます。&lt;br /&gt;
＋が直列、//が並列ですので、それぞれANDとORに対応するのですね。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;h1&gt;&lt;a name=&#039;section-1&#039;&gt;&lt;/a&gt;方程式&lt;/h1&gt;
＋の単位元は0ですが、//の単位元は∞になりますので、&lt;br /&gt;
こんな方程式を考えることができます：&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/02/41817802/img_2_m?1503847169&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 3&quot; class=&quot;popup_img_506_107 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;一次方程式と二次方程式です。どちらも通常のものとよく似ていますね。&lt;br /&gt;
しかし二次方程式の解の公式は係数が色々と違います。&lt;br /&gt;
これは次の事実に由来します：&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/02/41817802/img_3_m?1503847169&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 4&quot; class=&quot;popup_img_334_199 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;展開公式の係数が逆数で出てくるのですね。&lt;br /&gt;
これは同じものの並列が半分になるためです。1//1＝1／2&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;h1&gt;&lt;a name=&#039;section-2&#039;&gt;&lt;/a&gt;並列微分&lt;/h1&gt;
//に対応する微分を次のように定義します：&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/02/41817802/img_4_m?1503847169&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 5&quot; class=&quot;popup_img_368_66 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;足し算がそのまま並列に置き換わっただけです。並列微分と呼ぶことにします。&lt;br /&gt;
この並列微分は通常の微分と同様、線形性を持っていますし、&lt;br /&gt;
合成関数・逆関数・積の微分など、通常の微分が持つ性質を多く持っています。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/02/41817802/img_5_m?1503847169&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 6&quot; class=&quot;popup_img_393_500 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;指数法則や、三角関数の加法定理は次のようになります。&lt;br /&gt;
逆数の関係になっていることに注意です。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/02/41817802/img_6_m?1503847169&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 7&quot; class=&quot;popup_img_371_291 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;これらを用いて、次のような並列微分公式が得られます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/02/41817802/img_7_m?1503847169&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 8&quot; class=&quot;popup_img_204_265 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;逆数が入れ子みたいになって、何だか複雑な式になってしまいますね。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;実はこの並列微分と通常の微分とは次のような関係式で結ばれます。&lt;br /&gt;
この式が並列微分で&lt;b&gt;一番大事な式&lt;/b&gt;です。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/02/41817802/img_8_m?1503847169&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 9&quot; class=&quot;popup_img_246_94 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;変形して、f(x)の並列微分について解くとこうなります：&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/02/41817802/img_9_m?1503847169&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 10&quot; class=&quot;popup_img_220_77 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;これさえあれば、並列微分は全部出来るようになりますね。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;h1&gt;&lt;a name=&#039;section-3&#039;&gt;&lt;/a&gt;マクローリン展開&lt;/h1&gt;
並列微分を用いて、//のマクローリン展開は以下のように定義出来ます：&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/02/41817802/img_10_m?1503847169&quot; width=&quot;560&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 11&quot; class=&quot;popup_img_801_41 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;これに当てはめれば、次のようなマクローリン展開を得られます：&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/02/41817802/img_11_m?1503847169&quot; width=&quot;560&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 12&quot; class=&quot;popup_img_668_178 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;これらを用いれば、オイラーの公式も作れますね。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/02/41817802/img_12_m?1503847169&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 13&quot; class=&quot;popup_img_213_63 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;オイラーの公式単体なら、単純にドモルガンの法則から導くことが出来ます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;h1&gt;&lt;a name=&#039;section-4&#039;&gt;&lt;/a&gt;他の演算子との関係性&lt;/h1&gt;
//は、同型写像f(x)＝1／xを介して＋と同型です。&lt;br /&gt;
だから逆数が多発したのですね。&lt;br /&gt;
各演算子とは、次のような関係があります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/02/41817802/img_13_m?1503847169&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 14&quot; class=&quot;popup_img_288_333 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;四則演算に新しい仲間が増えた感じがして何だかいいですね＾＾&lt;br /&gt;
&lt;/div&gt;</description>
			<link>https://blogs.yahoo.co.jp/fermiumbay2/41817802.html</link>
			<pubDate>Mon, 28 Aug 2017 00:19:29 +0900</pubDate>
			<category>その他自然科学</category>
		</item>
		<item>
			<title>実数のコンパクト化（一意T空間）</title>
			<description>&lt;div class=&#039;wiki&#039;&gt;&lt;h1&gt;&lt;a name=&#039;section-1&#039;&gt;&lt;/a&gt;実数のコンパクト化&lt;/h1&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;実数に∞と－∞を付け加え、実数全体を閉区間にしてしまったものを&lt;b&gt;拡張実数&lt;/b&gt;といいます。&lt;br /&gt;
2＋∞＝∞や、2÷∞＝0などという計算を、便宜的なものでなく&lt;br /&gt;
きちんと定義して扱えるようにしたものです。&lt;br /&gt;
これはこれで便利なのですが、やはり∞を数として扱うことには多少の抵抗があります。&lt;br /&gt;
そこで、以下の関数を用いて任意の実数を有界閉区間に落とし込むことを考えます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/22/41817522/img_0_m?1503833026&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 1&quot; class=&quot;popup_img_449_61 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;通常の実数に対してこの写像T(x)を適用すると、その像は(－1, 1)の区間となります。&lt;br /&gt;
さらに、便宜的にarctan(±∞)＝±π／2と表されることを利用して、&lt;br /&gt;
∞を表す1、－∞を表す－1をそれぞれ要素として加えて閉区間[－1, 1]を作ることで、&lt;br /&gt;
Tを適用した後の空間を実質拡張実数として扱うことが出来るようになります。&lt;br /&gt;
これなら拡張実数を表すのに∞を使わなくても済みますね。&lt;br /&gt;
この[－1, 1]区間のことを&lt;b&gt;T空間&lt;/b&gt;と呼ぶことにします。&lt;br /&gt;
実数をT空間に落とし込むことを&lt;b&gt;実数のコンパクト化&lt;/b&gt;と呼ぶことにします。ここではね。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;拡張実数を考えるときは、まず実数にこのTを適用してT空間に落とし込んでから&lt;br /&gt;
T空間における四則演算を用いて計算を行い、最後にT^(-1)を適用して&lt;br /&gt;
通常の実数に戻す、ということをすれば良いでしょう。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;T空間における四則演算は次のようになります：&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/22/41817522/img_1_m?1503833026&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 2&quot; class=&quot;popup_img_558_321 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;argは複素数の偏角を表します。&lt;br /&gt;
単純に、一旦T^(-1)を適用してから通常の四則演算を行い、&lt;br /&gt;
Tを適用して戻す、ということをしています。&lt;br /&gt;
その際に±1は∞に変換されてしまうことから、それを避ける目的で&lt;br /&gt;
通常のarctanではなくargを用いています。&lt;br /&gt;
T空間の積の単位元は1／2になることに注意です。1／2を実数に逆変換すると1になります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;これらは通常の実数の足し算掛け算と同型になります：&lt;br /&gt;
&lt;b&gt;T(a＋b)＝T(a)＋T(b)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;T(ab)＝T(a)T(b)&lt;/b&gt;&lt;br /&gt;
同型になるというか、そうなるように定義したのが正しいですね。&lt;br /&gt;
そのため、実数の四則演算はT空間の四則演算に置き換えられます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;以下に足し算と掛け算の性質を示します。&lt;br /&gt;
それぞれ±1を±∞に置き換えてみると、通常の実数と同じような性質であることが分かります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/22/41817522/img_2_m?1503833026&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 3&quot; class=&quot;popup_img_386_184 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;また、次のように逆数を定義します。&lt;br /&gt;
割り算は逆数との掛け算で定義することが出来ます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/22/41817522/img_3_m?1503833026&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 4&quot; class=&quot;popup_img_254_112 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;以上が拡張実数をT空間で扱う方法になりますが、&lt;br /&gt;
0の逆数が±1となってしまい、やはり積の逆元が存在しないという問題が残ります。&lt;br /&gt;
拡張実数を扱う分には別にこのままでもいいのですが、&lt;br /&gt;
次に考えることへの準備のため、以降は単調性を失わせた&lt;br /&gt;
新しい定義について記述していきます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;h1&gt;&lt;a name=&#039;section-2&#039;&gt;&lt;/a&gt;一意T空間&lt;/h1&gt;
T空間は[－1, 1]の区間となっているため、0の逆数が2つの値を出してしまいます。&lt;br /&gt;
＋∞と－∞を区別して考えているためですが、ここではその区別をなくし、&lt;br /&gt;
&lt;b&gt;0の逆数としての∞&lt;/b&gt;という1つの数だけを付け加えたT空間を考えます。&lt;br /&gt;
0の逆数をT空間の1と定義し、－1を範囲から除することで実現します。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;b&gt;T：(－∞, ∞) → (－1, 1]&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;この修正方法は単純に、T変換及び各四則演算の度に次の変換をすることとします。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/22/41817522/img_4_m?1503833026&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 5&quot; class=&quot;popup_img_300_70 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;これは任意の実数xを(－1, 1]の区間に収める変換です。&lt;br /&gt;
各計算毎にこの変換をして区間を改めたT空間を&lt;b&gt;一意T空間&lt;/b&gt;と呼ぶことにします。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;例えば－∞を一意T変換してみると、&lt;br /&gt;
T(－∞)＝2／π arctan(－∞)＝2／π・(－π／2)＝－1&lt;br /&gt;
r(－1)＝(－1＋2)－2ceiling((－1＋1)／2)＝－1＋2＝1&lt;br /&gt;
となるので、1に変換されます、－∞も∞も1になるのです。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;補足ですが、任意の実数を半開区間に収める変換は次のようにして記述できます：&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287191/22/41817522/img_5_m?1503833026&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 6&quot; class=&quot;popup_img_365_330 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;h1&gt;&lt;a name=&#039;section-3&#039;&gt;&lt;/a&gt;それがどうしたというのか&lt;/h1&gt;
一意T空間により任意の実数は無限大を考慮して単なる実数で計算出来るようになりましたが、&lt;br /&gt;
それがどうしたということになります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;こういう演算を考えたとします：&lt;br /&gt;
&lt;b&gt;a//b＝1／(1／a＋1／b)＝ab／(a＋b)&lt;/b&gt;&lt;br /&gt;
これは並列回路の合成抵抗を計算する演算子ですが、一意T空間によってこの演算子はアーベル群になります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;通常の実数で考えると、a//bは単位元を持たないことが分かります。&lt;br /&gt;
任意の実数をa、単位元をxとすると、&lt;br /&gt;
a//x＝x//a＝aを満たすxが単位元になりますが、&lt;br /&gt;
1／(1／a＋1／x)＝a&lt;br /&gt;
1／a＋1／x＝1／a&lt;br /&gt;
1／x＝0&lt;br /&gt;
となり、xは0の逆数となってしまうのです。&lt;br /&gt;
そのため、単位元なしということで//は半群止まりになってしまうのですが、&lt;br /&gt;
そこで思考停止してしまうには惜しいぐらい//は色々と性質を持っていますので、&lt;br /&gt;
0の逆数を考えることのできる一意T空間に一度変換してやり、&lt;br /&gt;
一意T空間における//を考えてみると、単位元は1として扱えるようになります。&lt;br /&gt;
実数における∞が単位元になるということです。&lt;br /&gt;
確かに並列回路では∞Ωを並列に繋いでも合成抵抗は変わりません。（∞Ωは開放を表します）&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;さらに、単位元を考えることによって逆元を考えることができ、aの逆元は&lt;b&gt;－a&lt;/b&gt;になります。&lt;br /&gt;
a//(－a)＝1／(1／a－1／a)＝1／0＝∞ということです。&lt;br /&gt;
これで//は群になることができます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;次の記事でこの//演算子について色々記載していくつもりですが、&lt;br /&gt;
これは実数に∞を付け加えることで群になることができ、∞を付け加える操作は実は&lt;br /&gt;
実数を一意T空間に変換した上の操作であることを明記するために&lt;br /&gt;
こんなものを定義したということになります。&lt;br /&gt;
&lt;/div&gt;</description>
			<link>https://blogs.yahoo.co.jp/fermiumbay2/41817522.html</link>
			<pubDate>Sun, 27 Aug 2017 20:23:46 +0900</pubDate>
			<category>その他自然科学</category>
		</item>
		<item>
			<title>（旧記事）高速曜日計算</title>
			<description>&lt;div class=&#039;wiki&#039;&gt;&lt;div class=&#039;quote&#039;&gt;本記事の内容は新ブログに転載されました：&lt;br /&gt;
&lt;a href=&quot;http://fermiumbay13.hatenablog.com/entry/2017/12/03/182641&quot; target=&quot;_blank&quot;&gt;http://fermiumbay13.hatenablog.com/entry/2017/12/03/182641&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;

&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;今まで曜日計算のやり方については何度も書いてきました。&lt;br /&gt;
最近だとこれです：&lt;a href=&quot;https://blogs.yahoo.co.jp/fermiumbay2/41701457.html&quot; target=&quot;_blank&quot;&gt;https://blogs.yahoo.co.jp/fermiumbay2/41701457.html&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;年月日を聞かれたときに、その曜日を一瞬で求められたらスゴイですよね。&lt;br /&gt;
まだサマーウォーズ見てないのですけど、数学ができる主人公が&lt;br /&gt;
それを一瞬でやってみせるというシーンがあると聞いています。&lt;br /&gt;
これには次の&lt;b&gt;ツェラーの公式&lt;/b&gt;を使っています：&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287189/18/41809718/img_0_m?1512298217&quot; width=&quot;560&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 1&quot; class=&quot;popup_img_598_75 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;西暦の千、百の位をc、十、一の位をyとして、m月d日の曜日が&lt;br /&gt;
hに数値として出てきます。h＝0が土曜日で、1, 2, 3, … になると 日, 月, 火, …&lt;br /&gt;
c／4とかy／4を覆っているかっこは、小数点以下切り捨ての記号で、&lt;br /&gt;
mod 7 は、7で割ったあまりを計算しなさい、という演算子です。&lt;br /&gt;
&lt;b&gt;ただし1月, 2月の場合のみ例外で、前の年の13月, 14月として計算しなければなりません。&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;作中ではこれを用いて暗算で一瞬で求めているそうですが、&lt;br /&gt;
なんでもコレのことをモジュロ演算と呼んでいるらしいですね。&lt;br /&gt;
モジュロ演算ってたぶん最後の「mod 7」の計算のことを言ってるんでしょうけど&lt;br /&gt;
モジュロ演算といえば何故か曜日計算が出てきます。曜日計算をする演算の名前ではないですよ。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;彼は天才なので、上のような長い数式でも一瞬で計算出来てしまうのかもしれないですが&lt;br /&gt;
我々でもパッと計算してみたい願望があります。&lt;br /&gt;
そこで今回は、上のツェラーの公式をとことん凝縮し、&lt;br /&gt;
&lt;b&gt;１９００年～２０９９年の年月日に対するすべての曜日&lt;/b&gt;を暗算で当てる方法を書きます。&lt;br /&gt;
高速曜日計算です。でもこれには暗記と多少の訓練が必要です。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;h1&gt;&lt;a name=&#039;section-1&#039;&gt;&lt;/a&gt;高速曜日計算&lt;/h1&gt;
１９００年～２０９９年の年月日から曜日を当てる方法です。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;まず、次の数列を暗記しておきます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;h4&gt;&lt;a name=&#039;section-2&#039;&gt;&lt;/a&gt;１４３６１４６２５０３５&lt;/h4&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;これらは月に対する数字で、例えば４月の数字は４番目の６、というようなものです。&lt;br /&gt;
覚え方は様々だと思います。前回はなんとなくの位置でスペースを置いて&lt;br /&gt;
１４３６　１４６　２５０３５&lt;br /&gt;
としていましたが、利便性を考えて４文字区切りにして&lt;br /&gt;
１４３６　１４６２　５０３５&lt;br /&gt;
とかにしてみてもいいかもしれません。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;あとは、数値とそれに対応する曜日を知っていればOKです。&lt;br /&gt;
0が土曜日ということを知っておけば、あとは順番とわかれば良いでしょう。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;以上を暗記して、あとは練習です。&lt;br /&gt;
下図では1967年2月10日の曜日を求めています。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1287189/18/41809718/img_1_m?1512298217&quot; width=&quot;560&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 2&quot; class=&quot;popup_img_916_951 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;まず、1月か2月の場合は年だけ1年前にずらします。そうでなければ不要です。&lt;br /&gt;
年→月→日の順に処理していくとよく忘れてしまうので、最初は月を見て&lt;br /&gt;
この判定をするのを忘れないように注意しましょう。&lt;br /&gt;
この場合は2月なので、1967年から1年戻して1966年として考えます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;1900年代であれば1、2000年代であれば0を採用します。&lt;br /&gt;
今回は1900年代なので「1」を覚えておきます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;西暦の下2桁の計算に一番時間が掛かります。&lt;br /&gt;
ここでは66ですが、66÷4の小数切り捨てと、66をそれぞれ足す必要があります。&lt;br /&gt;
数字が小さければそのままできますが、大きいと暗算が難しくなります。&lt;br /&gt;
実はここでの計算で用いる値は&lt;b&gt;28&lt;/b&gt;を足し引きしても全体に影響がないので&lt;br /&gt;
大きい場合は28で引いていき、小さくしていくことを考えます。30引いて2足せば良いですね。&lt;br /&gt;
66－30＝36、36＋2＝38&lt;br /&gt;
38－30＝8、8＋2＝10&lt;br /&gt;
ということで、66は10として扱っても良いことになります。これなら暗算でできますね＾＾&lt;br /&gt;
10÷4の小数切り捨ては2ですから、2＋10＝12ですね。&lt;br /&gt;
計算の最後に7で割った余りの計算があるのですが、この操作はいつ行ってもいいので&lt;br /&gt;
この時点で7引いておきましょう。12－7＝「5」にしておきます。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;これと、さっき覚えておいた1を足して「6」にします。&lt;br /&gt;
この「6」が1966年の&lt;b&gt;年定数&lt;/b&gt;です。1966年なら常に「6」になります。&lt;br /&gt;
以上の計算が比較的長いので、例えば今年の分だけ計算できればいいのであれば&lt;br /&gt;
今年の年定数をあらかじめ計算しておいてそれを覚えておけば、計算が速くなります。&lt;br /&gt;
例えば2017年だったら「0」です。（同じ2017年でも1, 2月は2016年として扱うのに注意です）&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;次に月定数を足します。2月なので、2番目の数字である「4」ですね。&lt;br /&gt;
さっき覚えておいた6と足して、6＋4＝10になり、7以上なので7引いて、10－7＝「3」です。&lt;br /&gt;
最後に日にちを足します。10日なので、3＋10＝13で、13－7＝「6」となります。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;b&gt;「6」&lt;/b&gt;は&lt;b&gt;金曜日&lt;/b&gt;でしたから、1967年2月10日は&lt;b&gt;金曜日&lt;/b&gt;です。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;手順は長いのですけど、計算がすべて簡単なことから、&lt;br /&gt;
ツェラーの公式をそのまま計算するよりも暗算がずっとしやすいものと思います。&lt;br /&gt;
何度か練習していけばきっと、一瞬は無理でも高速に求められるようになるでしょう。&lt;br /&gt;
現状私は20秒ぐらいです。年定数が分かっているもの（今年とか）ならすぐできるのですが&lt;br /&gt;
やはり年定数の計算に時間が掛かりますね。&lt;br /&gt;
&lt;/div&gt;</description>
			<link>https://blogs.yahoo.co.jp/fermiumbay2/41809718.html</link>
			<pubDate>Sun, 20 Aug 2017 13:51:23 +0900</pubDate>
			<category>その他自然科学</category>
		</item>
		<item>
			<title>Javaによるオブジェクト指向講座 おまけ</title>
			<description>&lt;div class=&#039;wiki&#039;&gt;&lt;div class=&#039;quote&#039;&gt;&lt;i&gt;（2019/8/2追記）&lt;/i&gt;&lt;br /&gt;
本記事の内容は新ブログに転載済みです：&lt;br /&gt;
&lt;a href=&quot;https://fermiumbay13.hatenablog.com/entry/2019/04/14/191910&quot; target=&quot;_blank&quot;&gt;https://fermiumbay13.hatenablog.com/entry/2019/04/14/191910&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;

&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;a href=&quot;https://blogs.yahoo.co.jp/fermiumbay2/41801021.html&quot; target=&quot;_blank&quot;&gt;＜ 第3回&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;img src=&quot;https://blog-001.west.edge.storage-yahoo.jp/res/blog-2c-a5/fermiumbay2/folder/1231935/26/41801026/img_0_m?1564679779&quot; width=&quot;560&quot; alt=&quot;&amp;#x0030a4;&amp;#x0030e1;&amp;#x0030fc;&amp;#x0030b8; 1&quot; class=&quot;popup_img_1053_564 clearFix alignLeft&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;a href=&quot;https://blogs.yahoo.co.jp/fermiumbay2/41801019.html&quot; target=&quot;_blank&quot;&gt;第2回&lt;/a&gt;で提示したレストランのやりとりをオブジェクト指向として実装した例です。&lt;br /&gt;
登場人物は、お客さん（Customer）、接客（Counter）、料理人（Cook）の3人で、&lt;br /&gt;
それぞれBaseCharaを継承して作られます。&lt;br /&gt;
料理の情報はFoodInfoクラスにまとめられています。&lt;br /&gt;
実際たかがこれだけの処理にこんなに書く必要ないと思いますけど、&lt;br /&gt;
例ということでご了承ください＾＾；&lt;br /&gt;
また、Mainクラスで定義されているshowCharaInfoメソッドをてきとうな所に挿入してもらえば&lt;br /&gt;
その段階での各キャラの情報（所持金、持っている食べ物）を表示できます。&lt;br /&gt;
（Main以外のクラスだと、Main.showCharaInfo();で呼び出せます）&lt;br /&gt;
処理の流れを見るのにぜひ活用してください。&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class=&#039;wiki&#039;&gt;&lt;pre class=&#039;wiki&#039;&gt;// 【Main.java】

// メインクラス
class Main{
    
    // 情報取得用のキャラクターリスト
    public static BaseChara[] charaList = new BaseChara[3];
    
    // キャラクターリストに載っているすべてのキャラクターの情報を表示
    public static void showCharaInfo(){
        for(int i = 0; i &amp;lt; charaList.length; i++){
            charaList[i].showInfo();
        }
    }
    
    // mainメソッド
    public static void main(String args[]){

        // （食べ物リスト）
        // 0番: オムライス（税込972円）
        // 1番: とんかつ（税込1296円）
        // 2番: たこ焼き（税込648円）
        
        // お客さんの名前はベイ助、所持金1000円、食べたいものは0番オムライス
        Customer customer = new Customer(&amp;quot;ベイ助&amp;quot;, 1000, 0);

        // 接客の名前はレーラ、所持金2万円
        Counter counter = new Counter(&amp;quot;レーラ&amp;quot;, 20000);

        // 料理人の名前はポン太、所持金なし
        Cook cook = new Cook(&amp;quot;ポン太&amp;quot;, 0);

        // showCharaInfoメソッドのためにそれぞれのキャラを代入しておく        
        charaList[0] = customer;
        charaList[1] = counter;
        charaList[2] = cook;
        
        System.out.println(customer.getName() + &amp;quot;は、レストランへ行きました。&amp;quot;);

        // お客さんが接客に注文 成功したら後の手続きを行う        
        if(customer.order(counter)){
            
            // 接客が料理人に料理を作るよう依頼し、もらう
            counter.askToCook(cook);
            
            // 接客がお客さんに料理を提供
            counter.provideDish(customer);
            
            // お客さんがそれを食べる
            customer.eat();
        }
        
        System.out.println(customer.getName() + &amp;quot;はレストランを後にしました。おわり&amp;quot;);
        
    }
}
&lt;/pre&gt;

&lt;pre class=&#039;wiki&#039;&gt;// 【BaseChara.java】

// 各キャラクターのスーパークラス
abstract class BaseChara{
    
    // 名前
    private String name;
    
    // 所持金
    private int money;
    
    // 持っている食べ物ID（-1で何も持っていない）
    protected int foodId;
    
    public BaseChara(String name, int money){
        this.name = name;
        this.money = money;
        this.foodId = -1;
        this.sayHello();
    }
    public String getName(){
        return this.name;
    }
    public int getMoney(){
        return this.money;
    }
    public int getFoodId(){
        return this.foodId;
    }
    
    // あいさつ
    abstract public void sayHello();
    
    // 情報を表示
    public void showInfo(){
        System.out.println(&amp;quot;【&amp;quot; + this.getName() + &amp;quot;の情報】&amp;quot;);
        System.out.println(&amp;quot;所持金：&amp;quot; + this.getMoney());
        if(this.getFoodId() != -1){
            System.out.println(&amp;quot;持っている食べ物：&amp;quot; + FoodInfo.getFoodName(this.getFoodId()));
        }else{
            System.out.println(&amp;quot;食べ物は何も持っていない……&amp;quot;);
        }
    }
    
    // しゃべらせる
    protected void speak(String comment){
        System.out.println(this.getName() + &amp;quot;「&amp;quot; + comment + &amp;quot;」&amp;quot;);
    }
    
    // お金をcharaに払う
    public void payMoney(int money, BaseChara chara){
        chara.receiveMoney(money);
        this.money -= money;
    }
    
    // お金をもらう
    private void receiveMoney(int money){
        this.money += money;
    }
    
    // 持っている食べ物をcharaに渡す
    public void giveFood(BaseChara chara){
        chara.receiveFood(this.foodId);
        this.foodId = -1;
    }
    
    // 食べ物をもらう
    private void receiveFood(int foodId){
        this.foodId = foodId;
    }
    
}
&lt;/pre&gt;

&lt;pre class=&#039;wiki&#039;&gt;// 【Customer.java】

// お客さん
class Customer extends BaseChara{
    
    // 欲しい食べ物
    private int hopeFoodId;
    
    public Customer(String name, int money, int hopeFoodId){
        super(name, money);
        this.hopeFoodId = hopeFoodId;
    }
    public void sayHello(){
        this.speak(&amp;quot;お客さんですっ！&amp;quot;);
    }
    
    // 欲しい食べ物を注文する
    public Boolean order(Counter counter){
        Boolean orderSucceeded = false;
        this.speak(FoodInfo.getFoodName(this.hopeFoodId) + &amp;quot;食べようかな。お願いします！&amp;quot;);
        if(this.getMoney() &amp;gt;= FoodInfo.getFoodPrice(this.hopeFoodId)){
            this.payMoney(FoodInfo.getFoodPrice(this.hopeFoodId), counter);
            counter.ordered(this.hopeFoodId);
            orderSucceeded = true;
        }else{
            this.speak(&amp;quot;ああ、お金が足りなくて注文できないや……&amp;quot;);
        }
        return orderSucceeded;
    }
    
    // 持っている食べ物を食べる
    public void eat(){
        this.speak(&amp;quot;いただきまーす！&amp;quot;);
        this.speak(&amp;quot;やっぱおいしいねぇ、ごちそうさま！&amp;quot;);
        this.foodId = -1;
    }
    
}
&lt;/pre&gt;

&lt;pre class=&#039;wiki&#039;&gt;// 【Counter.java】

// 接客
class Counter extends BaseChara{
    
    // 注文もらった食べ物のID
    private int orderedFoodId;
    
    public Counter(String name, int money){
        super(name, money);
    }
    public void sayHello(){
        this.speak(&amp;quot;接客しまーす！&amp;quot;);
    }
    
    // 注文を受ける
    public void ordered(int orderedFoodId){
        this.speak(&amp;quot;かしこまりました！　少々お待ちください！&amp;quot;);
        this.orderedFoodId = orderedFoodId;
    }
    
    // 注文された料理を料理人に作ってもらう
    public void askToCook(Cook cook){
        this.speak(FoodInfo.getFoodName(orderedFoodId) + &amp;quot;の注文入りましたよ！&amp;quot;);
        cook.cook(this, orderedFoodId);
    }
    
    // 料理を提供する
    public void provideDish(Customer customer){
        this.speak(&amp;quot;おまちどおさまでした！　&amp;quot; + FoodInfo.getFoodName(this.getFoodId()) + &amp;quot;です！&amp;quot;);
        this.giveFood(customer);
    }
    
}
&lt;/pre&gt;

&lt;pre class=&#039;wiki&#039;&gt;// 【Cook.java】

// 料理人
class Cook extends BaseChara{
    
    public Cook(String name, int money){
        super(name, money);
    }
    public void sayHello(){
        this.speak(&amp;quot;料理作ってやるよ！&amp;quot;);
    }
    
    // 料理する
    public void cook(Counter counter, int cookFoodId){
        this.speak(&amp;quot;よーし、いま作るから待ってな&amp;quot;);
        System.out.println(&amp;quot;5分後...&amp;quot;);
        this.foodId = cookFoodId;
        this.speak(&amp;quot;できた！　それじゃ、持ってってくれよ&amp;quot;);
        this.giveFood(counter);
    }
    
}
&lt;/pre&gt;

&lt;pre class=&#039;wiki&#039;&gt;// 【FoodInfo.java】

// 食べ物の情報を持ったクラス
class FoodInfo{
    
    // 消費税率
    private static final double taxRate = 0.08;
    
    // 食べ物の名前一覧
    private static String[] foodName = {&amp;quot;オムライス&amp;quot;, &amp;quot;とんかつ&amp;quot;, &amp;quot;たこ焼き&amp;quot;};
    
    // 食べ物の税抜き価格一覧
    private static int[] foodPrice = {900, 1200, 600};
    
    public static String getFoodName(int foodId){
        String foodName = &amp;quot;&amp;quot;;
        if(foodId &amp;gt;= 0 &amp;&amp; foodId &amp;lt; FoodInfo.foodName.length){
            foodName = FoodInfo.foodName[foodId];
        }
        else{
            foodName = &amp;quot;(未定義)&amp;quot;;
        }
        return foodName;
    }
    
    public static int getFoodPrice(int foodId){
        int foodPrice = 0;
        if(foodId &amp;gt;= 0 &amp;&amp; foodId &amp;lt; FoodInfo.foodPrice.length){
            foodPrice = addTax(FoodInfo.foodPrice[foodId]);
        }
        return foodPrice;
    }
 
    // 税込み価格にする   
    public static int addTax(int price){
        return (int)((1.0 + taxRate) * price);
    }
    
}
&lt;/pre&gt;

&lt;/div&gt;</description>
			<link>https://blogs.yahoo.co.jp/fermiumbay2/41801026.html</link>
			<pubDate>Sat, 12 Aug 2017 12:23:18 +0900</pubDate>
			<category>プログラム</category>
		</item>
		</channel>
	</rss>