イナズマの日記

こんにちは。

IDDFS(反復深化深さ優先探索)のオーバーヘッドが十分小さくなる証明的ななにか

ちゃんと説明してるところが見つからなかったので公開します. 大学の課題レポートそのままなので適当ですし(は?)いくつかの用語を説明なしに使ってしまっていますが,気が向いたらもっと真面目に書きます.

間違ってるところあったらご指摘お願いします. drive.google.com

coc.nvimでJuliaのLanguage Serverが動かなかったので応急処置のメモ

LanguageServer, SymbolServer, StaticLintのVersionが最新だと動かないっぽい?

Issueを探してもなかったが,そもそもnvim x coc.nvim x Juliaとかいう組み合わせがドマイナーすぎて誰も気づいていない可能性もあるけど,流石に僕の環境か検索の仕方が悪い気がしてきたな.

応急処置なので,ベストな方法ではないと思いますが,

[2b0e0bc5] LanguageServer v1.0.0
[b3cc710f] StaticLint v1.0.2
[cf896787] SymbolServer v1.0.1

にすると一応動きます.おそらくLanguageServerInstance関数の引数がこのVersionと今(v3くらい)で変わってる気がするけどどうなんだろう.

大学で履修した科目について振り返る

こんにちは. 晴れて卒業に必要な講義を全て履修し終えたので,各科目について振り返ります.というのは嘘で,タスクからの現実逃避が本当の目的です. ちなみに東京O科大学というところに通っています.よく間違われますが,東京工業大学ではありません.

自分語り

センター入試で入った.センターで高得点の2科目で受験できるらしい.ウケる. プログラミングは大学入ってから始めました.

1年前期

心理学

なんか男女差別をしたとかで炎上してた科目.知らんけど. 今は講師が変わってるので大丈夫そう.

人文科目としてはレポートが多くて最悪だった.

英語SLI

6回講義休んだのに単位くれてありがとう.

このあたりから任意の講義の出席を舐めてかかるようになる.

英語RWI

マジで記憶にない SLIとの違いは不明.

情報リテラシー演習

コマンドラインemacsLaTeXの使い方を勉強した. コマンドラインが黒い画面に白い文字という当時想像していた「プログラミング」をちょうど表していて,かなり好きだった. emacsks全然使わなかった.1 LaTeXも数式をきれいに書けてエモさを感じていた.

この講義とICPCが重なっていた,この講義が楽しすぎたので欠席したけど,講義がほとんど自由時間(講義なしでLaTeXの演習をした)で終わったので出ればよかったと後悔.余談ですが,早生まれで浪人をしていない,かつ大学院への進学を考えている場合,B1でのICPCは出なくても良いと思います.何故かはめんどくさいので書きません.直接聞いてください…

ところで,LaTeXをやっているころ当時の1年生の多くが「Wordがあるからこんなの必要ない」みたいな発言をしてたけど,そういう人たちとは自然と縁が切れてた.卒業論文執筆時期が楽しみですね^^

数学概論

隣接行列とかやってた気がする.この先生,あらゆる学年から人気ないけど,普通にいい先生なんだよな.

テストで4んだと思ったら何故かSが降ってきて,このあたりから任意のテストを舐めてかかるようになる.

化学の世界

テストがないので神

スポーツ実技I

卓球やった.温泉で楽しむくらいにはできるようになった気がする.

フレッシャーズゼミI

記憶にないと話題に

線形代数I

記憶にないと話題に(最悪) 今も勉強中です!!(最悪)

コンピュータサイエンス概論

なにこれ

コンピュータ概論I

2進数の計算とかをしたんじゃないかな. テストかなりできた気がしたのにAで切れ散らかしてた.

プログラミング基礎I

Java.関数定義あたりまでやった. プログラミング?楽勝!wみたいな気持ちになり相当イキる.

プログラミング実験

Processing. 木曜日だったんだけど,クラスの人間が月曜の人間の答えを毎週丸写ししてきて*ねみたいな気持ちになる. プライドの高い僕は周りのksが早々と帰るのを見て,殺意を抱えながらコーディングすることになる.

1年後期

芸術論

睡眠とTwitterの時間

英語SLII

なんだっけ

英語RWII

感想なし

情報リテラシー

鍵交換みたいなのがあまりに天才だなという感想を抱いていて,他の部分の記憶がない.

物理の世界

落書きの時間

スポーツ実技II

卓球やった.スポーツ実技Iと同じコースでも問題ないというのは実はあまり知られてないのでは.

フレッシャーズゼミII

いつの間にか隣の席の人と先生が喧嘩してた.詳しくは知らない

解析学基礎

数III

線形代数II

線形代数Iに同じ

コンピュータ概論II

なにこれ

プログラミング基礎II

クラスとかポリモーフィズムとかやって,「もしかしてプログラミングってちょっとむずかしいのか」みたいな気持ちになる.

情報と社会分析の基礎

エクセル. 後期の前半のやつ

通信の基礎

上とコンビ組んでるやつ.後期の後半のやつ

2年前期

英語インテンシブI

なんだっけ

生物の世界

なんだっけ2

キャリアデザインI

プレゼンの練習

離散数学

今受ければおもしろい気がする.当時はそんなに興味なかった. グラフ理論で,ダイクストラとか彩色問題を扱う.

論理回路

AND!OR!NOT!

情報セキュリティ

確か全レポートに考察を入れ忘れて初めて単位を落としかける. 同級生に助けてもらいました.

この講義のレポート,何故か掛け算の筆算の途中経過をレポートに入れなきゃならなくて,完全に学生を舐めてる. ほかは良かった

情報ネットワーク概論

ネットワーク嫌いです

応用プログラミングI

Javaでデータ構造(MapとかListとか初歩的なやつ)を使う方法を教えてくれる.プロ基礎IIより簡単

応用プログラミングIII

この辺りで今までのプログラミングは全部ksだったんだなと感じるようになる.

画像情報処理

画像の情報を処理します

コンピュータ・サイエンス基礎実験I テーマB

希望コースのアンケートを間違える.う笑

2年後期

宗教学

どなどな

コミュニケーション論

裏技ですが,前の方に座ると指名されないで済みます.

法学

英語インテンシブII

キャリアデザインII

プレゼンの練習II

コンピュータアーキテクチャ

なんだっけこれ

データ構造とアルゴリズムの基礎

Javaでデータ構造とかアルゴリズムを書く.記憶にあるのはにぶたんとHeap.嘘,Heap書いったっけ? 最終回のページランクアルゴリズムの話が面白かった気がする.

データベース技法入門

SQL書いた.構文はもう全部忘れました笑(最悪)

言語プロセッサ

後述する「実践的プログラミング」を受講すると理解が深まる気がする.

並列・分散処理

OpenMPもぐもぐ

コンピュータ・サイエンス基礎実験I テーマA

LaTeXで書いただけで,先生にきれいなレポートとして紹介されてとても気持ちよかった. LaTeX最高!世界一好きなテキストベースの組版処理システムです.

3年前期

英語インテンシブIII

10回くらい欠席しても単位くれてありがとう

キャリアデザインIII

「起立!気をつけ!よろしくお願いします!!」を毎授業する変わった講義

実践的ソフトウェア開発

先生が「全員にA判定あげます」と言っていたのにBが降ってきたのは今でも忘れてません.

マイクロプロセッサ

ん,なにこれ

コンピュータグラフィックス

4回まで欠席して良さそうだったので4回欠席したのですが,単位は来ませんでした.

人工知能

出席は一切見ない講義だと思ったら見てました.落単です!w

プロジェクト実習I

機械学習

3年後期

英語インテンシブIV

8回くらい欠席しても単位くれてありがとう.

キャリアデザインIV

価値創造演習

何故か1年後期の通信の基礎が取れて無くて卒業課題着手が怪しくなってた. 今年からカリキュラム変更で通信の基礎が消されてたので1年のこの講義を受けました(最悪)

出席数危うかったけど,ICPC Yokohama Regionalで欠席することを許してくれたはとてもありがたかったです.

実践的プログラミング

JavaでBasic言語みたいなインタプリタを実装する講義.適当な構文を実装できると残りの構文は「やるだけ」になるのですが,残りの構文はやらなくてもAくれます(これは講義内で公言されました)

インターネットアプリケーション

何故か1回だけグラフ理論をやる回があった.気がする

モデル記述とその応用

グループで開発をするのですが,だいたい先輩にやっていただきました…

センサーエレクトロニクス

数式のない物理と化学

プロジェクト実習II

機械学習

創成課題

研究テーマを決めます.

終わり

大学の講義全部終わったと考えるとまぁまぁ感慨深い


  1. ちなみにエディタはemacs→subl→atomvimvscodevimで遷移していきました.

蟻本のFord-Fulkerson法のedge構造体のrevについて

蟻本p190のコードのedge構造体はto, cap. revと3つの値を持つが,revの意味がどうしてもわからかったのでメモ.

add_edge関数にて,

G[from].push_back((edge){to, cap, G[to].size()});

とある.これは,最後にtoのサイズを足すことで,逆辺がどこに保持されているかをあとで逆算するための値. 続く行も同じ.サイズを1小さくしてるのは,前行のpush_backにてサイズが1個増えてしまってるから.逆辺は始めキャパ0なのでfrom, 0, ~~~size()-1のような初期化になってる

多分,この値が無くても逆辺用の別の2次元vectorを持てば実装できる.気がする.

JuliaでUnion-findしたくなったら

「Julia Unionfind」で調べてもライブラリが出てきませんが、

github.com

にDisjoint set という名前でUnionfindがあるので使うと良いです。

僕はこのライブラリを発見できなくて自分で書いていました(まぁUnionfindくらいだったらそれでもいいけど) ちなみに自分はpriority queueが使いたくて調べてたら発見することができました。

Juliaでプログレスバーが使いたくなったら

github.com

今までこれを使ってきたんですけど、長いループを回すと途中で出力が止まってしまうことに気づいたので、どうにかできないかと色々検索してたら

github.com

を知りました。 2020年2月28日現在ではどちらも最後のコミットが20日ほど前なので、おそらくどちらも開発が続いているとは思います…。

Juliaでプログレスバーを使いたいときは各々どちらが自分に適しているか軽く検討すると良いと思いますが、悩んだら後者を使うと良いと思います。Star数的に。