2022-11-17
新しいプログラミング言語は、新しいおもちゃのようでワクワクします。

Twitterで発見、11/3発表、新しいプログラミング言語「Clawn」で、多言語サポートが売りの緯度経度と文字列の相互変換オープンソースライブラリ「Geo3x3(ジオ・スリーバイスリー)」のエンコードを作ってみました。


緯度 35.65858度、経度 139.745433、レベル 14 をエンコードし、E9139659937288 というGeo3x3の文字列を得ました!

Clawnでのプログラムはこんな感じ。

function floor(n) { return to_real_number(to_integer(n)) } function Geo3x3_encode(lat, lng, level) { res = "E" if lng < 0.0 { res = "W" lng = lng + 180.0 } lat = lat + to_real_number(90) unit = to_real_number(180) repeat i:i < level - 1 { unit = div_double_double(unit, 3.0) x = floor(div_double_double(lng, unit)) y = floor(div_double_double(lat, unit)) c1 = 1 + 3 * to_integer(y) res = res + int_to_str(c1 + to_integer(x)) lng = lng - mul_double(x, unit) lat = lat - mul_double(y, unit) } return res } print(Geo3x3_encode(35.65858, 139.745433, 14))

floor関数が無かったので作成したのと、小数との計算が一部うまくいかないところを組み込み関数を使って実装。ループの書き方がおもしろいですね。

decodeはつくりかけです。足りないライブラリは作ればOK!
よかったらどなたかチャレンジください!
Clawn branch on GitHub

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS