HSPで幾何モジュール - 点と線と円
目的
以下の命令を実装するよ.
- 直線と直線の交点を求める
- 直線と円の交点を求める
- 円と円の交点を求める
- 直線と点の距離を求める
- 点に最も近い直線上の点を求める
高校数学の最初の方の知識だけで解くことは出来ますが,面倒.
続きを読む配列とEnumerable,どちらが高速?
問題
いくつかのrubyコードに対して実行時間を計測する.
require 'benchmark' # p `ruby -v` foo = (1..5050505) [ 'foo.reduce(:+)', 'foo.to_a.reduce(:+)', 'foo.to_a.reverse.reduce(:+)', 'foo.each.reduce(:+)', 'foo.each.to_a.reduce(:+)', 'foo.reverse_each.reduce(:+)', 'foo.reverse_each.to_a.reduce(:+)' ].each do |e| puts e p Benchmark.realtime { eval(e) } end
どのコードが高速で,どのコードが低速だろうか?
続きを読むjsonのparserを書く
2018/08/05 致命的なミスを修正しました
JSONとは
javascriptをベースに設計された,軽量のデータ交換フォーマット.
詳しくは,https://www.json.org/json-ja.html
目的
構文解析を頑張る.C++で書いたら型がだるかったのでRubyで書く.
jsonを読み込みたいだけならrequire 'json'
.
縛り
- テスト目的以外での
json
モジュールの使用禁止. #to_i
禁止.ただし1文字の変換を除く.Regex
禁止.ただし文字判定を除く.- `置換操作メソッドの禁止.
hexadecimalでズルしました…
続きを読む手抜きjson構造体をC++11かC++14辺りでざっくり書く.
ざっくり.
- 2018/6/29: ソースコード一部修正,parseを追加.説明も増やした.
JSONとは
気味の悪い拡張子. javascriptをベースに設計された,軽量のデータ交換フォーマット.
詳しくは,https://www.json.org/json-ja.html
仕様の省略
仕様の全てを実装することはそんなに大変では無いものの,ブログに載せられない量になってしまいそうだったので,仕様を省略する.
実装するのはobject
*1,number
だけ.array
もobject
で代用が効くので実装しない.
仕様ではkey
はstring
だが,number
で代用.