おしっこムーンベース
アフリカには牛糞で作った家とかありますが、月面基地がおしっこで出来るとすれば夢のワンダーランドですね!
構造化プログラミングの例題
ダイクストラ、ホーア、ダール『構造化プログラミング』
N. Wirth『Systematic Programming』
ダイクストラ、ホーア、ダール共著の『構造化プログラミング』中のダイクストラ「構造化プログラミング論」の中にダイクストラが口述試験に出した問題として、
「0,1,2 でなる長さ1以上の列で、隣り合う部分列はどれも等しくないものを考え、そのような列を、長さ100のもの(つまり100個の数字の列)になるまで、次々とアルファベット順に創り出すプログラムを構成すること」
というのがあって、ダイクストラがウダウダ愚図っていて考える気もせず読み飛ばしていたのですが、この設問の考案者である N. Wirth の 『Systematic Programming An Introduction』を眺めていたら最終章の例題の中に出てきて、stepwise program development の実例として考え方まで開陳してくれていたので Fortran で書いてみました。
Wirth の手にかかると簡単になって、かつ数字の対称性から数の置換は本質的に繰り返しになっていて本質的に違いのある配置数は 1/6 になるなど、啓蒙させられました。
なお、ダイクストラの出した別の問題
「2 つの数の n 乗和で、2通り以上の形で表わされるもので最小のものを求めよ。」
というのもあって、同じように解説してくれていました。3乗和の例題によって、ハーディの語るラマヌジャンの病床での逸話の数 1729 が求められています。
Fortran
ソース・プログラム
色々めんどくさいので、サブルーチン中でプログラム終了するお下品プログラムにしましたw なお Wirth は長さ3で数は 0,1,2 ではなく 1,2,3 でやっているのでこれに従いました。Wirth が表に与えている長さ20までの本質的に独立な列の数はチェックしました。
program seq123 implicit none integer, parameter :: n = 3, k = 3 ! n:length k:1,2,3..k integer :: is(n), m is(1) = 1 m = 1 do if (m == n) then if (is_ok()) print '(20i3)', is call change() else call extend() end if do if (is_ok()) exit call change() end do end do contains subroutine extend() m = m + 1 is(m) = 1 end subroutine extend subroutine change() do if (is(m) == k) then m = m - 1 else exit end if if (m <= 0) stop 'normal end' end do is(m) = is(m) + 1 end subroutine change logical function is_ok() integer :: i is_ok = .true. do i = 1, m / 2 is_ok = any(is(m-2*i+1:m-i) /= is(m-i+1:m)) if (.not. is_ok) exit end do end function is_ok end program seq123
出力
1 2 1 1 2 3 1 3 1 1 3 2 2 1 2 2 1 3 2 3 1 2 3 2 3 1 2 3 1 3 3 2 1 3 2 3 normal end
長さ 100 の場合の条件を満たす最初の列
出力は 0,1,2 にしました。
0 1 0 2 0 1 2 0 2 1 0 1 2 0 1 0 2 0 1 2 0 2 1 0 2 0 1 0 2 1 0 1 2 0 1 0 2 0 1 2 0 2 1 0 1 2 0 1 0 2 1 0 1 2 0 2 1 0 2 0 1 0 2 1 0 1 2 0 1 0 2 0 1 2 0 2 1 0 1 2 1 0 2 0 1 0 2 1 0 1 2 0 1 0 2 0 1 2 0 2

構造化プログラミング (サイエンスライブラリ情報電算機 32)
- 作者:E.W.ダイクストラ,C. A. R. ホーア,O.-J. ダール
- 発売日: 1975/05/01
- メディア: 単行本

Systematic Programming: An Introduction
- 作者:Wirth, Niklaus
- 発売日: 1973/04/01
- メディア: ハードカバー

ラマヌジャン その生涯と業績に想起された主題による十二の講義 (数学クラシックス)
- 作者:G.H. ハーディ
- 発売日: 2016/09/10
- メディア: 単行本
プーチン氏 自己隔離や否や
プーチン氏が「自主隔離」 接触した医師がコロナ感染 新型肺炎・コロナウイルス
モスクワ=石橋亮介 2020年4月1日 21時37分
ロシア大統領府は1日、新型コロナウイルスの感染拡大防止のため、プーチン大統領が側近らとの接触を避け、会議などの業務を遠隔で行うと発表した。プーチン氏と面会した医師の感染が確認されたためで、ウイルスの検査も毎日行うという。
感染が確認された医師はデニス・プロツェンコ氏。3月24日、モスクワ市内の病院に視察に来たプーチン氏らを案内していた。31日になってこの医師の感染が明らかになった。大統領府は同日には「大統領は定期的に検査を受けており、問題ない」とし、「自主隔離」には触れていなかった。
タス通信によると、大統領府のペスコフ報道官は1日、「大統領は当面、(テレビ電話を使った)オンラインで執務する」と説明。「自分も含め、病院で大統領と一緒にいた人は毎日検査を行い、会議などを避けて可能な限り距離をとる」と強調した。(モスクワ=石橋亮介)
視察し握手もした病院長感染、プーチン氏は隔離措置取らず 2020/04/01 22:42 新型コロナ
【モスクワ=工藤武人】新型コロナウイルスの感染拡大を受け、ロシアのプーチン大統領が3月24日に視察した病院の院長が、ウイルスに感染していたことが31日、明らかになった。プーチン氏は、院長と素手で握手もしていたが、自主的な隔離措置は取らず、通常の公務を続けている。
プーチン氏の視察先となったのは、新型コロナウイルス感染者の治療の最前線となっているモスクワ市内の病院だ。プーチン氏は防護服を着て治療現場を視察したが、院長との会談ではマスクを着けずに至近距離で話し込み、エレベーターにも同乗した。院長も白衣をはおっただけだった。視察には、ゴリコワ副首相やモスクワ市のソビャーニン市長も同行した。
タス通信によると、ペスコフ大統領報道官は31日、「プーチン氏は定期的に検査を受けており、全て順調だ」と述べたが、4月1日にはプーチン氏が「握手を断っている」とし、感染予防に努めていることを強調した。プーチン氏は1日、政権幹部らとの会合を初めてテレビ会議に切り替えた。