remote(ssh) で status bar に git の branch 名が表示されない
解決
以下で解決しました
Remote に Shell Integration をインストールする
メニューから
iTerm2 > Install Shell Integration
.bashrc
や.zshrc
に以下を追記する
function iterm2_print_user_vars() {
it2git
}
参考
個人的おすすめ持ち帰り謎
今後は謎ログに追加していきます。
謎解きに慣れている方向け(新感覚)
- 謎解き無限迷宮
- メイキュートッパ
- 謎が先か答えが先か
- 謎が先か答えが先か【追加パック】
- mistake
- ECO
- タンブラッシュ!調査団とまよなかの森のマボロシアゲハ
- まほうのとけたおかしなクッキング
個人的おすすめその他ゲームリスト
- Factorio: オンライン協力プレイ可
- fault - milestone one: ノベルゲーム
- Rusted Warfare: RTS, 対戦
個人的おすすめアクションゲームリスト
気が向いたら画像付けたりします。
- Rabi-Ribi
- Terraria
- Iconoclasts
- Joggernauts
- Touhou Luna Nights
- Cuphead
- Celeste
- Evoland 2
- エリィのアクション
- Furi
- Katana ZERO
Evoland 2
これは何ゲーだ?アクションRPG?横スクロールアクション?縦スクロールアクション?シューティング?パズル?ストラテジー?格ゲー?音ゲー?カードゲーム?全部です。
面白いけど、英語つらいとつらいです。
Katana ZERO
個人的おすすめパズルゲームリスト
PVだけで十分ってやつはコメント付けてません。
気が向いたら画像付けたりします。
やらなきゃ損
Ittle Dew
パズルしかないゼルダって感じ。謎解き寄りのパズル。実績集めがかなり楽しい。一周目クリアまではチュートリアル。
あと地味に重要なことだけど、日本語化が上手く出来ていてセリフが面白い。
これ面白くても Ittle Dew 2 はただのアクションなのでおすすめしません。
Snakebird
Recursed
最序盤は簡単なんだけど途中から一気に難しくなって、頭壊れるギミックが現れる。
終盤はどのステージも重めで結構疲れるけど解けたときの達成感は大きい。
是非無料の DLC までプレイしてほしい。
オススメ
Bonfire Peaks
A Good Snowman Is Hard To Build
操作性はちょっと悪いかも。普通にパズルとしてまあまあだし、すごく大きな驚きがある。超むずいパズルはないけど。
Lara Croft Go
簡単なステージがしばらく続いてつらいし操作性悪いけど終盤になると面白いのでパズルやりたいけどやるパズルがねえって人にはおすすめ。
vscoqでproof viewが出ない
vscoqは3年前から更新されていない
vscoqのバージョンを1.32くらいに下げると動くが、自動更新まわりの設定とか使い分けるのとかめんどい
よく見ると↓に移動したらしいので入れてみたら動いた
Requirements
- node
Installation
git clone https://github.com/coq-community/vscoq.git cd vscoq npm i -g vsce make vsix code --install-extension client/vscoq-0.2.8.vsix
nまでの整数からm個ランダムに選ぶ
testlib.h を使ったgenerator用のライブラリです。
vector<long long> select(n, m)
から 要素をランダムに取り出します。戻り値はソートされています。
vector<long long> grouping(n, m, min_size=0)
個を グループにランダムに分けます。戻り値はグループサイズの配列です。
計算量はどちらも です。
配列 v から m 要素ランダムに取り出す関数だけ必要なら、これを使わずに shuffle して先頭 m 要素取り出す方法でも良いと思います。
n が小さいときもこれでいけます。
アルゴリズム
grouping は select を使っています。なので、select についてのみ解説します。
select(n, m) は 、すなわち半分以下しか select しない場合は、ランダムに選んでまだ選ばれていなかったら追加し、そうでなければまだ選ばれていないものが選ばれるまで再抽選し続けることを m 回繰り返します。少なくとも半分はまだ選ばれていないので、1回あたり抽選回数の期待値は2回以下となり、平均して が達成されます。
の場合、選ばないものを select(n, n-m) によって選びます。
// select S ⊆ {0, 1, ..., n-1} and |S| = m std::vector<long long> select(long long n, int m) { assert(m <= n); if (m * 50 <= n) { std::set<long long> used; std::vector<long long> res(m); for (int i = 0; i < m; ++i) { long long x; do { x = rnd.next(n); } while (used.count(x) > 0); res[i] = x; used.insert(x); } std::sort(std::begin(res), std::end(res)); return res; } if (m * 2 <= n) { std::vector<bool> used(n, false); std::vector<long long> res(m); for (int i = 0; i < m; ++i) { long long x; do { x = rnd.next(n); } while (used[x]); res[i] = x; used[x] = true; } std::sort(std::begin(res), std::end(res)); return res; } std::vector<long long> unselect = select(n, n-m); std::vector<long long> res; long long j = 0; for (int i = 0; i < n; ++i) { while (j < unselect.size() && unselect[j] < i) ++j; if (j < unselect.size() && unselect[j] == i) { continue; } res.push_back(i); } return res; } // select m elements from v template<class T> std::vector<T> select(const std::vector<T>& v, const long long m) { std::vector<long long> sel = select(v.size(), m); std::vector<T> res(m); for (int i = 0; i < m; ++i) { res[i] = v[sel[i]]; } std::sort(std::begin(res), std::end(res)); return res; } // res_1 + ... + res_gsz = n // res_1, ..., res_gsz >= min_size std::vector<long long> grouping(long long n, long long gsz, long long min_size=0) { assert(1 <= gsz && min_size * gsz <= n); n -= min_size * gsz; std::vector<long long> pos = select(n+gsz-1, gsz-1); pos.push_back(n+gsz-1); std::vector<long long> res(gsz); long long prv = -1; for (int i = 0; i < gsz; ++i) { res[i] = pos[i] - prv - 1 + min_size; prv = pos[i]; } return res; }