Skip to content

Instantly share code, notes, and snippets.

@olaurendeau
Created May 21, 2021 15:16
Show Gist options
  • Select an option

  • Save olaurendeau/e490a0a333992d0c62420631a1226a22 to your computer and use it in GitHub Desktop.

Select an option

Save olaurendeau/e490a0a333992d0c62420631a1226a22 to your computer and use it in GitHub Desktop.
Decimal to roman
<?php
function partToRoman($part, $one, $five, $ten) {
$romanPart = "";
if ($part >= 5) {
$romanPart = $five;
if ($part == 5) {
return;
}
}
if ($part % 5 < 4) {
$romanPart .= str_pad("", $part % 5, $one);
} else {
$romanPart = $part == 4 ? $one.$five : $one.$ten;
}
return $romanPart;
}
$number = $argv[1];
$roman = "";
$i = 1;
foreach(array_reverse(str_split($number)) as $part) {
$romanPart = "";
switch ($i) {
case 1: $romanPart = partToRoman($part, "I", "V", "X"); break;
case 10: $romanPart = partToRoman($part, "X", "L", "C"); break;
case 100: $romanPart = partToRoman($part, "C", "D", "M"); break;
case 1000: $romanPart = partToRoman($part, "M", "?", "?"); break;
}
$roman = $romanPart.$roman;
$i = $i*10;
}
echo "Roman conversion : $number >> $roman\n";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment