Hatena::ブログ(Diary)

プログラミング所感

2017-08-15

オペレーションズ・リサーチを一言でいうと、「科学的意思決定手法を用いた問題解決学」といえるだろうか。ここでいう科学とは、数学、情報科学、経済学、社会学などになる。

日本の大学でOR全般を学べるところは多くないと思う。しかし、ORの一部を学べるところはたくさんあり、学部も多岐に渡る。

ただし、内容はORだがORという言葉を使っているとは限らない。また、大学で教えるORには、どろくさい部分が抜けていることが多い。

OR従事者にとっての喜びは、社会に貢献することだろう。しかし、そこに至る道にはどろくさいことを避けて通れない。

2017-08-04

RejectKaigi というものがある。RubyKaigiにもれた人たちに登壇してもらうものらしい。採択率が1/4だった PyCon2017 もやると面白いんじゃないだろうか。

主催者は、誰でもいいし。

2017-08-02

jupyter dashboards で、起動時に Preview モードにする方法。

AnacondaのJupyter notebookでnbextensionsを使う」の通り、nbextensions を導入し、Initialization cellsを有効にする。

下記のセルを作り、初期実行するようにする。

%%javascript
document.getElementById('jupyter-dashboard-view-toolbar-buttons').children[3].click();

2017-07-28

「論理的思考力を鍛える33の思考実験」 にレビューを書いたのだけれど反映されないので、ここにも書く。

https://amazon.jp/dp/4801302092/

第3章の間違いが多い。

  • p108 モンティ・ホール問題:ルールを明確に書くべきである。ルールが明確でないと結論は下記の通りで「いかようにもできる」ことに。

http://plaza.harmonix.ne.jp/~fakira/turedure/cprog_02.htm#020311

  • p184 2つの封筒・2:正しい結論は下記の通りで「わからない」。

http://qiita.com/SaitoTsutomu/items/9784e4451d6d510dbfbb

  • p187 エレベータの男女:正しい結論は「1/2の確率」。「1人がまず、エレベータから降りてきました。男性のようです。」から 「つまり、エレベータに乗っている2人のうちのどちらかは男性」と考えているのが間違い。

2017-07-20

論理パラドクスは、お勧めである。

https://amazon.jp/dp/B06W54KMJN

アマゾンで低評価なのが理解できない。

答88の理想的行為の説明に違和感がある。問88について、(人数差と行為の有無の区別をなくし)より本質的にするために次のように変えてみる。

医師の問題
状況:患者Aから臓器移植を行い患者Bを助ける。当初、患者Aの生存に疑問の余地はなかったが、
臓器摘出後、不測の事態でそのままでは、患者Aが死亡することが判明。両方助けることは不可能。
方法1) 臓器を移植し患者Bを助け、患者Aを死なす。
方法2) 臓器を戻し患者Aを助け、患者Bを死なす。
方法3) 何もせず、両方死なせる。
運転士の問題
状況:書籍にほぼ同じ。
方法1) ボタンAを押し、作業員Bを避け、作業員Aを死なす。
方法2) ボタンBを押し、作業員Aを避け、作業員Bを死なす。
方法3) 何もせず、両方死なせる。

なお、方法3は、方法1と2の区別を無くすために用意されており、その選択の是非はここでは問わず、方法1か方法2の2択のみ考える。

この場合、医師の問題と運転士の問題は同じ問題であり、両者ともどちらを選んでも責められない。

しかし、最初から患者Aの臓器を摘出するとAが亡くなると医師が知っていた場合、書籍と同じく医師は責められることになる。

この2つの場合の医師の理想的行為は同じであるため、理想的行為かどうかは説明にならない。

単純に運転士が責められないのは(緊急避難により)法律を犯していないためであり、医師が臓器移植をして責められるのは、(殺人により)法律を犯しているからであろう。

法律以外の(例えば倫理など)の要素については、正解はないのではないだろうか。

問26同一人物であることの答の最後も違和感がある。

問50影のパラドクスの答でユニットをあげているが、光源Xに対する影Yの主体は、「XとYの間に存在する物体の集合の空でない部分集合の集まり」と考えることもできる。

2017-07-06

Jupyterでバーコード表示。

from IPython.display import SVG, display
import barcode
JAN = barcode.get_barcode_class('ean13')
SVG(JAN('978476490433').render().decode())

2017-07-05

PDFにマーク挿入。

import PyPDF2
pdf = PyPDF2.PdfFileWriter()
mrk = PyPDF2.PdfFileReader('mark.pdf') # マーク
mpg = mrk.getPage(0)
frm = PyPDF2.PdfFileReader('from.pdf') # 元PDF
for pg in frm.pages:
    pg.mergeTranslatedPage(mpg,10,10) # x,y
    pdf.addPage(pg)
pdf.addBlankPage() # blank
with open('output.pdf','wb') as fp:
    pdf.write(fp) # 出力

2017-06-29

AR Measure すごい。