ホロライブ換字暗号のこと好きすぎ?!

マドロミはかなたそとトワさんが歌う楽曲である.この楽曲中には暗号らしきものが含まれており,作詞者の傾向から換字式暗号と推定される.本記事ではマドロミに含まれる暗号文の完全解読を行う.

C++で標数2の体

本記事では標数2の体をC++で定義する際の要点について概説する.

羊さんの換字式暗号

角巻わためさんのオリジナル曲『ゼロの足跡』には単一換字式暗号で暗号化された文が含まれている.単一換字式暗号では平文と暗号文の文字は一対一で対応する.また,ある言語で書かれた文章に含まれる文字の頻度は,どの十分長い文章でも一定になるため,単…

【記号摂動】幾何計算で退化に対処したい

幾何学計算は、誤差が全くないような整数同士の演算であっても特定の状況で正しく計算ができなくなることで私のような一般学生を困らせる。 二次元の凸包を作るときには三角形の符号付面積が0になる状況、二次元のドロネー図を得るときには三角形の外接円周…

C++で行列のなんやかんやを実装した話

これは最近実装したやつの解説です。主に自分が忘れたときのための備忘録として書いていますから他の人が読むにはあんまり親切ではないかもしれません。 静的なのと動的なの C++のテンプレートはとても強力なので大抵のことはテンプレートで解決できる。行列…

定数回のループを高速化する with fold expression

久しぶりにネタになりそうなことが見つかったのだ!更新してないからか、読む人はめちゃめちゃ少ないのだけれど、ありがたいことに0人ではないので、せっかく見つかったネタを自分だけの知見とせずにアウトプットしたいと思う。 またC++の話だけれど、ライブ…

久しぶりに大学の課題で本気を出した。

情報工学科で出る定番の課題といえば、ソートアルゴリズムの実装だ (多分) (他の大学を知らない) 。 普通の人間は愚直に実行時に配列などをソートしてしまうかもしれない。私も高校時代にこの課題が出ていたら普通に実行時にソートして喜んでいただろう。 だ…

C++のrange-based forで複数のコンテナをイテレーションする

C++は健康に良い。C++11で導入されたrange-based forが腱鞘炎の治療に役立つことは世界のどこに行っても変わらない普遍的な事実だ。だが、関節に優しいC++のrange-based forでも出来ないことがある。複数のコンテナのイテレーションだ。これだけは素直にwhil…

大学生でもわかる!双方向連結リストの実装!

Twitterを見る限り大学2年では双方向リストの実装を課題として課されることが多いようだ。もちろん弊学もその課題がある。ご学友がイテレータやリストへの要素の削除などで苦労していた。別に難しいことはないのでリストの実装を書く。 リストというデータ構…

大学でフィボナッチ数列の第N項を求める課題が出たが再帰は遅いので速くする

フィボナッチ数列はループで書くより再帰で書いた方が書きやすい。ループではプログラマーが意識して変数を3つほど宣言する必要があるが、再帰で書けば変数は要らない。ただ、再帰には以下のような極めて致命的な問題がある。 まず再帰は関数呼び出しなので…

イテレータを作る回

STLのコンテナを操作するための共通の手段としてiteratorというものがある。とても便利なこのiteratorを自分で実装したことはあるだろうか。iteratorの要件は規格書に書いてあるので、それさえ満たせばどんなイテレータもiteratorを名乗っていいことになる。…

大学でC++の演習が始まったがムーブには触れないようなので触れさせる

弊学ではC++の演習が始まったが演習では右辺値参照とかムーブとかは全く触れない。ムーブがないC++はC++ではなくBetter Cというのはさすがに言い過ぎだが (C++03以前のC++がC++ではなくなってしまうため)、ムーブがないC++を書くならわざわざ大学でC++を学ぶ…

大学でC++の演習が始まったが例外には触れないようなので触れさせる

例外の構文 例外を投げる 例外をキャッチする 例外の基本 診断のためのライブラリ 例外仕様 古の方法 (C++17で削除) クールでスマートな最新の方法 例外を投げるべきときと投げるべきでないとき 例外は本当に便利な機能だ。戻り値でエラーを通知するC的な関…

大学でC++の演習が始まったがテンプレートには触れないようなので触れさせる

テンプレートの文法 テンプレートの初歩 テンプレートの特殊化 標準ライブラリみたいなかっこいいメタ関数を作る is_same 二つの型が加算可能か確かめる 型制約 嫌な奴は定義してやらない方法 std::enable_ifを使う方法 テンプレートで遊ぼう。(FizzBuzz) あ…

C++でスライス(2回目)

C++ではカンマ演算子をオーバーロードできる。前の記事では残念ながらC++に負けてしまったが、今度こそC++でスライスすべくカンマ演算子をオーバーロードしたプロキシクラスを書いてC++に打ち勝つことにする。 前に作った失敗作はこいつだ。ここにあるslicea…

どうせ誰も見てないので柄でもないことをやっているということを話す。

はてブはアクセス解析でどれくらいアクセスがあるのか見ることができる。なんと私のブログはほぼ誰も見ていない!!!!まあ別に広く見てほしくて書いているわけではないので全く問題ない。 どうせ誰も見てないので普段の私からは想像もつかないような変なこ…

tokenizerとcsvパーサを作った。

いずれ作らなければならないと思っていたものをついに作った。私の大学では2年でC++をやる。C++erの私としては非常にうれしいことである。ただ、大学のPCはBoostが入らない*1ので、自分でBoostのような汎用ライブラリを作る以外に手はない。 知り合いの先輩…

C++でスライスみたいなやつ

Twitterを見ているとTLの者がよく「C++でスライスしてぇ~~~」と言っている。私はたまたまC++が書けるので、なんとなくスライスのようなものを実装してみようと思う。 まずスライスの文法からおさらいする。RustやGoではスライスが言語機能なのでかなり簡…

C++でforループを短く書く

#define REP(i, n) for(unsigned i = 0; i < (n); ++i)みたいなマクロはとても有名だ。N回のループをとても短く書くことができる。だが、これはあまりにもC++的ではない。nにsignedな変数を渡した瞬間コンパイラが警告を出すし.....まあとにかくマクロを使わ…