Skip to content

Programowanie dla GC #3 - interpolacja Mystery Cache

Hidden : 11/29/2022
Difficulty:
2 out of 5
Terrain:
1.5 out of 5

Size: Size:   micro (micro)

Join now to view geocache location details. It's free!

Watch

How Geocaching Works

Please note Use of geocaching.com services is subject to the terms and conditions in our disclaimer.

Geocache Description:


Wiesz już jak używać języka JavaScript (GCA2J8X) i jak tworzyć zmienne (GCA2J9B). Przyszła pora na niezwykle praktyczne wykorzystanie zmiennych przy podstawianiu ich do wzoru skrytek - czyli na interpolację stringów (string wśród programistów to po prostu ciąg znaków, napis).

Wzory zagadek lub mulatków często są podawane nie jako jedno działanie, ale jako zestaw kilku działań, z których wychodzą kolejne składowe współrzędnych. Przykładowo w skrytce GC9HNRW wzór na współrzędne północne to N 50° 0(D-H-1).HG(A+C)'. W tym wzorze HG(A+C) owner traktuje jako kolejne cyfry współrzędnych, a nie jako H*G*(A+C), dlatego zawsze musisz upewnić się, że dobrze interpretujesz podany wzór. Możesz nastepnie wszystkie te składowe liczyć "na piechotę", tak jak pokazałem to w keszu #2, ale można też przekształcić ten wzór na tzw. template string, i następnie wykorzystać JS do tego, by współrzędne finału gotowe do wklejenia do checkera zbudował dla nas. Bez pomyłek! Jak to zrobić?

  1. Kopiujesz wzór do schowka (Ctrl+C), i wklejasz go gdzieś, gdzie masz możliwość jego edycji (notatnik, notatka GC lub nawet od razu - konsola JS).
  2. Na początku i na końcu dodajesz znak ` (backtick, na klawiaturze jest najczęściej nad tabulatorem i na lewo od jedynki).
  3. Każde pojedyncze działanie ze wzoru, z którego ma powstać składowa współrzędnej, opakowujesz w ${ z lewej i } z prawej jego strony (dolar i klamerka wąsiasta otwierająca z lewej i klamerka wąsiasta zamykająca z prawej).
  4. Dostosowujesz operatory działań arytmetycznych tak by były rozumiane przez kod (jeśli wzór jest podany w innej postaci).
  5. Wykonujesz kod i dostajesz kordy finału.

Przykład lepszy niż wykład. Template string dla powyższego wzoru będzie wyglądać tak:

`N 50° 0${D-H-1}.${H}${G}${A+C}'`

Tak przygotowane i wykonane wyrażenie w konsoli JS da Ci od razu poprawne współrzędne, oczywiście przy założeniu, że wartości Twoich zmiennych są poprawnie policzone.

Aby znaleźć finał, musisz jedynie obliczyć wspołrzędną wschodnią.

E H(G*D+A*H)° D4.((A*A*D/H+A+2/(A-D-H-H))/(A+G+H+A+G+H+A+G+H+A+G+H+A+G+H+A+G+H+A+G+H+A+G+H+D-H-1))(G+5)((568234+A*85/D*H*7-85247+74258)/(98566*D-A*108-D*55555*H-G-74504))'

Czyli w języku JavaScript:

E ${H}${G*D+A*H}° ${D}4.${(A*A*D/H+A+2/(A-D-H-H))/(A+G+H+A+G+H+A+G+H+A+G+H+A+G+H+A+G+H+A+G+H+A+G+H+D-H-1)}${G+5}${(568234+A*85/D*H*7-85247+74258)/(98566*D-A*108-D*55555*H-G-74504)}'

 

Changelog

1.11.2023: Zmiana współrzędnych, zagadki i podpowiedzi. Jeśli masz finał obliczony wcześniej - nowe miejsce znajdziesz wyznaczając azymut od starych współrzędnych: 27m na 312 stopni.

Additional Hints (Decrypt)

G

Decryption Key

A|B|C|D|E|F|G|H|I|J|K|L|M
-------------------------
N|O|P|Q|R|S|T|U|V|W|X|Y|Z

(letter above equals below, and vice versa)