<?php
/**
* Given the Japanese numeral reading system, write a program that converts an integer into the equivalent Japanese reading.
*
* Basic numeral readings:
* 1: ichi
* 2: ni
* 3: san
* 4: yon
* 5: go
* 6: roku
* 7: nana
* 8: hachi
* 9: kyuu
* 10: juu
* 20: ni-juu
* 30: san-juu
* 100: hyaku
* 1000 : sen
* 10,000: man
* 100,000,000: oku
* 1,000,000,000,000: chou
* 10,000,000,000,000,000: kei
*
* Exceptions due to voice rounding in Japanese reading:
* 300: sanbyaku
* 600: roppyaku
* 800: happyaku
* 3000: sanzen
* 8000: hassen
* 1,000,000,000,000: itchou
* 8,000,000,000,000: hatchou
* 10,000,000,000,000: jutchou (also applies to multiplies of 10,000,000,000,000)
* 10,000,000,000,000,000: ikkei
* 60,000,000,000,000,000: rokkei
* 80,000,000,000,000,000: hakkei
* 100,000,000,000,000,000: jukkei (also applies to multiplies of 10,000,000,000,000,000)
* 1,000,000,000,000,000,000: hyakkei (also applies to multiplies of 1,000,000,000,000,000,000)
*
* Starting at 10,000, numbers begin with ichi if no digit would otherwise precede, e.g. 1,000 is sen but 10,000 is ichi-man.
*
* Examples:
* 11: juu ichi
* 17: juu nana
* 151: hyaku go-juu ichi
* 302: san-byaku ni
* 469: yon-hyaku roku-juu kyuu
* 2025 : ni-sen ni-juu go
* 10,403: ichi-man yon-byaku san
* 41,892: yon-juu ichi-man happyaku kyuu-juu ni
* 80,000,000,000,000: hachi-jutchou
*/
$inputNumber = 30000;
$inputString = (String)$inputNumber;
$numeralReadings = array(
1 => 'ichi',
2 => 'ni',
3 => 'san',
4 => 'yon',
5 => 'go',
6 => 'roku',
7 => 'nana',
8 => 'hachi',
9 => 'kyuu',
10 => 'juu',
20 => 'ni-juu',
30 => 'san-juu',
100 => 'hyaku',
1000 => 'sen',
10000 => 'man',
100000000 => 'oku',
1000000000000 => 'chou',
10000000000000000 => 'kei'
);
$numeralExceptions = array(
300 => 'sanbyaku',
600 => 'roppyaku',
800 => 'happyaku',
3000 => 'sanzen',
8000 => 'hassen',
1000000000000 => 'itchou',
8000000000000 => 'hatchou',
10000000000000 => 'jutchou',
10000000000000000 => 'ikkei',
60000000000000000 => 'rokkei',
80000000000000000 => 'hakkei',
100000000000000000 => 'jukkei',
1000000000000000000 => 'hyakkei'
);
if ($inputString > 10000) {
$inp1 = floor($inputString / 1000);
$inp = $inputString - ($inp1 * 1000);
if($inp !== 0) {
read($inp1, $numeralReadings, $numeralExceptions, false);
read($inp, $numeralReadings, $numeralExceptions);
} else {
read($inputString, $numeralReadings, $numeralExceptions);
}
} else {
read($inputString, $numeralReadings, $numeralExceptions);
}
function read($inputStr, $numeralReadings, $numeralExceptions, $parse1 = true)
{
$splitString = str_split($inputStr);
$returnString = '';
$appendIchi = false;
$firstNumber = null;
foreach ($splitString as $key => $number) {
if ($firstNumber == null) {
$firstNumber = $number;
}
if ($number !== 0) {
$int = 1;
$a = count($splitString) - 1 - $key;
for ($i = 0; $i < $a; $i++) {
$int = $int * 10;
}
$tempNumber = (int)$number * $int;
if (isset($numeralExceptions[$tempNumber])) {
$returnString .= $numeralExceptions[$tempNumber] . ' ';
continue;
}
if (isset($numeralReadings[$tempNumber])) {
if ($parse1 == false && $tempNumber == 1) {
continue;
}
$returnString .= $numeralReadings[$tempNumber] . ' ';
continue;
}
if (isset($numeralReadings[(int)$number])) {
if ($parse1 == false && $tempNumber == 1) {
continue;
}
$returnString .= $numeralReadings[(int)$number];
if ($int !== 1) {
$returnString .= '-' . $numeralReadings[$int];
}
$returnString .= ' ';
}
}
}
echo $returnString;
}
- Output for 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
- san-juu
- Output for 4.4.5 - 4.4.9
- Fatal error: Call to undefined function: str_split() in /in/Ji3j5 on line 112
Process exited with code 255. - Output for 4.3.2 - 4.3.11, 4.4.0 - 4.4.4
- Fatal error: Call to undefined function: str_split() in /in/Ji3j5 on line 112
Process exited with code 255. - Output for 4.3.0 - 4.3.1
- Fatal error: Call to undefined function: str_split() in /in/Ji3j5 on line 112
preferences:
299.01 ms | 401 KiB | 457 Q