hitode909の日記

以前はプログラミング日記でしたが、今は子育て日記です

Kyoto.pmハッカソン,ずっとビール飲んでた.けど作ろうと思ってたのは作れた.Perlでセミコロン書くやつ作った.前は上から順につけたり外したりだったけど,昨日は,世の中にあるソースコードをたくさん集めて,行末が{で次の行の行頭が$だったときセミコロンがつく確率は4%みたいな情報を取れるようにして,確率が50%より大きいときは最初からセミコロンつけるとか,確率が50%に近いのから順につけたり外したりして,速く探索が終わるような工夫をした.


f:id:hitode909:20120624104528j:plain
f:id:hitode909:20120624104537j:plain
f:id:hitode909:20120624104540j:plain
f:id:hitode909:20120624104544j:plain
f:id:hitode909:20120624104550j:plain
f:id:hitode909:20120624104554j:plain
f:id:hitode909:20120624104600j:plain
f:id:hitode909:20120624104603j:plain
f:id:hitode909:20120624104607j:plain


https://github.com/hitode909/perl-semicolon-master


それと,ワンライナーで音楽出すやつをtimbre.jsを使って作った.mohayonaoさんにいろいろ質問できてよかった.
https://dl.dropbox.com/u/8270034/sketch/sound1/index.html
この記事を参考にした.
https://gist.github.com/2971081:itle


こんな感じ.

  window.func = (t) ->
    t * ((t>>12|t>>8)&63&t>>4)

  Oneliner = (_args) ->
    @_ = {}
    @_.freq = _args[0] || 440
    @_.phase = 0


  Oneliner.prototype.seq = (seq_id) ->
    _ = @_
    cell = @cell

    if @seq_id != seq_id
      @seq_id = seq_id
      i = 0
      while i < cell.length
        cell[i] = (((window.func(_.phase) % 256) / 128.0) - 1.0) * _.mul + _.add
        _.phase += 8000 / timbre.samplerate
        i++

    cell

  timbre.fn.register("oneliner", Oneliner)

  T("oneliner", 440).play()