Skip to content

Instantly share code, notes, and snippets.

@mtsmfm
Created January 8, 2014 17:10
Show Gist options
  • Select an option

  • Save mtsmfm/8320393 to your computer and use it in GitHub Desktop.

Select an option

Save mtsmfm/8320393 to your computer and use it in GitHub Desktop.
基数変換
valList :: Int -> Int -> [Int]
valList x n = map (n^) [numDigits, (numDigits-1)..0]
where numDigits = floor $ logBase (fromIntegral n) (fromIntegral x)
convert :: Int -> Int -> [Int]
convert x n
| x < n = [x]
| otherwise = map (snd) $ tail $ scanl (\acc y -> let z = floor $ fromIntegral(fst acc) / fromIntegral(y) in ((fst acc) `mod` y, z)) (x, 0) xs
where xs = valList x n
@mtsmfm
Copy link
Copy Markdown
Author

mtsmfm commented Jan 8, 2014

再帰にしようとしてうまくいかなくて convert にガード残ってた 😇

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment