こんばんは。RockinWoolです。 今日から適当にミカノス本を進めていこうと思います。 ちなみに、昨日の記事を投稿しようとしたら、見知らぬエラーが大量に出てきたためこの記事に習って解決しました。なお、これ以外にも他のテーマをgit submoduleに加えていたようで、こちらの記事を参考にsubmoduleを初期化して対応いたしました。
mikanosその1(p28~)
ネタバレしないように感動した内容を語っていくと
- 実行可能ファイル = CPUが実行可能な機械語を含んだファイル
- CPUで扱う数値は「機械語命令」か「それ以外」かである
- 機械語命令 + データ + メタデータ(ファイルのフォーマットや大きさ、どんなCPU向けの機械語が入っているかなどの付加情報)
その後AWSにバイナリファイルチェック用環境を整えて行きました。 なお、ubutu20.04のイメージを使用しています。
git clone https://github.com/uchan-nos/mikanos-build.git osbook
Atcoder開始A問題
作業中にAtcoderが始まってしまったので、こちらも挑戦。 ところが、この作業中にローカルのWindowsPCにg++等が存在しないことが判明! 仕方がないので脳内コンパイラでA問題を解いてみました(AC)
#include <iostream>
int main(){
double X;
std::cin >> X;
X = int(X+0.5);
std::cout << X <<std::endl;
}
四捨五入の関数とか知らなかったので愚直に実装。intにキャストすると切り捨てられることを想定して前もって0.5足しておけば良いのでは?となりAC。
AtcoderB問題
B問題は手元にpythonの実行環境ならばあったのでpyuthonで実装。 pythonならば同じ文字列でもset型でキャストしてしまえば統合されるので、簡単に実装できた。
#!/usr/bin/env python3
# 標準入力の方法については下記サイトを参考
# https://qiita.com/zenrshon/items/c4f3849552348b3dbe67
# 最初に数列の個数を取得
N = int(input())
# 数列を(文字列として)N個分だけ取得
base_array = [input().replace(" ","-") for l in range(N)]
# set型にキャストして数列内の数字の種類を返すようにする
base_array = set(base_array)
print(len(base_array))
ということで、今回はAtcoderのB問題まで溶けたところで終わりにします。 なお、次回はAWSにchrome remote desktop入れてQemuを動作させるところまで頑張ろうと思います。 ご閲覧ありがとうございます。