c4se記:さっちゃんですよ☆

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

.。oO(此のblogは、主に音樂考察Programming に分類されますよ。ヾ(〃l _ l)ノ゙♬♪♡)

音樂は SoundCloud に公開中です。

考察は現在は主に Scrapbox で公表中です。

Programming は GitHub で開發中です。

trickyじゃないgolfでもない短いMöbius関数をRubyで

短いcodeが好ければどうぞ。trickyじゃないcode golfでもない短いMobius函數 (メビウス関数) です。

# encoding=utf-8
# license: Public Domain

def mobius n
  (2 .. n).reduce(1) do |current, prime|
    if n % prime == 0
      current = -current
      n /= prime
    end
    break current if n == 1
    break 0 if n % prime == 0
    current
  end
end

p mobius(3 * 19 * 19 * 23) == 0
p mobius(3 * 19 * 23) == -1
p mobius(3 * 19 * 23 * 151) == 1

cf. Elixir (とJavaScriptRuby) でMöbius関数を実装した http://c4se.hatenablog.com/entry/2013/07/12/210747
cf. Haskell (とElixir) でもMöbius関数を実装した http://c4se.hatenablog.com/entry/2013/07/14/185745