Skip to content

Instantly share code, notes, and snippets.

@mminer237
Created September 7, 2023 20:35
Show Gist options
  • Save mminer237/926bc453a9e09b2a2803305c5e2db1c1 to your computer and use it in GitHub Desktop.
Save mminer237/926bc453a9e09b2a2803305c5e2db1c1 to your computer and use it in GitHub Desktop.
<?php
$closest = ['zero', 26 + 5 + 18 + 15];
$numbers = [
'one',
'two',
'three',
'four',
'five',
'six',
'seven',
'eight',
'nine',
'ten',
'eleven',
'twelve',
'thirteen',
'fourteen',
'fifteen',
'sixteen',
'seventeen',
'eighteen',
'nineteen',
];
$tens = [
'twenty',
'thirty',
'forty',
'fifty',
'sixty',
'seventy',
'eighty',
'ninety'
];
foreach ($tens as $ten) {
$numbers[] = $ten;
for ($i = 0; $i < 9; $i++) {
$numbers[] = $ten.'-'.$numbers[$i];
}
}
for ($i = 0; $i < 9; $i++) {
$numbers[] = $numbers[$i].'-hundred';
for ($j = 0; $j < 99; $j++) {
$numbers[] = $numbers[$i].'-hundred-'.$numbers[$j];
}
}
foreach($numbers as $i => $name) {
test_number($i + 1, $name);
}
function test_number(int $number, string $name) {
global $closest;
$name = str_replace('-', '', $name);
$gematria = 0;
foreach(str_split($name) as $a)
$gematria += ord($a) - 96;
echo $number.' ≠ '.$gematria."\n";
if ($number == $gematria) {
echo $name.' = '.$gematria."\n";
exit;
}
else if (abs($number - $gematria) < $closest[1])
$closest = [$name, abs($number - $gematria)];
}
// for ($i = 0; $i < 999; $i++) {
// test_number(($i + 1) * 1000, $numbers[$i].'-thousand');
// for ($j = 0; $j < 999; $j++) {
// test_number(($i + 1) * 1000 + $j + 1, $numbers[$i].'-thousand-'.$numbers[$j]);
// }
// }
// for ($i = 0; $i < 999; $i++) {
// test_number(($i + 1) * 1000000, $numbers[$i].'-million');
// for ($j = 0; $j < 999; $j++) {
// for ($k = 0; $k < 999; $k++) {
// test_number(($i + 1) * 1000000 + ($j + 1) * 1000 + $k + 1, $numbers[$i].'-million-'.$numbers[$j].'-thousand-'.$numbers[$k]);
// }
// $numbers[] = $numbers[$i].'-million-'.$numbers[$j];
// }
// }
print_r($closest);
?>
@mminer237
Copy link
Author

No number matches itself, at least by the usual way of writing them.

Two numbers are one off though: 219 & 253

@mminer237
Copy link
Author

mminer237 commented Sep 7, 2023

If you include "and", two hundred and fifty-one is the smallest match.

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