2021-01-01から1ヶ月間の記事一覧

関数を微分して gnuplot で出力(Ruby)

コード。 require "numo/gnuplot" dx = 0.0001 dif = ->(f, x) { (f.(x+dx)-f.(x))/dx }.curry f = ->(x) { x*x-2*x+1 } dif_f = dif.(f) xs = -5.step(5, 0.1).to_a ys1 = xs.map(&f) ys2 = xs.map(&dif_f) Numo.gnuplot do set terminal: :x11 unset :key …

ビット操作メソッド三題(Ruby)

Ruby を使っているとビット操作はあまり必要なのだが、競技プログラミングをやっていたりすると時にはビット操作したくなることもある。で、Ruby をあらためて見てみると(当り前だが)ビット操作も一通り揃っているわけだ。競プロで便利だなと思うのは例え…

RactorEnum の使用例(Ruby)

obelisk.hatenablog.com前回作った RactorEnum を作ってみます。迷路のスタート(S)から水を流し、お宝が水没するたびにお宝の座標と種類を(リアルタイムで)出力するというものです。 幅優先探索で、お宝に到達するたびにre.pipeに流し込みます。 require…

Ractor の Enumerable 化?(Ruby)

オブジェクトを順に Ractor に流し込んで、(無限連鎖の)Enumerable(親クラス)として取り出すというものです。 こんな感じです。 ractor_enum.rb class RactorEnum class End end def initialize @pipe = Ractor.new do loop do e = Ractor.receive if e.…