Three word location: Difference between revisions
→{{header|Raku}}: Make word indexing routine user overridable, demo
Thundergnat (talk | contribs) (→{{header|Raku}}: Add another test coordinate) |
Thundergnat (talk | contribs) (→{{header|Raku}}: Make word indexing routine user overridable, demo) |
||
Line 308:
# ENCODE / DECODE
sub w-encode ( Rat(Real) $lat, Rat(Real) $lon, :&f = &synth ) {
$_ = (($lat + 90) * 10000).round.fmt('%021b') ~ (($lon + 180) * 10000).round.fmt('%022b');
(:2(.substr(0,15)), :2(.substr(15,14)),:2(.substr(29)))».&
}
sub w-decode ( *@words, :&f = &thnys ) {
my $bin = (@words».&
(:2($bin.substr(0,21))/10000) - 90, (:2($bin.substr(21))/10000) - 180
}
Line 325:
59.3586, 24.7447, # Lake Raku
29.2021, 81.5324, # Village Raku
-7.1662, 53.9470, # The Indian ocean, south
28.3852, -81.5638 # Walt Disney World
-> $lat, $lon {
my @words = w-encode $lat, $lon;
my @index = w-encode $lat, $lon, :f( { $_ } );
printf "Coordinates: %s, %s\n To Index: %s\n To 3-word: %
$lat, $lon, @index.Str, @words.Str, w-decode(@words), w-decode @index, :f( { $_ } );
}</lang>
{{out}}
<pre>Coordinates: 51.4337, -0.2141▼
To 3-word: herazi dowisi rahiku▼
And back: 51.4337, -0.2141▼
Coordinates: 21.2596, -157.8117▼
To 3-word: bisiju yeduku pakeye▼
And back: 21.2596, -157.8117▼
Coordinates: -55.9652, -67.2256▼
To 3-word: lepimu wokemo nerupe▼
And back: -55.9652, -67.2256▼
Coordinates: 59.3586, 24.7447▼
To 3-word: nohaye tijehe nibida▼
And back: 59.3586, 24.7447▼
Coordinates: 29.2021, 81.5324▼
To 3-word: zipupi mebeto zekafa▼
And back: 29.2021, 81.5324▼
Coordinates: -7.1662, 53.947▼
To 3-word: zesonu yikezo rutaru▼
Coordinates: 28.3852, -81.5638▼
And back: 28.3852, -81.5638</pre>▼
<pre>Coordinates: 51.4337, -0.2141
To
Coordinates: 21.2596, -157.8117
To
Coordinates: -55.9652, -67.2256
To
Coordinates: 59.3586, 24.7447
To
Coordinates: 29.2021, 81.5324
To
Coordinates: -7.1662, 53.947
To Index: 12942 12942 12942
To 3-word: rakudo rakudo rakudo
From
Coordinates: 28.3852, -81.5638
To
(Ok, I admit I manipulated that second to last one
=={{header|Symsyn}}==
|