いものやま。

雑多な知識の寄せ集め

Ruby

「日付」と「日時」の話。

プログラミングで時間を扱おうとすると出てくるのが「日付」と「日時」。 これらに関してちょっと考えたことがあるので、その話をしてみたい。 「日付」と「日時」を構成するデータ 「日付(date)」を構成する要素を考えると「年(year)」「月(month)」…

Vivliostyleで技術同人誌を書いてみた。

技術書典14の新刊として『オブジェクト・ウォーズ』を書いた。 このとき、組版システムとしてVivliostyleを使ってみたので、その感想とか。 Vivliostyleとは 本を作ろうとすると文章のレイアウト(組版)が必要になって、そのために使われるのが組版システム…

簡単な組版ツールを作ってみた。

技術同人誌を書こうとすると必要となるのが組版。 これまではを使ってきたけど、いろいろとツラいので、もっと使いやすい組版システムが欲しいなと。 そんな想いを書いたのが技書博5で出した『TeXグッバイしたい本 vol.0』というコピー本。 この本自身、は使…

『Rubyで作る奇妙なプログラミング言語 ヘンな言語のつくりかた』を読んでみた。

先週、『自作プログラミング言語の集い』という勉強会に参加してみた。 そこで紹介されてた『Rubyで作る奇妙なプログラミング言語 ヘンな言語のつくりかた』という本が面白そうだったので、買って読んでみた。 Rubyで作る奇妙なプログラミング言語 ~ヘンな…

GCPのText-to-Speechでストレッチ音声を作ってみた。

きっかけ 一日中パソコンに向かってることが多いので、とにかく首と肩のコリが酷い。 おそらくそれが原因で頭痛がすることも。 さらに最近は外出も自粛してるので、腰や脚の方にもけっこうコリが出ていた。 一応、整体には通っているものの、対処療法という…

ABC166を復習してみた。

ABC164、ABC165の復習がまだできてないんだけどABC166は簡単めだったので先に復習した。 A. A?C 場合分けして出力するだけ。 s = gets.chomp puts (s == 'ABC') ? 'ARC' : 'ABC' B. Trick or Treat もらったお菓子の数を保持しておいて、最終的に0だった子の…

ABC163を復習してみた。

最近、AtCoderに参戦してる。 これはアルゴリズム実技検定(PAST)を受けてみようと思ったのがキッカケ。 PASTの結果は63点でギリギリ中級だったんだけど、やはり経験値が足りてないなぁという感じ。 なので、ほぼ毎週開かれてるAtCoder Beginner Contest (…

自動生成パスワードで暗号化ZIPを作るツールを作ってみた。

技術書のPDFを頒布するときによく使われるのが、以下の方法: PDFを暗号化されたZIPファイルにする 暗号化されたZIPファイルをBOOTHなどに置く ダウンロードカードなどでダウンロードURLと解凍するためのパスワードを伝える このとき便利な、パスワードを自…

階段昇降問題を解いてみた。

事の起こりは、以下のツイート: 長男がいきなり「3歩進んで2歩下がる」と言って、次男が「ってことは、1歩しか進まないよね」と言ったので、「15段の階段で毎日『3歩進んで2歩下がる』を繰り返したら、何日目に15段目に着くか?」と聞いてみた。予想通りに…

FXRubyをMacにインストールしてみた。

ちょっとRubyでGUIいじれないかなぁと思って、MacにFXRubyを入れてみたので、そのメモ。 FXRubyとは FXRubyとは、FOX toolkitというクロスプラットフォームなGUIツールキットの、Rubyバインディング。 クロスプラットフォームなGUIツールキットでRubyでも使…

『RubyでつくるRuby ゼロから学びなおすプログラミング言語入門』を読んでみた。

前から気になってた『RubyでつくるRuby』をこの前の技術書展5で購入して読んだので、その感想とか。 RubyでつくるRuby ゼロから学びなおすプログラミング言語入門作者: 遠藤侑介,hirekoke出版社/メーカー: ラムダノート発売日: 2017/03/31メディア: 単行本(…

ポーカーのオッズとアウツの話。(その2)

昨日はサイコロの賭けを題材にオッズの基本的な話をした。 今日はポーカー(テキサスホールデム)でのアウツの話と、オッズとの関係について。 アウツ 昨日はサイコロの賭けを題材にしていたけど、実際に考えたいのはポーカーでのオッズについて。 そのとき…

CodeIQ「ディビジョン・ナイン」問題を解いてみた。

CodeIQで出題された「ディビジョン・ナイン」問題。 https://codeiq.jp/q/2561 Rubyで解いてみたので、コードを公開してみる。 問題 問題は以下のとおり: 1から4の数字を使って 桁の整数を作ります。 このとき、9の倍数となるものを考えましょう。 例えば …

Curses for Ruby。(まとめ)

これまでの各記事は以下から。 インストールと動作確認 Curses for Ruby。(その1) - いものやま。 cursesライブラリの初期化・終了と、構成要素 Curses for Ruby。(その2) - いものやま。 ウィンドウの描画について Curses for Ruby。(その3) - いもの…

Curses for Ruby。(その6)

昨日は文字の入力について説明した。 基本的な内容はこれで終わりなんだけど、出力する文字を修飾したり、色をつけたい場合もあるかと思うので、今日は出力する文字の修飾について説明していく。 出力文字の修飾 出力する文字に修飾をつけたい場合、属性を指…

Curses for Ruby。(その5)

昨日はウィンドウの位置と移動について説明した。 今日は文字の入力について。 文字の入力と入力モード 通常、文字の入力はバッファリングされ、Enterキーを押された時点で初めてユーザプログラムにはデータが渡される。 しかし、それではCUIアプリケーショ…

Curses for Ruby。(その4)

昨日はウィンドウの生成・削除と描画について説明した。 今日はウィンドウの位置と移動について説明する。 ウィンドウの位置と移動 ウィンドウは、位置を変えたりサイズを変更したりすることが可能。 まず、ウィンドウの位置を取得するには、以下のメソッド…

Curses for Ruby。(その3)

昨日はcursesライブラリの基本的な内容について説明した。 今日はウィンドウの生成・削除と描画について。 ウィンドウの生成・削除 ウィンドウは、画面に出力する文字情報を持った矩形の領域。 Cursesでは、ウィンドウに対して文字を追加・削除する操作を行…

Curses for Ruby。(その2)

昨日はcursesライブラリの動作確認まで行った。 今日はcursesライブラリの基本的な内容について。 cursesライブラリの初期化・終了処理 cursesライブラリを使う場合、まず初期化が必要となる。 cursesライブラリを初期化するには、次のモジュール関数を呼び…

Curses for Ruby。(その1)

以前、noteに書いた記事だけど、こちらにも。 CUIのアプリケーションを作るときによく利用されるのが、Cursesというライブラリ。 Rubyの場合、準標準ともいえるcursesライブラリがあり(※1.9.3までは標準添付ライブラリ)、これを使うのが一般的だと思う。 …

Rubyはいいぞ。

昔ブログに書いた記事から。 当時のタイトルは『Rubyとは・・・。』で、書いたのは2005年10月23日。 当時のことを補足しておくと、自分はもっぱらPerlでプログラムを書いてて、Perlのオブジェクト指向機能も知ってた。 で、他に使ってた言語はCとJavaという…

CodeIQ「ロング・ロング・ストリング」問題を解いてみた。

CodeIQで出題された「ロング・ロング・ストリング」問題。 https://codeiq.jp/q/2683 自分もRubyで解いたので、コードを公開してみる。 問題 問題は、以下のとおり: 自然数 に対して、関数 を、( の 乗)を 10 進数で表したときの桁数と定義します。 例え…

強化学習とニューラルネットワークを組合せてみた。(その15)

昨日は関数近似にHMEを使ったSarsa()法の実装を行った。 今日はそれを使って実際に学習を行ってみる。 HMEの構成 学習を行うにあたって、HMEの構成は、TD Learning of Game Evaluation Functions with Hierarchical Neural Architecturesとほぼ同じ構成にし…

強化学習とニューラルネットワークを組合せてみた。(その14)

昨日は関数近似のためのHMEの実装を行った。 今日はいよいよHMEを関数近似に使ったSarsa()法の実装。 ファイルの整理 ただ、いざ実装しようと思うと、違ってくるのは関数近似の部分だけで、それ以外はまったく同じ。 なので、ちょっとバカらしい感じが。 そ…

強化学習とニューラルネットワークを組合せてみた。(その13)

昨日はゲートネットワークの実装を行った。 今日はそれを使って関数近似のためのHMEの実装を行う。 ValueHMEクラス 関数近似のためのHMEをValueHMEクラスとして実装していく。 #==================== # value_hme.rb #-------------------- # 価値ベクトルを…

強化学習とニューラルネットワークを組合せてみた。(その12)

昨日はHMEを強化学習の関数近似に使うときの勾配計算について説明した。 今日からは実際にRubyで実装を進めていく。 まずはゲートネットワークの実装から。 GateNNクラス ゲートネットワークをGateNNクラスとして実装していく。 #==================== # gat…

強化学習とニューラルネットワークを組合せてみた。(その10)

昨日はドロップアウトの実装を行った。 今日はそれで実際に学習を行ってみた。 中間層のユニット数: 128、ドロップさせるユニット数: 32 まず、中間層のユニット数を128、ドロップさせるユニット数を32にして、1,000,000回、2,000,000回、3,000,000回、学習…

強化学習とニューラルネットワークを組合せてみた。(その9)

昨日は複数のインスタンスを同時に学習するということを試してみた。 これ自体は有効に思われ、あとは複数のインスタンスの出す結果をどうやって統合するのかが課題になった。 その方法の一つとして考えられる、ドロップアウトの実装を行ってみた。 なお、ド…

強化学習とニューラルネットワークを組合せてみた。(その8)

昨日は中間層のユニット数を増やす実験をしてみた。 大体うまく動いていたけど、そこで出た課題として、自己対戦だと局所的な戦略に特化してしまって、他の場面に出くわしたときにうまく動けないことが多いようだった。 そこで、複数のインスタンスを用意し…

強化学習とニューラルネットワークを組合せてみた。(その7)

昨日はパラメータをいろいろ変える実験をやってみた。 結論から言えば、そもそも学習がうまくいっていない感じだった。 そして、論文をちょっと調べてみると、○×ゲームに対して関数近似にニューラルネットワーク(+α)を使うものだと、中間層のユニット数に8…