shonen.hateblo.jp

やったこと,しらべたことを書く.

標準入力からスペース区切りで値を拾うEnumerableな何か

競技プログラミングで与えられる入力は半角スペース・改行の両方で区切られることが多い.

そこで,半角スペース・改行で区切って値を拾ってくるEnumerableなクラスを書いた.

class In
    include Enumerable
    def initialize(io)
        @io = io
        @buff = []
        self
    end
    def shift
        return @buff.shift unless @buff.empty?
        return nil         unless l = @io.take(1).first
        return (@buff = l.chomp.split).shift
    end
    def line
        b = @buff; @buff = []; b
    end
    def each
        r = shift
        while r
            yield r
            r = shift
        end
    end
end
Cin = In.new(STDIN)


@n,@m = Cin.take(2)
@w = Cin.take(@n.to_i)
@e = @m.to_i.times.map{Cin.take(2)}


instance_variables.each do |v|
    puts "#{v} => "
    p instance_variable_get v
end

動いている. IOクラスのwrapperっぽい実装になっているのは,なんとなく.

エンジニア・プログラミング本まとめ

個人メモです.あまり読めてない本があるので,その反省として.

index

センス

  • 技術者のためのテクニカルライティング
  • ノンデザイナーズ・デザインブック
  • リーダブル・コード
  • プリンシプル・プログラミング

言語

技術

続きを読む

1.5inch RGB OLED Module の公式のライブラリが全ての色を使えていないので,全ての色を使えるようにする

環境

Arduino Micro

動機

公式の通販サイト https://www.waveshare.com/1.5inch-rgb-oled-module.htm には16bit(65K colors)と書かれているが, 18bitで指定できる設定を見つけたので記事にした.

本当に262k colors発色出来ているかどうか,人がそれを認識できるかどうかはまた別の問題.

続きを読む

1.5inch RGB OLED Module を Arduino Micro で動かす

数ヶ月前に買って放置していたので,動かしてみる.

やること

とにかくサンプルを動かすだけ

結果

わーすごい!フルカラーだ*1

f:id:m_buyoh:20181213103801j:plain

配線の色が滅茶苦茶なのは気にしないでください

*1:24bitではありません

続きを読む

Elo ratingを実装してみた

Elo rating とは

二人制ゲームのレーティングの算出法の1つ.

Wikipedia には,次の3点を基準に設計,と記述されている.

  • ゲームの結果は一方の勝ち、一方の負けのみとし、引き分けは考慮しない(0.5勝0.5敗と扱うものとする)。
  • 200点のレート差がある対局者間では、レートの高い側が約76パーセントの確率で勝利する。
  • 平均的な対局者のレートを1500とする。
続きを読む

WEBブラウザ上で生成したメロディを再生する方法(WEB Audio API)

introduction

特定のフォーマットのファイルを準備せず,音を動的に生成して再生する

  • 通常WEBブラウザ上で音を鳴らす時は,音楽ファイル(mp3やmidiなど)を準備して,それを再生する場合が殆ど.
  • DTMのようなものをWEBブラウザ上で作りたい場合,すべての音階の音楽ファイルを用意するか,音を動的に生成できるようにするか.

javascriptで音を生成するには?

Web MIDI API について試したところ,OS標準のMIDIは反応しなかった.

なので,特に事前準備が少なそうなWeb Audio API を使うことにします.

参考URL

1

非常に分かりやすい日本語のチュートリアルサイトです.僕が追加で説明する必要は無いと思います.

weblike-curtaincall.ssl-lolipop.jp

2

いい感じに見やすく,リファレンスマニュアルとしてまとまっています

www.javascripture.com

続きを読む