python環境

いやだいやだと避けていたpythonを使うことになったので環境構築

当然WSL環境情報です

 

pyenvをインストール

 git clone git@github.com:pyenv/pyenv.git ~/.pyenv

 

bash_profileで環境変数を定義

export PYENV_ROOT=$HOME/.pyenv

export PATH=$PYENV_ROOT/bin:$PATH

eval "$(pyenv init -)"

 

Anacondaをインストール

pyenv install --list | grep anaconda

pyenv install anacondaXXXX

pyenv global anacondaXXXX

pyenv rehash 

 

matplotlib関係

conda install nomkl

conda update --all

 

pyenv/versions/X.X.X/lib/pythonX.X/site-packages/matplotlib/mpl-data/matplotlibrcを変更

 backend :TKAgg

 

Tensorflow、Kerasをインストール

conda install -c conda-forge tensorflow 

conda install -c conda-forge keras

 

Jupyter Notebook関係

pip install jupyterthemes

jt -t onedork -f source

jupyter notebook --generate-config

 jupyter_notebook_config.pyを編集

c.NotebookApp.notebook_dir = '/home/user/path'

c.NotebookApp.open_browser = False

 

最後にemacs

conda install virtualenv 

conda install flake8

MELPAからJediをインストール後

(when (require 'jedi nil t)
(add-hook 'python-mode-hook 'jedi:setup)
(setq jedi:complete-on-dot t))

M-x jedi:install-server 

 

移り気の産物

FFTc++で実装しようと調べていたらいつの間にか調べている内容がtemplateになっていた。

せっかくなのでtemplateを使ったソート関数を定義して試してみた。

これが(4ヶ月前) 

こうなった

 

前のやつはSTLすら使っていない。もうあの頃には戻れないぞ。

 

なぜこんなことになったのか判明したので追記

http://wwwa.pikara.ne.jp/okojisan/index.html

ここのFFTのページを見るはずがSorting Algorithms by C++を開いてしまったのが原因

 

分銅の問題

12個の分銅があり、この中に1つだけ重さが他と異なる。いま、天秤を3回だけ使って、重さの違う1個を見つけよ。さらに、それが他より軽いか重いか判定せよ。

 

分銅12個をそれぞれa1~a12とする。また正常な重さの分銅をXとする。

1回目

a1~a4とa5~a8を測定

釣り合う場合 → 2回目の1へ

釣り合わない場合 → 2回目の2へ

 

2回目
  1. 他と異なる分銅はa9~a12のいずれか
    a9,a10とa11,Xを測定
    釣り合う場合 → 3回目の1へ
    釣り合わない場合 → 3回目の2へ

  2. a1~a4が下がると仮定するとa1~a4のいずれかが重い、またはa5~a8のいずれかが軽い(a1~a4が上がる場合も同様に判定)
    a1,X,X,Xとa5,a2~a4を測定
    釣り合う場合 → 3回目の3へ
    釣り合わない場合 → 3回目の4へ
3回目
  1. a12以外全て同じ重さであることが測定された
    a12とXを測定 → a12が重い(軽い)

  2. a9,a10が下がると仮定するとa9,a10のいずれかが重い、またはa11が軽い(a9,a10が上がる場合も同様に判定)
    a9とa10を測定
    釣り合う場合 → a11が軽い
    釣り合わない場合 → 下がる方が重い

  3. 仮定よりa6~a8のいずれかが軽い
    a6とa7を測定
    釣り合う場合 → a8が軽い
    釣り合わない場合 → 上がる方が軽い

  4. a1,X,X,Xが下がる場合a1が重い、またはa5が軽い
    a1とXを測定
    釣り合う場合 → a5が軽い
    釣り合わない場合 → a1が重い

    a5,a2~a4が下がる場合a2~a4のいずれかが重い
    a2とa3を測定
    釣り合う場合 → a4が重い
    釣り合わない場合 → 下がる方が重い

 

見にくいのは仕方がない

線型の教科書に載っていたので解いてみた

どんな場合でも必ず3回測定が必要ってのが面白い