Three word location: Difference between revisions

(Added AppleScript solutions.)
Line 553:
latitude = -81.5638 longitude = 28.3852
</pre>
 
=={{header|Nim}}==
{{trans|Go}}
<lang Nim>import strformat, strutils
 
func toWord(w: int64): string = &"W{w:05}"
 
func fromWord(ws: string): int64 = ws[1..5].parseInt()
 
echo "Starting figures:"
var
lat = 28.3852
long = -81.5638
echo &" latitude = {lat:0.4f}, longitude = {long:0.4f}"
 
# Convert "lat" and "long" to positive integers.
var
ilat = int64(lat * 10_000 + 900_000)
ilong = int64(long * 10_000 + 1_800_000)
 
# Build 43 bit int comprising 21 bits (lat) and 22 bits (lon).
var latlong = ilat shl 22 + ilong
 
# Isolate relevant bits.
var
w1 = latlong shr 28 and 0x7fff
w2 = latlong shr 14 and 0x3fff
w3 = latlong and 0x3fff
 
# Convert to word format.
let
w1s = w1.toWord
w2s = w2.toWord
w3s = w3.toWord
 
# Print the results.
echo "\nThree word location is:"
echo &" {w1s} {w2s} {w3s}"
 
# Reverse the procedure.
w1 = w1s.fromWord
w2 = w2s.fromWord
w3 = w3s.fromWord
 
latlong = w1 shl 28 or w2 shl 14 or w3
ilat = latlong shr 22
ilong = latlong and 0x3fffff
lat = float(ilat - 900_000) / 10_000
long = float(ilong - 1_800_000) / 10_000
 
# Print the results.
echo "\nAfter reversing the procedure:"
echo &" latitude = {lat:0.4f}, longitude = {long:0.4f}"</lang>
 
{{out}}
<pre>Starting figures:
latitude = 28.3852, longitude = -81.5638
 
Three word location is:
W18497 W11324 W01322
 
After reversing the procedure:
latitude = 28.3852, longitude = -81.5638</pre>
 
=={{header|Perl}}==
Anonymous user