38 lines
637 B
Plaintext
38 lines
637 B
Plaintext
Filter ToRoman {
|
|
$output = ''
|
|
|
|
if ($_ -ge 4000) {
|
|
throw 'Number too high'
|
|
}
|
|
|
|
$current = 1000
|
|
$subtractor = 'M'
|
|
$whole = $False
|
|
$decimal = $_
|
|
'C','D','X','L','I','V',' ' `
|
|
| %{
|
|
$divisor = $current
|
|
if ($whole = !$whole) {
|
|
$current /= 10
|
|
$subtractor = $_ + $subtractor[0]
|
|
$_ = $subtractor[1]
|
|
}
|
|
else {
|
|
$divisor *= 5
|
|
$subtractor = $subtractor[0] + $_
|
|
}
|
|
|
|
$multiple = [Math]::floor($decimal / $divisor)
|
|
if ($multiple) {
|
|
$output += [string]$_ * $multiple
|
|
$decimal %= $divisor
|
|
}
|
|
if ($decimal -ge ($divisor -= $current)) {
|
|
$output += $subtractor
|
|
$decimal -= $divisor
|
|
}
|
|
}
|
|
|
|
$output
|
|
}
|