Hatena::ブログ(Diary)

プログラミング所感

2017-03-26

2017-01-16

センター試験終了。 2次は先生と相談か。

OR学会申込のキーワードからシミュレーションがなくなる。

2016-12-22

AnacondaのQtが5になったら、 急にdockerのサイズが増えた。で、4に戻した。

2016-12-16

Qiitaに書いているので、こっちに書くことがない。

DropBoxのpublic公開がなくなると、気軽にファイルを渡す手段がない。

2016-11-11

ブログ開始20年目に入る。

2016-10-04

python系で、ちょっと試す場合、dockerからjupyterすることが多い。有用そうなら、dockerイメージも作る。

45個も作っている。https://hub.docker.com/u/tsutomu7/

2016-08-15

指定した面積になるように 座標を計算する。

f:id:tsutomu3:20160815115945p:image:right

def trans_area(pp, po, target, niter=30, ratio=0.1):
    """
    Calculate positions which area close to a target.
    pp: list of x,y
    po: list of polygon(indexes)
    target: list of target area
    niter: number of iteration
    ratio: ratio of change
    """
    pp = np.array(pp, dtype=float)
    for h in range(niter):
        for i in range(len(po)):
            a = area(pp, po[i])
            r = 1 + (target[i]-a)/target[i]*ratio
            for j in po[i]:
                pp[j] *= r
    return pp
def area(pp, pl):
    from more_itertools import pairwise
    return abs(sum((pp[i][0]-pp[j][0]) * (pp[i][1]+pp[j][1]) for i, j in pairwise(list(pl) + [pl[0)))/2
def view(pp, po):
    from IPython.display import SVG
    cols = 'red fuchsia purple navy blue teal aqua green lime olive yellow orange orangered maroon'.split()
    pp = np.array(pp)
    pp[:, 1] *= -1
    mx, mn = pp.max(0), pp.min(0)
    pp = (pp - mn) / (mx-mn)
    s = ''.join(['<path fill="%s" d="%s"/>'%(cols[i%len(cols)],
        'M'+' '.join(['L%g,%g'%(pp[j][0], pp[j][1]) for j in p])[1:]+' Z')
        for i, p in enumerate(po)])
    return SVG('<svg viewBox="0 0 8 1">%s</svg>'% s)
tgt = [2,0.8,1]
pp = [(-1,0), (1,0), (-1,1), (0,1), (1,1), (-1,2), (0,2), (1,2)]
po = [(0,1,4,3,2), (2,3,6,5), (3,4,7,6)]
view(trans_area(pp, po, tgt), po)

2016-06-27

こういう短縮サービスはどうだろう。

すなわち、word2vecで中味に関係の深い単語を3個選び、それを組合せてURLにする。既出なら連番を振る。