LoginSignup
0
0

More than 5 years have passed since last update.

Powershell 1〜4999までの数字をローマ数字に変換する関数

Last updated at Posted at 2017-11-25
# 1〜4999までの数字をローマ数字に変換する関数
function Number-ToRoman ($number) {

    if (($number -ge 5000) -or ($number -le 0)) {
    return "1から4999までの数字を入力してください"
    }

    $result = ""

    # ローマ数字(name)と数字(value)を組み合わせた連想配列
    $hash_roman_num = @{
     "m" = 1000
    "cm" =  900
     "d" =  500
    "cd" =  400
     "c" =  100
    "xc" =   90
     "l" =   50
    "xl" =   40
     "x" =   10
    "ix" =    9
     "v" =    5
    "iv" =    4
     "i" =    1
    }


    # 数字(value)の大きい順に、連想配列を並び替え
    $hash_roman_num_sort = $hash_roman_num.GetEnumerator() |Sort-Object value -desc



    foreach ($key_value in $hash_roman_num_sort) {
        $count = [math]::floor($number / $key_value.value)
        $number = $number % $key_value.value
        [string]$result += ($key_value.key -as [string]) * $count
    }


    return $result

}



# 実行
Number-ToRoman 0
=> 1から4999までの数字を入力してください

Number-ToRoman 5000
=> 1から4999までの数字を入力してください

Number-ToRoman 1
=> i

Number-ToRoman 2
=> ii

Number-ToRoman 3
=> iii

Number-ToRoman 4
=> iv

Number-ToRoman 5
=> v

Number-ToRoman 10
=> x

Number-ToRoman 1000
=> m

Number-ToRoman 4999
=> mmmmcmxcix

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0