サブロウ丸

主にプログラミングと数学

c++

master mind by c++; part15 MPIによるプロセス並列

今回やること MPI install 超簡単なサンプル実装 データ集約(MPI_Gather)の例 逐次的なデータ送信の例 MPIの組み込み CMake Dockerfile run.cpp Github-action (CMake) 実験 machine A まとめ コード 参考 他の記事 今回やること MPIのサンプルコードの紹介,…

master mind by c++; part14 openMP

今回やること openMP 並列化 CMake find_package target_compile_options target_compile_definitions 実験 mac book machine A まとめ コード 参考 他の記事 今回やること openMPを用いた並列化 openMP 言わずと知れた, スレッド並列ツール. FortranとC/C++…

master mind by c++; part13 minmax, exp_minmax, entropy policy

今回やること 推論コードの決定 ランダムサンプリング minmax exp_minmax entropy 実装 推論手数の実験 colors 4 pins 4 colors 5 pins 4 colors 6 pins 4 colors 4 pins 5 colors 5 pins 5 まとめ コード 参考 他の記事 今回やること 新しい推論コード取得…

master mind by c++; part12 coverage test

今回やること カバレッジテスト カバレッジ(coverage)テストとは コンパイルオプション add_custom_target 実行 まとめ コード 参考 他の記事 今回やること カバレッジテスト カバレッジテスト カバレッジ(coverage)テストとは テスト関数が全ての関数,if分…

master mind by c++; part11 namespace

今回やること 背景 実験 まとめ コード 他の記事 今回やること namespaceの導入 背景 $ valgrind --tool=callgrind --callgrind-out-file=./callgrind.out ./bin/mastermind 4 4 --test $ gprof2dot -f callgrind ./callgrind.out | dot -Tpdf -o report.pdf…

master mind by c++; part10 smart pointer

今回やること コードのポインタ管理 smart pointerの導入 実験 まとめ コード 参考 他の記事 今回やること コードをポインタで管理 smart_pointerの導入 コードのポインタ管理 現状のプログラムではコード(Code)オブジェクトの生成と解放を実行中に多数行っ…

master mind by c++; part9 temaplate

今回やること template 実験 まとめ コード 他の記事 今回やること templateの導入, 及び color, hit-blow のデータ型の変更 template 関数の引数や返り値、またクラス属性の型を宣言時に可変にできる機能です. ピンの色とhit-blowのデータ型を今まではどち…

master mind by c++; part8 measure( valgrind, gdb )

今回やること 実行速度計測について 計測コード 高速化オプションの追加 プロファイル Valgrind gprof Cmake, Debug, Release まとめ コード 参考 他の記事 今回やること プログラムの実行速度計測の追加 プログラムのプロファイリング( valgrind & gdb ) 実…

master mind by c++; part7 code generator

今日やること コード集合の列挙 例 実装 テストの作成 まとめ コード 参考 他の記事 今日やること ピンの色数, ピンの数, ピンの色の重複ありなしが与えられた時に 考えられるコード(ピンの配列)を全列挙する関数を作成する. これがあれば, どのようなピンの…

master mind by c++; part6 argument parser

今回やること argparse install プログラムへの反映 まとめ コード 参考 他の記事 今回やること コマンドライン引数を受け取る部分(argument parser)の実装. argparse google検索で一番上に出てきたので, 使ってみる. install git clone でコードをダウンロ…

master mind by c++; part5 Docker

今回やること Dockerとは Dockerの導入 Docker install Dockerfileの作成 Dockerイメージの作成と起動 root以外のuserで環境を構築したい場合 Github action - docker 対処したエラーたち apt install -y cmake pthread_getspecific まとめ コード 参考 他の…

master mind by c++; part 4 googletest

今回やること googletestとは googletestの導入 現状のディレクトリ構成 googletestのインストール テストプログラム ビルド googletestをインストールしている場合 googletestをインストールしていない場合 実行 ctest GitHub action の修正 まとめ コード …

master mind by c++; part 3 CMake

今回やること Cmakeとは CMake フォルダ構成 CMakeLists.txtの作成 ビルド バイナリ生成場所の指定 GitHub action - CMake テスト まとめ コード 参考 他の記事 今回やること CMakeの導入 github actionでのcmakeテストの追加 Cmakeとは Makeファイルなどの…

master mind by c++; part2 auto & decltype

今回やること auto 関数の返り値 コンテナの部分for文 関数の返り値の型 decltype まとめ コード 参考 他の記事 今回やること 型推論autoの導入 decltypeの導入 auto autoはc++11から導入された型推論機能で, c++14, c++17ではその適用範囲が増えました. c++…

master mind by c++; part 1 基盤プログラム

これから c++ プロジェクト実装の勉強がてら, master mind というゲームを解くプログラムを作成する様子を数回に分けてまとめたいと思います. 目標はなるべく標準で, かつモダンな実装です. これからの全体的な流れ master mind ( マスターマインド ) とは …

[ Eigen ] long double 型 のMatrix, Vectorの宣言

Eigen とは C++ の行列演算ライブラリ[1] です. 暗黒通信団による Eigen メモ [2]. これさえ読めば基本機能は大体使えます. MatrixXdや, MatrixXi, VectorXd を使えば, 要素がdoubleやint型の行列やベクトルが扱えます ([2] を参照してください)が, Eigenは…