-3進数への変換
30分プログラム、その776。anarchy golf - Negatenaryにインスパイアされて、-3進数への変換をやってみました。
基数が負の変換はやったことがなかったので、わりと苦戦しました。各桁が必ず正の数になるようにするのがむずい!
使い方
*Main> negatenary (-60) "2020"
ソースコード
negatenary :: Integral a => a -> String negQuotRem x y = let (q,r) = x `quotRem` y in if r < 0 then (q+1, r-y) else (q,r) negatenary 0 = "" negatenary n = negatenary q ++ show r where (q,r) = n `negQuotRem` (-3) main = mapM_ (putStrLn.negatenary) [-60..182]