# Measuring "nearness" of callsigns in Morse Code space?
# https://cwops.groups.io/g/main/topic/measuring_nearness_of/28628015?p=,,,20,0,0,0::recentpostdate%2Fsticky,,,20,2,0,28628015
#
# A quick script by Fabian, DJ1YFK (fabian@fkurz.net)
if ($_GET["printsource"]) {
header("Content-type: text/plain");
echo file_get_contents("morsedistance.php");
}
?>
Morse Distance Calculator
Send comments and suggestions to Fabian, DJ1YFK <fabian@fkurz.net >
$l = array();
$l['A'] = '.-';
$l['B'] = '-...';
$l['C'] = '-.-.';
$l['D'] = '-..';
$l['E'] = '.';
$l['F'] = '..-.';
$l['G'] = '--.';
$l['H'] = '....';
$l['I'] = '..';
$l['J'] = '.---';
$l['K'] = '-.-';
$l['L'] = '.-..';
$l['M'] = '--';
$l['N'] = '-.';
$l['O'] = '---';
$l['P'] = '.--.';
$l['Q'] = '--.-';
$l['R'] = '.-.';
$l['S'] = '...';
$l['T'] = '-';
$l['U'] = '..-';
$l['V'] = '...-';
$l['W'] = '.--';
$l['X'] = '-..-';
$l['Y'] = '-.--';
$l['Z'] = '--..';
$l['0'] = '-----';
$l['1'] = '.----';
$l['2'] = '..---';
$l['3'] = '...--';
$l['4'] = '....-';
$l['5'] = '.....';
$l['6'] = '-....';
$l['7'] = '--...';
$l['8'] = '---..';
$l['9'] = '----.';
$l['/'] = '-..-.';
$call = strtoupper($_GET['callsign']);
if (!preg_match("/^[A-Z0-9\/]+$/i", $call)) {
echo "Callsign $call contains invalid characters. Only allowed: A-Z, 0-9, /";
return;
}
?>
=$call;?> =morse($call);?>
Hover the mouse over a callsign to visualise the difference in the table above. Click here to see the full source code of this page .
# read SCP
$s = file_get_contents("MASTER.SCP");
$calls = explode("\r\n", $s);
$distances = array();
foreach ($calls as $c) {
$call1 = morse($c);
$distance = levenshtein($call1, morse($call));
$distances[$distance] .= "$c ";
}
?>
Distance Calls
for ($i = 0; $i <= 10; $i++) {
echo "$i ".$distances[$i]." \n";
}
?>
# abc = .- -... -.-.
function morse ($c) {
global $l;
$ret = "";
for ($i = 0; $i < strlen($c); $i++) {
$ret .= expand($l[$c[$i]]);
}
return $ret;
}
# convert e.g .- into - ---
function expand ($c) {
$ret = "";
for ($i = 0; $i < strlen($c); $i++) {
$ret .= $c[$i] == "." ? "- " : "--- ";
}
$ret .= " ";
return $ret;
}
?>
Morse Distance Calculator
Send comments and suggestions to Fabian, DJ1YFK <fabian@fkurz.net >
Callsign contains invalid characters. Only allowed: A-Z, 0-9, /