Tamflexの備忘録

Tamflexの貯蔵庫

やる気のない備忘録

anaconda3でgraph_toolを使う

ubuntuでgraph_tool(graph-tool: Efficent network analysis with python)を使うときには、以下のリンクに従ってレポジトリを登録したあと、以下のコマンドで簡単にインストールできる。 sudo apt install python-graph-tool # python2 version sudo apt ins…

無理数を使わないでフィボナッチ数の一般項を表現する

フィボナッチ数の一般項は以下の式で表される。 これを展開して、無理数をなくしてあげると以下のようになる。 計算量はである。例えばpython3で実装すれば以下のようになる。 import scipy.misc as scm import math fib = lambda n : int(sum([scm.comb(n,2…

ssh設定の備忘録

よく設定する癖によく忘れるので備忘録を書きます クライアント側設定 鍵の作成 $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 鍵にかかっているパスワードの変更 $ ssh-keygen -p Enter file in which the key is (/home/user/.ssh/id_rsa): [P…

【python】pythonで変数名を取得する

ラムダ式で書いてみた var_name = lambda val : [k for k, v in globals().items() if id(v) == id(val)] a = 1 s = var_name(a)[0]

【c++11】warning: deleting object of polymorphic class type ‘Derived’ which has non-virtual destructor might cause undefined behaviour [-Wdelete-non-virtual-dtor]

自作クラスでdeleteでデストラクタを呼ぼうとしたら以下のような警告が出た。 warning: deleting object of polymorphic class type ‘Derived’ which has non-virtual destructor might cause undefined behaviour [-Wdelete-non-virtual-dtor] delete v;こ…

テンプレートクラスTの内部クラスを呼び出す

共通の内部クラスを持っている複数のクラスをつくって、テンプレートからそれを呼び出したいことがあるかもしれません。その時は以下のように書けばうまく動くでしょう。 #include <iostream> using namespace std; class A1 { public: struct Param { Param(){cout <<</iostream>…

循環少数のプログラム

フロイドの循環検出法 - Wikipedia これを使うらしい int f(int n) { int p = 1, q = 1; int s = 0, t = 0; // start : s, goal : t while(1) { p = (p*10)%n; q = (q*10)%n; q = (q*10)%n; if(p==q) break; } if(p!=0) { q = 1; s = 1; while(p!=q) { s++; …

【ポケ森】「あおいチューリップ」の育て方 【どうぶつの森ポケットキャンプ】

検索エンジンで調べるといくつかのサイトで攻略方法がありましたが、実験に基づいた最も確からしいサイトがあったので検証結果・考察とともに報告します。結構しっかり作られているみたいで、ゲーム内で科学実験を疑似的に楽しめて面白いですね。 ※参考にし…

パスワードで保護されているpdfファイルを解除する

パスワードクラックの方法ではないのであしからず。配布された資料のパスワードを逐一解除するのは手間がかかるし、将来見たい時には忘れているかもしれない。 それに個人的に利用する限りでは、パスワードを解除してもそれほど問題にはならない(あくまで個…

ssh経由でリモートとローカルを判別してLAN内のサーバに接続する

LANの中にgitBucket用のサーバがあり、ノートPCでLANの内側・外側の両方から切り替えを自動化してアクセスしたいと考えて.ssh/configの設定を考えてみた。自分がLANの内側か外側にあるのか判別するにはnslookupを使えばいいことに気が付き以下のように.ssh/c…

ファイル名を一括置換

ファイル名を一括で置換したいシチュエーションはたくさんあると思うけど、そういう時に逐一find-sedコマンドを使うのが面倒なときはrenameコマンドを使うといいでしょう。 Linuxであればどのディストリビューションにもおそらく入っていると思われます。 使…

ubuntu 16.04におけるwifiの不具合について

14.04からアップグレードしたのは良いもののwifiのアクセスポイントが見つからなくなってしまった。 復旧方法は以下の通り sudo iwconfigで無線LANのインターフェース名を知りましょう。あとは sudo ifconfig [interface] up sudo service network-manager r…

ubuntuで「画面だけ」オフにしたい

ノートpcにubuntuを入れているのだけど, 開いた状態のまま,サスペンドせずに画面だけオフにするには以下のコマンドを打てばいい $ xset dpms force standby これで強制的にスタンバイ状態にできる. もしノートpcを閉じてもサスペンドしたくなければ以下を参…

utroam-1xにubuntuから接続する

公式にページがなかったので今後のために備忘録を記します。 Windows7の接続方式と割と似ているのかな... utroam-1xを選択して以下のwifiセキュリティの画面に飛んで以下のように設定するだけ簡単な各項目についての説明について wpa2-エンタープライズ 無線…

c++11で計算幾何

競プロでは平面幾何の問題が結構出題されます. c++ならば複素数を扱うcomplexを使ってもいいのだけどx,yではなくreal,imagになるのがなんとなく気持ちが悪いので自作してみました. computer geometry

c++11でモジュロ演算

競プロでモジュロ演算が面倒だったのでこれを簡単に扱えるクラスを作ってみた. 剰余類環と言われているやつで特に素数を法にするものは剰余体と呼ばれ以下のように積に対して逆元が定義できる. よく10^9+7で割った余りを求めさせたりするのでこれでmod周りの…

C++でのBM法の実装

文字列検索のアルゴリズムの中で比較的高速なものとして有名なBM法 文字列検索を行った時に役に立ったので書いたソースを載せるなお以下の文献を参考にさせていただきました. http://www.comp.cs.gunma-u.ac.jp/~koichi/ALG2/9beamerBM.pdf #include <bits/stdc++.h> using </bits/stdc++.h>…

codingame - Skynet: the Virus

Ambush Finish the 4th test of the "Skynet: the virus" puzzle with 50 or more remaining links and get a 100% score. (訳) 待ち伏せ "Skynet: the virus"の4番目のテストケースを50辺以上残して完了し,100%のスコアを獲得せよ. というAcheivementがあ…

codingame - Horse-racing Duals

bashをプログラミング言語と読んでいいのかよくわからないけどbash縛りのAchivementがあったので解いてみた. read N;s=($(for((i=0;i

codingame - Mayan Calculation

連想配列を使えば楽に解ける long long を使うことに注意 #include <bits/stdc++.h> #define REP(i,n) for(int i=0;i<n;i++) using namespace std; typedef long long ll; int main() { string s; ll l,h,ans,x[2]; cin>>l>>h; vector<string> a(20,""); map<string,ll> b; REP(i,l) { getline(cin,s); if(s==""){i--;continue;} REP(j,s.size())…</string,ll></string></n;i++)></bits/stdc++.h>

codingame - The Gift

貪欲的に小さい順にとけば良い. #include <bits/stdc++.h> #define REP(i,n) for(int i=0;i<n;i++) using namespace std; typedef long long ll; int main() { ll n,c; cin>>n>>c; vector<ll> a(n,0); REP(i,n) cin >> a[i]; string ans = ""; sort(a.begin(),a.end()); REP(i,n) { int t=(a[i]</ll></n;i++)></bits/stdc++.h>

codingame - Scrabble

割と面倒だった(225byte) y='';$><<(a=$<.to_a.map{|s|s.chomp.split y})[0,n=a.size-1].select{|v|a[n].inject(v*y){|s,b|s=s.sub(b,y)}==y}.max_by{|s|eval({qz:10,jx:8,k:5,fhvwy:4,bcmp:3,dg:2,'a-z'=>1}.inject(s*'+'){|a,v|a=a.gsub(/[#{v[0]}]/,v[1].…

codingame - Bender, a depressed robot

ループ判定が面倒 自分は同じ所を同じ向きで通った場合にループ判定を出すようにした. しかしこれだけでは最後のテストケースが落ちるので20回以上同じ所を同じ向きで通った場合判定を出すようにした. struct P { int x,y; P(){}; P(int x, int y): x(x), y(…

codingame - Telephone Numbers

例によってrubyで挑戦してみた(73byte) gets;p$<.inject([]){|a,s|[*1..s.size-1].each{|v|a<

codingame - Conway Sequence

気合の131byte l,r=$<.read.split;$><<[*2..r.to_i].inject([l.to_i]){|s|y=0;n=s[0];t=[];(s+['']).each{|v|(v==n)?(y+=1):(t+=[y,n];n=v;y=1)};s=t;}*' '

codingame - Network Cabling

x軸またはy軸に平行なメインケーブルから各家庭に枝を伸ばせば良い. 中央値は絶対偏差の和を最小にすることが知られているので, メインケーブルのy座標/x座標は中央値を用いると良さそう. 証明はこちらなど↓ 連続関数に関してはこちら↓ http://web.uvic.ca/~…

codingame - Teads Sponsored Contest

グラフの直径を求めれば良い 以下が参考になる Spaghetti Source - 木の直径前に解いたabc019のdouble sweepのアルゴリズムを思い出した. 計算量はO(E) この手の問題は多いのでそのうちグラフをクラス化して保存しておきたい. 直径,最小全域木等をg.diameter…

codingame - Indiana - Level 1

やるだけ int main() { int W; // number of columns. int H; // number of rows. cin >> W >> H; cin.ignore(); vector<vector<int>> T(W,vector<int>(H,0)); REP(i,H)REP(j,W) cin >> T[i][j]; int EX; // the coordinate along the X axis of the exit (not useful for thi</int></vector<int>…

codingame - The Paranoid Android

そこまで難しくはないが例外処理に手間取った. struct Info { int floor; int pos; Info(){}; Info(int f,int p):floor(f),pos(p){}; bool operator==(const Info &a) { return floor==a.floor && pos==a.pos; } }; const int SPACE = 0; const int BLOCK = …

codingame - Stock Exchange Losses

int main() { ll n; cin >> n; ll ans = 0, m = LLINF; vector<ll> a(n); REP(i,n) cin >> a[i]; DOWN(i,n-1,0) { m = min(a[i],m); ans = min(m-a[i],ans); } cout << ans << endl; return 0; }</ll>