株とPythonの本を読んで株取引のシミュレーションを実装してみた

株とPython─自作プログラムでお金儲けを目指す本を読んでみました。

書いている内容としては株取引に必要となる基礎知識からシミュレーションを行うために必要なデータの収集方法、それから集めたデータを使ってのシミュレーター実装、取引用戦略と初めて株取引のプログラムを実装に必要な情報はまとめられていそうだと思いました。

サンプルのコードをもとに以下のように実装してみました。

github.com

続きを読む

CPUの創り方をもとにverilog-hdlでシミュレーションをしてみた

  • CPUの創り方をもとにverilog-hdlでシミュレーションをしてみた
    • 環境構築(QuartusⅡ)
      • 新規プロジェクト作成
      • 新規verilogファイル作成
  • 4bitレジスタの作成
  • 演算装置(ALU)の作成
  • レジスタと演算装置を組み合わせてみる
  • ROMから読み込んだ命令を実行する
  • 命令のデコーダを作成する
  • クロック周波数を調整してキッチンタイマーとして使えるようにする

CPUの創り方をもとにverilog-hdlでシミュレーションをしてみた

CPUの創り方 にのっているキッチンタイマー(時間固定)のCPUをverilog-hdlでシミュレーションしてみました。実装についてはこちらに作られていたのがありましたので、これをもとに確認しました。

続きを読む

Ninety-Nine Scala Problemsを解いてみた

ドワンゴが公開してい新卒エンジニア向けのScalaの研修資料で一通り終わった後に説明があるNinety-Nine Scala Problemsについてリスト操作の問題を解いてみました。 せっかくなので何問かまとめてみようと思います。

P19 (**) Rotate a list N places to the left.

P19 (**) Rotate a list N places to the left.
Examples:
scala> rotate(3, List('a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k))
res0: List[Symbol] = List('d, 'e, 'f, 'g, 'h, 'i, 'j, 'k, 'a, 'b, 'c)
scala> rotate(-2, List('a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k))
res1: List[Symbol] = List('j, 'k, 'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i)
続きを読む

ecサイトをモデリングしてscalaで実装してみる

以前行っていたecサイトのモデリングについて実際にScalaで実装してみたいと思います。

今回は以下のユースケースに対応できるつくりにしたいと思います。

・ユーザはログイン画面でユーザ名、パスワードを入力してパスワード認証が行える。
・ユーザはショッピングカートに商品を入れることができる。
・ユーザはショッピングカートに入れた商品の品目を更新できる。
・ユーザはショッピングカートに入れた商品をクレジット、または銀行振り込みで購入できる。
・ユーザは商品の購入手続き時にクーポンコードを入力できる。
・クレジットカード支払いの場合、購入時に支払いが行われて配達予定日を表示する。

実装はこちらになります。Play Frameworkを使用しDBアクセスのライブラリにはslickを使っています。 先に動作を確認してみたいと思います。

続きを読む

scalaでパーザーコンビネーターを書いてみた

パーザーコンビネータとは

パーザを部品として、より複雑なパーザを構築する手法。例えば文字列の一致など基本的なパーサーを作っていおいて、それを組み合わせることで数式のパーサーを作ったりする。

なぜパーザーコンビネータ

基本的な文法を覚えた後の次のステップにちょうど良い規模(小さすぎず、大きすぎず) 言語の機能を幅広く使うことができる

Javaでのパーザコンビネータの実装としてこの記事が参考になりましたので、これをもとに自分なりにScalaで書いてみたいと思います。

続きを読む

確率的プログラミングモデルのGenのtutorialを触ってみた

Genとは

初心者向け汎用AIプログラミングシステムとの記事があって気になったのですが、数学の知識がなくても使えるとこことで普通のプログラマーでも扱えることを意識しているのかと思いました。Genの論文ではどのようなモデルでも表現できる『汎用の』モデリング言語を提供しているシステムもあるが、そういったシステムは使いものにならないほど収束の遅い推論アルゴリズムしかサポートしていないとのことで、Genでは汎用目的でもその問題を改善しようとしているらしいです。

続きを読む