Bash でユークリッド互除法
-
A と B の余り C
-
B と C の余り D
-
C と D の余り E
...
-
X と Y の余り 0
となったときの Y の値が最大公約数。
Bash のスクリプト
#!/usr/bin/env bash
function gcd(){
test $2 -eq 0 && echo $1 || gcd $2 $(($1 % $2))
}
gcd 1071 1029
# 21
A と B の余り C
B と C の余り D
C と D の余り E
...
X と Y の余り 0
となったときの Y の値が最大公約数。
#!/usr/bin/env bash
function gcd(){
test $2 -eq 0 && echo $1 || gcd $2 $(($1 % $2))
}
gcd 1071 1029
# 21
wget https://download.imagemagick.org/ImageMagick/download/ImageMagick-7.0.11-14.tar.xz
tar xf ImageMagick-7.0.11-14.tar.xz
sudo apt update
cd ImageMagick-7.0.11-14.tar.xz
./configure
make -j
sudo make install
sudo ldconfig /usr/local/lib
ImageMagick でバイラテラルフィルターをかける試み。 ImageMagick のインストール方法は install-magick.html
magick convert Parrots.jpg -bilateral-blur 10x10 output.png
入力画像
出力画像
Pyenv をクローンする
Pyenv のリポジトリーをクローンする。
ディレクトリーは ~/.pyenv
がおすすめ。
git clone https://github.com/pyenv/pyenv ~/.pyenv
0. 高速化のための Bash 拡張をコンパイル
高速化のための Bash 拡張のコンパイルが可能。
コンパイルが失敗しても正常に動作する。
```sh
cd ~/.pyenv && src/configure && make -C src
設定 (bash)
パスとかの設定。
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init --path)"' >> ~/.profile
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
echo -e 'if shopt -q login_shell; then'
'\n export PYENV_ROOT="$HOME/.pyenv"'
'\n export PATH="$PYENV_ROOT/bin:$PATH"'
'\n eval "$(pyenv init --path)"'
'\nfi' >> /.bashrc
echo -e 'if [ -z "$BASH_VERSION" ]; then'/.profile
'\n export PYENV_ROOT="$HOME/.pyenv"'
'\n export PATH="$PYENV_ROOT/bin:$PATH"'
'\n eval "$(pyenv init --path)"'
'\nfi' >>
# Python 環境のインストール
## 依存するライブラリーのインストール
```sh
sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev -y
pyenv install -l
コンパイル時間が長いので待つ。
CONFIGURE_OPTS="--enable-shared" pyenv install 3.9.5
pyenv versions
pyenv global 3.9.5
例として、1[Hz] の sin 波を信号とする。 平均 0、標準偏差 0.5 の正規分布から乱数を作成したノイズを信号に加える。
import numpy as np
import matplotlib.pyplot as plt
from scipy.ndimage import gaussian_filter1d
t = np.arange(1000) / 100
s = np.sin(2*np.pi*t)
noise = np.random.normal(0, 0.5, size=len(t))
x = s + noise
plt.plot(t, x, label="+noise")
plt.plot(t, s, label="signal")
plt.legend(loc=1)
plt.show()
標準偏差 5 のガウシアンフィルターをかける。 標準偏差が大きいほど、滑らかになるが元の信号と外れる。
y = gaussian_filter1d(x, 5)
plt.plot(t, y, label="filtered")
plt.plot(t, s, label="signal")
plt.legend(loc=1)
plt.show()
require "numo/narray"
a = Numo::NArray[4, -1, 2]
b = [2, -2, -1]
c = a.dot b
8
a = Numo::NArray[1+1i, 1-1i, -1+1i, -1-1i]
b = [3-4i, 6-2i, 1+2i, 4+3i]
c = a.conj.dot b
(1.0-5.0i)
d = a.conj.dot a
(8.0+0.0i)
a = Numo::NArray[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b = [[9, 8, 7], [6, 5, 4], [3, 2, 1]]
c = (a * b).sum(0)
Numo::Int64#shape=[3]
[54, 57, 54]
c = Numo::NArray[(a * b).sum(1)].transpose
Numo::Int64(view)#shape=[3,1]
[[46],
[73],
[46]]
JavaScript で使える和暦のライブラリーを作りました。
https://himeyama.github.io/era.js/era.js
let date = new Era()
date.getWareki() // "令和X年X月X日" (今日の日付)
date = new Era("2020-1-1")
date.getWareki() // "令和2年1月1日"
date.getWareki("西暦") // "2020/01/01"
date.getDateAry() // ["令和", 2, 1, 1]
Era.date2wareki(id) // id を指定して要素を和暦に変換
cal | short | type | 表示 |
---|---|---|---|
"和暦" | true | 0 | |
1 | |||
2 | |||
3 | |||
4 | |||
5 | |||
false | 0 | ||
1 | |||
2 | |||
3 | |||
"西暦" | true | 0 | |
1 | |||
2 | |||
3 | |||
4 | |||
5 | |||
false | 0 | ||
1 | |||
2 | |||
3 | |||
4 |
for([i, e] of ["a", "b", "c"].entries()){
console.log(i, e)
}
["a", "b", "c"].forEach((e, i) => {
console.log(e, i)
})
const n = 10
let ary = [...Array(n)].map((_, i) => i)
// もしくは
ary = Array.from({length: n}).map((_, i)=> i)
let ary = [1, 2, 3, 4, 5]
ary.reduce((_, v) => _ + v)
sudo apt update -y && sudo apt install python3-pip -y
apt
経由でインストールすると、何故かうまくいかなかったりしたので pip3
でインストールする。
pip3 install youtube-dl
youtube-dl が実行できない場合は、パスが通っているか確認する。
youtube-dl https://xxx.xxxxxxx.xxx/?xxx=xxxxxxxx
[XXXXXXX] xxxxxxxxxxx: Downloading webpage
[download] Destination: xxxxxxxxxxxx.mp4
[download] 100% of 50.00MiB in 00:05