こんな感じでコマンド打って pic.twitter.com/rLHHpVH5ki
— ありか (@arik_a_) 2013, 12月 8
FizzBuzz, 31, 32, Fizz, 34, Buzz, Fizz, 37, 38, Fizz, Buzz, 41, Fizz, 43, 44, FizzBuzz, 46, 47, Fizz, 49, Buzz, Fizz, 52, 53, Fizz, Buzz, 56
— ありか (@arik_a_) 2013, 12月 8
ありか氏のやつ、明日あたりmikutterで実装してみようかな、でもmikutterって投稿する前にツイートを乗っとれたっけ.....
— ぽけっと :qall (@p_ck_) 2013, 12月 8
作りました。
pocke/mikutter_fizzbuzz · GitHub
とりあえずこんな感じのソースねん
# Copyright 2013, pocket # Licensed MIT # http://opensource.org/licenses/mit-license.php Plugin.create :fizzbuzz do def generate_reply(start, screen_name) result = "@#{screen_name}" n = start while result.size < 140 do result << ' ' result << 'fizz' if flag3 = n % 3 == 0 result << 'buzz' if flag5 = n % 5 == 0 result << n.to_s if !flag3 && !flag5 n += 1 end result[0..(result.rindex(' ') - 1)] end on_mention do |service, msgs| msgs.select{|m| m[:message] =~ /^@#{Service.primary.idname} fizzbuzz \d+$/o}.each do |msg| n = msg[:message].split[-1].to_i sn = msg[:user].idname Service.primary.update(message: generate_reply(n, sn), replyto: msg.message) end end end
on_mention でメンションを待ち構えて、飛んできたメンションが正規表現に引っかかればfizzbuzzを返します。
— ぽけっと :qall (@p_ck_) 2013, 12月 9
とかリプライが飛んでくると、
@p_ck_ 256 257 fizz 259 buzz fizz 262 263 fizz buzz 266 fizz 268 269 fizzbuzz 271 272 fizz 274 buzz fizz 277 278 fizz buzz 281 fizz 283 284
— ぽけっと :qall (@p_ck_) 2013, 12月 9
みたいに返します。
$ cd ~/.mikutter/plugin/
$ git clone https://github.com/pocke/mikutter_fizzbuzz.git fizzbuzz
で簡単に導入できますので、ぜひどうぞ。