やかんです。

9月に入ってそろそろ1週間ということに戦慄します。

今日やったことについて

色々やったのと、お昼にお昼ご飯食べましたね。

第二食堂。

アルゴリズム(累積和)

これは米田くん(お会いしたことはないですが)の競技プログラミングの鉄則 ~アルゴリズム力と思考力を高める77の技術~ (Compass Booksシリーズ)55ページのコードに色々蛇足を加えたものです。

#include <iostream>
using namespace std;

int N,A[1000],S[1000];
int Q,L[1000],R[1000];

int main(){
  cout << "Nに値を入力してください" << endl;
  cin >> N;

  cout<< "Qに値を入力してください"<< endl;
  cin >> Q;

  for(int i=1;i<=N;i++) {
    cout <<"A["<<i<<"]に値を入力してください"<<endl;
    cin >> A[i];
  }
  for(int j=1; j<=Q; j++){
    cout << "L["<<j<<"]に値を入力してください"<<endl;
    cin >> L[j];

    cout <<"R["<<j<<"]に値を入力してください"<<endl;
    cin >>R[j];
  }

  S[0]=0;
  for(int i=1; i<=N; i++)S[i]=S[i-1]+A[i];

  for(int j=1;j<=Q;j++){
    cout << L[j]<<"日目から"<<R[j]<<"日目までの来場者数合計"<<endl;
    cout<<S[R[j]]-S[L[j]-1]<<endl;
  }

  return 0;
}

C++の勉強

ついに始めたんです。C++。2年ちょっと前にC言語を勉強したことがありますがもう記憶の遙彼方なので、初修C++になります。初歩的なことから勉強しました。

GPTとの問答

#include <iostream>って何。

#includeはプリプロセッサディレクティブといい、プリプロセッサにより処理される。つまり、コンパイルの最初に処理される。

イメージ的には、全然違うけど、jsでimport iostreamみたいに書くのと似ている。

using namespace std;って何。

名前空間の宣言。要は、「いちいちstdって書くのめんどくさいから、はしょっていいよ」という宣言。詳しめに述べると、「std名前空間に属するシンボルの使用に際して、名前空間を指定しなくてもよい」ということ。

配列について。

C++では、配列の長さがコンパイル時に固定される。

stream-based outputって何。

データの入出力が「ストリーム」という概念によって抽象化され、同じものとして扱われること。言い換えると、「コンソールからの入力にしろファイルからのデータ取得にしろ、データの入出力は共通の抽象概念で扱うこととする。その抽象概念のことを、ストリームと呼ぶこととする。」のような話。データについての共通のインターフェース的なイメージだろうか。

線型空間入門

GPTとの問答

  • 内積空間と計量線型空間は別物。
    • 全ての内積空間は計量線型空間であるが、その逆も正しいとは限らない。
  • 線型空間が同じでも、そこに定義された内積が異なれば、内積空間としては別物。
  • 内積は、一定の性質を満たす、2つのベクトルからスカラーを返す関数。
  • 空でない任意の内積空間において、必ず正規直交基底が存在するらし。すごいな。
  • 直交系が1次独立であることの証明、そもそも綺麗だし一次独立の復習にもなって大変に良い。
  • 勉強が(誤差程度にも)進むと、内積の性質である、同一のベクトルにおける内積の値が0以上の実数になり、これが0となるのは当該ベクトルがゼロベクトルであるときに限るという性質がとても大事なんだとわかる。

OS自作入門

GPTとの問答

今4章を読んでいるのだけど、複雑になってきた。まだ4章なのに。。

東大生やかんのブログ
やかん

全30章。

  • Makefileについて、ある程度使い方は理解したと思う。便利そうだから、普通に手元でC++を動かす時とかに使ってみようかな。
  • 復習になるけど、UFFIはBIOSの機能を後継したインターフェース。だから、BIOSとは別物の、BIOSよりすごいやつ的なイメージ。
  • 「OSから画面に描画する」系のはあまり興味湧かないなー、面白いけど。もっと、メモリの話とかの方が好きだな。
    • 画面描画系は飛ばすか。

エンジニア業務

jestでprismaをモックした。すごいなあ、便利すぎる。が、関数の何かで関数が呼ばれていたりするともう考えるのが大変。そもそも関数の設計の仕方なのかなあ。。

  • importとrequireについて。importはモジュールがプログラムの先頭で処理される。requireはモジュールがインラインで処理される。だから、相互に依存したモジュールを扱う場合はrequireの方が良かったりする。

ということで、今日の日記終了。最後までお読みいただきありがとうございます。