iPhoneを手に入れた
といってもiPhone7(128GB, SIMフリー,中古)だけど。
新しくスマホ買ったよ!!!@rs_pferd から買った中古のiPhone7 pic.twitter.com/AubsyCc4NM
— しょうゆ@4thday2参加 (@shsub) September 29, 2018
今使ってるnexus5X(ymobile)が16GBしかなく、複数のゲームを入れることもままならなかったので、iPhone7にymobileのSIMを刺して、nexus5xはSIMロック解除して余ってるIIJのSIMでも入れるつもり。
ざっと使ってみた感じ、
- 画面はnexus5の方が大きく、きれいに見える。解像度はどちらも1920x1080。iPhone7は1,334 x 750ですね・・
- 容量が16GB -> 128GBになったのは大きい。
nexus5xのSIMロックを解除しようと思ったけど、割賦を支払いきってなかったので一括で残りを支払う必要がありそうだよ。。大した金額じゃないけど。
AtCoder Beginner Contest 111(ABC111)に参加しました
Cがあとちょっとで解けたのに、残念。
A:
1桁ずつ数値を分解し、1が来たら9を加え、9が来たら1を加えて、それ以外の数値はそのまま加えて出力した・・あれもしかして1と9以外なかった?
https://beta.atcoder.jp/contests/abc111/submissions/3290187
B:
配列に111~999までのゾロ目を入れておいて、小さい方から順に見て入力値を上回ったらその値を出力。
https://beta.atcoder.jp/contests/abc111/submissions/3291386
C:
偶数と奇数に分け、数値の頻度分布を作って、一番大きい値だけ取り除いて残りの頻度の和を取ればよい。
ただし偶数と奇数の最頻値が同じ場合、どちらか一方は二番目に大きい値を取り除く必要がある。
今回時間内では勝手に奇数側だけ二番目を見るようにした(a)ため、テストケースの最後で引っかかってしまっていた。解説見た後偶数側も二番目を見るパターンを作り(b)、(a)と(b)の大小を比較することで通った。
https://beta.atcoder.jp/contests/abc111/submissions/3299748 (不正解)
https://beta.atcoder.jp/contests/abc111/submissions/3302957 (正解)
AtCoder Beginner Contest 110(ABC110)に参加しました
A,B,C完。Dは約数いちいち出してたらダメなのはわかりましたが・・?
A:
2桁 + 1桁の足し算の形になるので、2桁の数値の10の位に一番大きい値を持ってくればよし。
pythonのリストにA, B, Cを格納して、最大の要素をdeleteする形で取り除きました。
https://beta.atcoder.jp/contests/abc110/submissions/3251160
B:
首都も含めたx(とX)の最大値が y(とY)の最小値より少なればOK
・・ということに今更気づきました。
解いたときは愚直にx(とX), y(とY)を全部回して大小比較してました。
https://beta.atcoder.jp/contests/abc110/submissions/3253074
C:
アルファベットの種類を無視して頻度が一緒なら成立します。
なので各文字毎にdefaultdictで個数を数え、valuesだけ取りだしソートして一致判定をしました。
https://beta.atcoder.jp/contests/abc110/submissions/3254915
D:
バカ正直に約数を取りに行ったら、サンプルの段階でTLEしてました。
おそらく素因数分解を使うのでしょうが・・
python/scikit-learnのperceptronを使ってみた
上の本を読んでいたらperceptronの紹介があったので、手元で動かしてみた。
(5, 1), (1, 5)と中心を離して正規分布を生成してるので、100%分類できるだろうと思ったら一個だけハズレが出た。残念。
参考:
Numpyのndarrayとmatrixでは*の結果が異なる
(この記事はQiitaからの転載になります。)
すごい初歩的な話なんですが・・
In [1]: import numpy as np In [2]: H = np.matrix([[1, 2], [3, 4]]) In [3]: H * H Out[3]: matrix([[ 7, 10], [15, 22]]) In [4]: J = np.array([[1, 2], [3, 4]]) In [5]: J * J Out[5]: array([[ 1, 4], [ 9, 16]])
という感じに、np.matrixの*は行列の掛け算であるのに対し、np.arrayは要素毎の積(アダマール積)になってるんですね。np.arrayの方もnp.dotを使えば行列の掛け算になります。
In [6]: np.dot(J, J) Out[6]: array([[ 7, 10], [15, 22]])
np.powerっていう関数もあるんですが、これは単に要素毎のべき乗を取ってるようで、
In [8]: np.power(J, 2) Out[8]: array([[ 1, 4], [ 9, 16]]) In [9]: np.power(H, 2) Out[9]: matrix([[ 1, 4], [ 9, 16]])
とどちらも同じ結果になるのですが、行列のべき乗は関数ないんでしょうか? x >= 1 なら、
def matpow(A, x): B = A for _ in range(x - 1): B = np.dot(B, A) return B
In [14]: matpow(J, 2) Out[14]: array([[ 7, 10], [15, 22]])
で行ける感じもするんですが、ndarray用に作ってるのにmatとか付けるのがイケてなかったり、0乗や逆行列はどうすんだって問題もあります。
ちなみに ** 演算子はnp.matrixではnp.powerと違う挙動をします。
In [13]: H ** 2 Out[13]: matrix([[ 7, 10], [15, 22]])
皆さんどうしてるんでしょうか?
これに対するコメント
numpy.matrixは使わない
ベクトルも明示的に行列(1行n列、もしくは、n行1列)として定義する
+、*、@を使う
AtCoder Beginner Contest 109(ABC109)に参加しました
C問題何回か間違えたけど解けた!
A:
Aが偶数もしくはBが偶数ならばCは必ず偶数になる。AもBも奇数ならCに奇数を選んで奇数にできる。
https://beta.atcoder.jp/contests/abc109/submissions/3152172
B:
i番目のW, W_iが過去のsetに含まれていない、かつW_iの最後の文字がW_i+1の先頭の文字と同じ場合はYes。そうでなければNo。最初dict.has_key()とか使おうと思ったけどpython3.4には無かった?(inが使えた。そもそもdictである必要すらなかった)
https://beta.atcoder.jp/contests/abc109/submissions/3154570
C:
最初は|X - x_i|の最小値が正解かと思ったけど、
1 4
1 7 11
みたいな時に成り立たないことがわかった。
それじゃあ最小公倍数かと思ってmath.gcd()を使ったのだけど、REが出てしまった。少し悩んだ結果、gcdは3.4までfractionモジュールの中にあるって事がわかり、手元のpython3.6環境と違うので自前でgcdを用意したら通った。
https://beta.atcoder.jp/contests/abc109/submissions/3159180
D:
問題の意味はわかったけど解き方がわからなかった。一筆書きでよかったのん(解説みながら)
【読了】エンジニアの知的生産術
エンジニアの知的生産術 ──効率的に学び、整理し、アウトプットする (WEB+DB PRESS plusシリーズ)
- 作者: 西尾泰和
- 出版社/メーカー: 技術評論社
- 発売日: 2018/08/10
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
一回読み終えた。
軽い感想としては"土台となる部分は提供するから、あとは自分で考えてね"って感じか。印象に残った部分としては調査(種まき)・抽象化、パターン化(発芽)・検証(促進)のサイクルとか、タスクを達成可能なレベルまでに落とす、GTD(まず頭の中にあるもの全部書きだして、そこから優先度をつける)、KJ法、あたりか。()内間違ってるかも。参考文献の紹介の仕方は丁寧。
ただ今の自分にすぐ適応できるかっていうと、そこまでの気力は・・って感じ。
一般的な自己啓発っぽさは無いんで読んで損は無いと思う。
少し(が数時間後か数日後か不明だけど)後になったらまた読み返してみる。