円周率が3.05よりも多いことをプログラムで証明する

はじめに 「円周率が3.05よりも大きいことを証明せよ」という問題は、 東大入試で出題されたことがある良問として有名だと思います。 自分はそれのよくある解法などは知らないのですが、 プログラムに計算させることで示すことができそうだったのでやってみ…

2の平方根は分数で表すことができる?

はじめに 前回の記事では、数の種類として3つの数を紹介しました。 人類が考えた順番に、自然数、整数、有理数を紹介しました。 ここまでは比較的に具体的で理解しやすかったと思います。 この記事では少し抽象的な無理数を紹介します。 実生活で役に立つか…

データ構造 Part4「キュー」

はじめに 今までのリストとは少し違うデータ構造がキューとスタックです。 リストに制限を加えることで高速に動作するように設計されています。 リストは静的配列から「便利にしたい」という思いで進化したデータ構造でしたが、 キューやスタックは「制限が…

データ構造 Part3「連結リスト」

はじめに 前回の記事では動的配列について解説しました。 動的配列はリストという抽象データ構造を実装したものの1つでした。 リストを実装したもう1つのデータ構造に連結リストです。 静的配列を使わず素朴なアイデアで設計されています。 動的配列との比較…

データ構造 Part.2-2 「動的配列2」

はじめに 前回の記事では動的配列とリストについて解説をしました。 しかしまだ動的配列に関しては詳しく説明していないので、 この記事では、動的配列がどのようなアイデアで作られているかを説明します。 動的配列のアイデア 動的配列は、静的配列をつかっ…

データ構造 Part.2-1「動的配列とリスト」

はじめに この記事では動的配列について解説を始めます。 動的配列は静的配列を少し便利にしたようなものになっています。 また動的配列を説明するにあたってリストについても説明します。 リストは抽象データ構造の一つで、プログラマの方には インターフェ…

データ構造 Part1-2 「静的配列2」

はじめに 前回の記事では静的配列の基本的な情報について解説しました。 想定される操作とその計算量などです。 この記事では、もう少し踏み込んで静的配列の性質を確認していきます。 特定条件下での性能 配列をリストのように扱いたい場合、要素の挿入と削…

データ構造 Part.1-1 「静的配列」

静的配列 目次 静的配列とは 各プログラミング言語での静的配列 想定される操作とその計算時間 さいごに 静的配列とは 同じ型の要素を複数保持することができるデータ構造のこと。 添え字(index)と呼ばれる先頭要素からの番号で要素を参照することができる。…

データ構造 Part.0 「データ構造とは」

はじめに この記事では、データ構造の概要について説明いたします。 今後は色々なデータ構造について紹介していく予定です。 また、この記事の内容をまとめた動画をYoutubeに投稿しております。 よければそちらも確認してみてください。 youtu.be 目次 前提…

数の種類 #1(自然数、整数、有理数)

はじめに みなさんは生きていて色々な場面で数を扱う場面があると思います。 それは表計算ソフトの中であったり、学生だった頃の数学のノートの中であったり、様々だと思います。 例としていくつか書き出してみます。 1 2 3 0 -1 1.5 1/3 他にも色々思いつく…

オーダー記法 Part3 「計算量の導出」

概要 この記事では計算量の導出について紹介します。 オーダー記法シリーズの中でも最も面白く、知るべき内容だと思います。 この記事では特に線形探索と二分探索の計算量を導出します。 この2つの導出を見るだけでも、基本的なテクニックが詰まってますので…

オーダー記法 Part2 「オーダー記法と計算量の比較」

概要 この記事では「オーダー記法」と「計算量の比較」について説明します。 また、記事の内容は動画でも紹介していますので、よければ確認してください。 youtu.be オーダー記法とは オーダー記法は計算量を数学的に記述する方法です。 まずは具体例から紹…

オーダー記法 Part1 計算量の種類

概要 ここでのオーダー記法は、アルゴリズムの性能(計算量)を評価するために使うものとします。 特に、あるアルゴリズムで問題を解く(計算する)際にかかる時間などの性能を表現できます。 ここからは、次のキーワードがでてきます。 もしまだご存知ない…

「マンデルブロ集合を鑑賞するツールを作成した」開発日記

マンデルブロ集合を鑑賞するツールを作成した youtu.be 先日動画を公開しました。 マンデルブロ集合を鑑賞するツールを作成しました。 Unity や three.jsなどは使わずに、ゲームエンジン部分も自作です。 よかったら上記の動画も確認してみてください。 また…

「機械式時計をUnityで再現した」開発日記

機械式時計をUnityで再現した youtu.be 先日動画を公開しました。 シンプル目な機械式時計の内部にある、歯車と針の動きを再現しました。 歯車の動きの連鎖と、歯車の形の3Dモデルを自分で開発しました。 よかったら上記の動画の方も確認してみてください。 …

二分探索と線形探索のアルゴリズム

概要 二分探索と線形探索は、リスト探索という問題を解く方法(アルゴリズム)の一種。 リスト探索という問題は、基本的で理解しやすい問題です。 そのため、アルゴリズムの重要性を学ぶのに最適だと思います。 プログラマーでもアルゴリズムを意識する機会…

TypeScriptとWebGLでポリゴンを描画する方法

目次 はじめに webpack + TypeScriptのプロジェクトを作成する シェーダのソースコードをimportする 実際にポリゴンを描画する さいごに 1. はじめに この記事では、WebGLでポリゴンを描画する方法を紹介します。 言語はTypeScriptを使います。 わざわざJava…

いまさら聞けないJavaScriptのPromiseを丁寧に解説

目次 はじめに Promiseとは Promiseを使う 3.1. 基本的な使い方(then, catch) 3.2. 実行される順番に注意 3.3. then, catchが両方実行されることもある Promiseを作る 4.1. Promise.resolve(), Promise.reject() 4.2. new Promise() まとめ 1. はじめに こ…

go言語で、リクエストヘッダーを表示するだけのサーバを開発した

目次 はじめに go言語でサーバを実装する方法 リクエストのパスを取得する方法 リクエストのヘッダを取得する方法 動作確認 さいごに 1. はじめに たまに「このリクエストってどんなヘッダが付いてるんだ?」っておもう時ありませんか? 自分の場合はすでに…

標準正規分布から(いい感じの)乱数をとってみた

目次 はじめに 一様分布と標準正規分布 ボックス=ミュラー法 実装してみた まとめ 1. はじめに (擬似)乱数といえば、みなさん一度は使ったことがあると思います。 各言語で準備されている関数などを使ってランダムな値を取得できます。 特によくあるのは0以…

単純パーセプトロンの重み修正量を導出する

目次 はじめに 変数や関数の定義 パーセプトロンの性能を計測する 最小値問題 勾配降下法 修正量の計算 まとめ はじめに 以前の記事で単純パーセプトロンの学習について、 下記のような計算を行うとご説明しました。 $$ w_j \leftarrow w_j - \alpha\sum_{i=…

最もシンプルな「学習するプログラム」を実装してみた

目次 最もシンプルな「学習するプログラム」 空前のAIブームと単純パーセプトロン ニューロン(神経細胞) 単純パーセプトロン パーセプトロンの出力を計算する AND演算ができるパーセプトロンを考える パーセプトロンの学習 実装 実際に学習させる まとめ …

Go言語でバイナリファイルを読み込む

目次 概要 準備 ソースコード 解説 ハマったところ まとめ 1. 概要 ちょっとしたバイナリファイルを読み込たかったので、 Go言語で実装してみたソースコードを備忘録としてのこしておきます。 ソースコードは下記にあります。 github.com 2. 準備 プロジェク…

Nuxt.js + Typescript + Vuetify の空プロジェクトを作成しました

目次 概要 プロジェクトの作り方 さいごに 1. 概要 Webで新しいプロジェクトを作るときって意外と大変だったりしますよね。 あの設定ファイルってどうするんだっけ。 あのライブラリはどこで有効にできるんだっけ。 そんなことに悩むのが面倒だったので、基…

Nuxt.js と Typescript で Store の変更と読み出し

目次 概要 準備 Storeの変更 Storeの読み出し まとめ 1. 概要 最近Web開発はNuxt.js + Typescriptの組み合わせが気に入っています。 せっかく気に入っているので、この組み合わせでの開発ノウハウを記載しておきます。 今回は基礎の基礎、Storeの変更と読み…

Unity でマウスイベントを扱いやすくするクラスを実装する

目次 この記事の目的 概要 マウスイベントを扱いやすくする 実際に使ってみる まとめ 1. この記事の目的 この記事ではUnityでマウスイベントを扱いやすくする方法を紹介します。 ことの発端は、自分でマウス操作を実装しようとした際に Input クラスを使っ…

フィボナッチ数列の第k項をO(log n)で計算しようとしたけど難しかった話

目次 フィボナッチ数列 ビネの公式 計算誤差について 計算の工夫 最終的な計算時間 サンプルコード 1. フィボナッチ数列 フィボナッチ数列は、イタリアの数学者レオナルド・フィボナッチの名前をとって名付けられた数列です。 数列の決まりは、「ある項は、1…

なぜ数を0で割る「ゼロ除算」はダメなのか

目次 この記事の目的 1を0以外で割るといくつになるのか 結論 1/0 が無限になる時がある 1. この記事の目的 プログラミングをしていると、やってはいけないと言われる「ゼロ除算」ってありますよね。 実際にゼロ除算を行うと、例外が吐かれたり、無限などの…

フィボナッチ数列は再帰で実装するな

目次 この記事の目的 フィボナッチ数列 再帰で実装 ループで実装 計算時間の違い まとめ 1. この記事の目的 プログラミング経験者って、なんだかんだでフィボナッチ数列を実装したことがありますよね。 みなさんはどのように実装しましたか?覚えてらっしゃ…

【Docker】同じソースコードを複数バージョンのJDKで実行する方法

目次 この記事の目的 ソースコードを準備する Dockerコンテナ上でコンパイルと実行 複数バージョンのJDKで実行 まとめ 1. この記事の目的 同じソースコードを複数バージョンのJDKで実行する方法を紹介します。 これができると、JDKごとにパフォーマンス測定…