サブロウ丸

Sabrou-mal サブロウ丸

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

mastermind

Master mind in Rust; part 8 logging

今回やること log コード 参考 関連 前の記事: Master mind in Rust; part 6 ファイル分割とモジュール - Sabrou-mal サブロウ丸 次の記事: TBA 今回やること ログを出力する log Rustでは標準ライブラリにログを出力するためのlogというライブラリがあリま…

Master mind in Rust; part 7 HashMapとそれを用いたmin max policyの追加

今回やること minmax policy HashMap argument parserの更新 コード 参考 関連 前の記事: Master mind in Rust; part 6 ファイル分割とモジュール - Sabrou-mal サブロウ丸 次の記事: Master mind in Rust; part 8 logging - Sabrou-mal サブロウ丸 今回やる…

Master mind in Rust; part 6 ファイル分割とモジュール

今回やること モジュール化 コード 参考 関連 前の記事: master mind by rust; part 5 単体テスト - Sabrou-mal サブロウ丸 次の記事: master mind by rust; part 7 HashMapとそれを用いたmin max policyの追加 - Sabrou-mal サブロウ丸 今回やること ファイ…

Master mind in Rust; part 5 単体テスト

今回やること 単体テスト 関数に#[test]属性をつける #[cfg(test)]属性をつけたモジュールを作る コード 参考 関連 前の記事: Master mind in Rust; part 4 argument parser - Sabrou-mal サブロウ丸 次の記事: Master mind in Rust; part 6 ファイル分割と…

Master mind in Rust; part 4 argument parser

今回やること Clap Cargo.tomlの変更 parserの作成 コード列挙の作成 重複がない場合 重複がある場合 コード 参考 関連 前の記事: Master mind in Rust; part 3 型エイリアス - Sabrou-mal サブロウ丸 次の記事: master mind by rust; part 5 単体テスト - S…

Master mind in Rust; part 3 型エイリアス

今回やること 型エイリアス コード 関連 関連 前の記事: Master mind in Rust; part 2 Cargoビルドツール - Sabrou-mal サブロウ丸 次の記事: Master mind in Rust; part 4 argument parser - Sabrou-mal サブロウ丸 今回やること 型エイリアスを使って、コ…

Master mind in Rust; part 1

これからRustでmaster mindというボードゲームの実装をしていきます。以前C++で実装したもののRust版ですね。なるべく標準でシンプルな実装を目指します。C++版はこちら↓↓ master mind ( マスターマインド ) とは 実装 用語 全体の流れ 全体のコード policy …

master mind by C++ まとめ

レポジトリ 記事一覧

pybind11を用いた高速化 (master_mind)

pybind11を用いてPythonプロジェクトの一部をc++コードで置き換えて高速化を試みます。 本稿では以前作成したmaster mindのプロジェクトを題材にします。 作業前のコード 本稿で出てくる用語(ほとんど出さないように気をつけましたが)はmaster mind by 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 profiling( 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 ( マスターマインド ) とは …