Err, gdzie ja jestem?

26

O nie! Jestem uwięziony w dużym lesie (Okej, nie do końca, ale załóżmy to) i nie wiem, gdzie jestem!

Na szczęście przyniosłem laptopa. Ale kiedy szukałem „Map”, napisał „Brak wyników” i pytam o to w ostateczności.

Zrób program, który wyprowadza długość i szerokość geograficzną mojej lokalizacji w dowolnym formacie dwóch liczb. any two number formatobejmuje:

  • Krotka.
  • Ciąg zawierający długość i szerokość geograficzną.
  • Obiekt JSON.
  • itp..

Można użyć dowolnego interfejsu API lub bibliotek. Oznacza to, że możesz wyszukiwać w Mapach Google itp. (Sądzę, że nie zniszczyli swoich interfejsów API: \)

Matthew Roh
źródło
19
PowerShell ma gldla Get-Location, niestety nie sądzę C:\Users\Connorpomogą ci uciec z lasu bardzo dużo.
colsw
C: \ Users \ @Connor> sudo yes
Matthew Roh

Odpowiedzi:

72

Mathematica, 4 bajty

Err, gdzie ja jestem?

Here

Ocenia na GeoPosition[{latitude, longitude}].

Martin Ender
źródło
5
o_O Mathematica ma do tego wbudowaną wersję?
Matthew Roh
4
@SIGSEGV Oczywiście ... (fragment nr 4)
Martin Ender
33
Mathematica ma wbudowane wszystko
Skidsdev
10
Jeszcze lepiej: polecenie Sunset[Here] - Nowpoprawnie zwraca czas do zachodu słońca.
Greg Martin
4
Cieszę się, że odpowiedź ma więcej głosów niż pytanie. Gratulacje Matt
Matthew Roh
11

JavaScript (ES6), 89 82 bajtów

navigator.geolocation.watchPosition(x=>alert([(y=x.coords).latitude,y.longitude]))

Wypróbuj online! (Z jakiegoś powodu to nie działało we fragmencie).

Wyjaśnienie

navigatorobiekt jest częścią BOM . geolocationjest jego własnością i jest także obiektem, który zawiera dane geolokalizacyjne użytkownika. watchPosition()jest metodą geolocationobiektową. Pobiera funkcję wywołania zwrotnego, która jest wykonywana po pobraniu danych geolokalizacyjnych. Funkcja zwrotna x=>alert((y=x.coords).latitude+","+y.longitude)jest funkcją anonimowy (N), który wykonuje się w obiekcie xi alert()S latitudei longitudewłaściwości x.coordsoddzielony przecinkami. Zauważ, że obiekt xjest przekazywany do funkcji wywołania zwrotnego w watchPosition()momencie wywołania funkcji wywołania zwrotnego (tj. Po pobraniu danych geolokalizacyjnych).


Uwaga: Dane geolokalizacyjne są oparte na GPS, jeśli GPS jest dostępny, w przeciwnym razie na podstawie adresu IP.

Arjun
źródło
2
watchPositionzamiast getCurrentPositionzapisuje 5 bajtów. alert([(y=x.coords).latitude,y.longitude])oszczędza jeszcze 2
Johan Karlsson
1 znak krótszy, generuje błąd:for(f in r=navigator.geolocation)r=r[f](x=>alert((y=x.coords).latitude+","+y.longitude))
user2428118
3
To naprawdę rzadka okazja, gdy JS może być konkurencyjny, polegając na zbyt długich nazwach nieruchomości.
Kudłaty
@JohanKarlsson Thanks! Wdrożono to!
Arjun
@Shaggy True, rzeczywiście.
Arjun
8

Python z żądaniami, 101 100 75 bajtów

4 bajty zapisane dzięki @ КириллМалышев

21 bajtów zapisanych dzięki @Rod

from requests import*;print(get('http://su0.ru/auls').text.split(',')[5:7])
Uriel
źródło
Jeśli jest to Python 2, możesz zaoszczędzić 1 bajt, usuwając nawias
Wondercricket
Może lepiej użyć krótkiego adresu URL? Na przykład su0.ru/auls . Więc zaoszczędzisz 4 bajty.
Кирилл Малышев
Nie potrzebujesz całego tego formatowania, from requests import*;print(get('http://ip-api.com/json').text.split(',')[5:7])powinno wystarczyć
Rod
Link jest zepsuty! Jeśli zamierzasz użyć skracacza URL, najlepiej użyć ustalonego.
Jakob
5

PowerShell, 130 bajtów

Add-Type -A System.Device;($a=[Device.Location.GeoCoordinateWatcher]::new()).Start();for(;($b=$a|% Po*n|% L*)|% I*){}$b|select L*e

Nie golfowany:

Add-Type -AssemblyName System.Device #Required to access System.Device.Location namespace
$GeoWatcher = New-Object System.Device.Location.GeoCoordinateWatcher #Create the required object
$GeoWatcher.Start() #Begin resolving current locaton
whille ($GeoWatcher.Status -ne "Ready") do { sleep -Milliseconds 100 } #Wait for discovery.
$GeoWatcher.Position.Location | Select Latitude,Longitude #Select the relevent results.

Zwraca jako:

PS C:\users\sweeneyc\Desktop> Add-Type -A System.Device;($a=[Device.Location.GeoCoordinateWatcher]::new()).Start();for(;($b=$a|% Po*n|% L*)|% I*){}$b|select L*e

        Latitude         Longitude
        --------         ---------
53.4064177191653 -6.36202495701332

Okazuje się, że jest na to sposób, ale nie jest taki ładny.

bonus: otwiera mapy Google w Twojej bieżącej lokalizacji.

Add-Type -A System.Device;($a=[Device.Location.GeoCoordinateWatcher]::new()).Start();for(;($b=$a|% Po*n|% L*)|% I*){};saps "https://www.google.ie/maps/@$($b.Latitude),$($b.Longitude)z"

może zaoszczędzić 3 bajty przy użyciu, TryStartale wysyła sygnał truedo potoku i kosztuje więcej, aby go stłumić.

Add-Type -A System.Device;($a=[Device.Location.GeoCoordinateWatcher]::new()).TryStart($true,[int]9e8);$a|% Po*n|% L*|select L*e

PowerShell (nie konkuruje), 44 bajty

(irm freegeoip.net/xml).Response|select *ude

Korzysta z usługi zewnętrznej, ponieważ PowerShell nie ma wewnętrznych wbudowań dla „bieżącej lokalizacji” - jest to Geolokalizacja oparta na protokole IP, więc prawie na pewno nie zwróci twojej aktualnej lokalizacji, zwróci „domyślną” lokalizację twojego dostawcy usług internetowych, a jeśli uruchomisz to przez VPN będzie prezentować się wszędzie tam, gdzie jest punkt wyjścia.

Próbowałem (nie jako ćwiczenie w golfa), aby interfejs API map Google działał z metodą geolokalizacji adresu bezprzewodowego mac, ale nie jest to dokładne ani możliwe do gry w golfa.

oznaczone jako niekonkurencyjne z powodu niedokładności wyników.

PS C:\Users\sweeneyc> (irm freegeoip.net/xml).Response|select *ude
Latitude Longitude
-------- ---------
53.3472  -6.2439

wyświetla się Central Dublin, Irelandprzy wyszukiwaniu, jednak obecnie jestem nieco poza centrum miasta, około 8 mil od zwróconego punktu.

colsw
źródło
W języku C # GeoCoordinateWatcherma TryStartmetodę, którą można wypróbować, która wygląda na to, że zwraca, gdy status jest Readyw niej zapętlony. Jeśli ta metoda jest oczywiście dostępna.
TheLethalCoder
1
@TheLethalCoder był pierwszą rzeczą, na którą spojrzałem, dodany w przykładzie, tam zapisuje tylko 3 bajty ogółem, ale zrzuca a truedo potoku, zanim będę mógł wyprowadzić długość / długość, i myślę, że prawdopodobnie narusza specyfikację, gdy jest ona wyprowadzana .
colsw
@TheLethalCoder może wykonalnie zaoszczędzić bajt (y) [int]9e8części, gdy ustawisz limit czasu, TryStartale nie mogę go uruchomić 9999999i [int]9e8jest to to samo, co dodanie dodatkowych 9.
colsw
2

(niekonkurujący) Angolf , 110 107 bajtów

❦™navigator.geolocation.getCurrentPosition#x=>™alert##y=x.coords▷.latitude+","+y.longitude▷▷●
    ❦                                   Define an IIFE
       ™                                Get the scope
         navigator                      Get JavaScript's navigator object from the scope
             geolocation                Get the geolocation property of the navigator object
                 getCurrentPosition     Get the current position and execute a function
                     x=>                Define a function with x as a parameter
                         ™              Get the scope
                            alert       Call alert and alert the following string:
                         #y=x.coords▷ Define y with the value of the coordinates of x
                         latitude       Get y's latitude
                         +","           Append "," to the string
                         +y.longitude   Append the longitude to the string
    ●                                   Close the IIFE and call it with the scope
ten jeden użytkownik
źródło
1
Witamy na stronie! Nie mogę znaleźć żadnych informacji na temat Angolfa; czy mógłbyś połączyć swoją stronę internetową?
ETHprodukcje
github.com/XtremePlayzCODE/angled/blob/master/angolf.js , Przepraszamy za spóźnioną odpowiedź
thatoneuser
1
Witamy na stronie! czy masz starszy link niż ten? jeśli nie, język jest uważany za nowszy niż wyzwanie. zwyczajem jest zaznaczanie odpowiedzi w językach nowszych niż wyzwanie z (niekonkurencyjnym) w tytule
Destructible Lemon
Mam Angolfa od 3 miesięcy, ale właśnie przesłałem go do GitHub, ponieważ wcześniej nie miał linku
ten użytkownik
@thatoneuser niestety w tym widoku języki muszą zostać opublikowane, aby zostały oznaczone jako „konkurujące”, proszę oznaczyć je jako niekonkurencyjne (oznacza to, że możesz brać udział i zbierać opinie, ale będziesz rozpatrywany pod kątem zaakceptowanego znaku tic.
Rohan Jhunjhunwala
0

C #, 132 bajty

_=>{var w=new System.Device.Location.GeoCoordinateWatcher();w.Start();var c=w.Position.Location;return c.Longitude+","+c.Latitude;};
TheLethalCoder
źródło
0

Excel VBA (tylko Windows, Office 2016+), 278 272 bajtów

Ograniczone do systemu Windows, Office 2016+ do użytku Microsoft.Mashup.OleDb.1dostawcy

Pełna subprocedura, która nie pobiera danych wejściowych i wyjściowych z bieżącej lokalizacji jako Excel.ListObjecttabela z typami, w tym dodatkowe informacje.

Sub a
ThisWorkbook.Queries.Add"x","let S=Json.Document(Web.Contents(""su0.ru/auls""))in S
With Sheet1.ListObjects.Add(0,"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=x",,,[A1]).QueryTable
.CommandText="SELECT * FROM [x]
.Refresh
End With
End Sub

Przykładowe dane wyjściowe wykluczone z oczywistych powodów.

-2 bajty do wykorzystania [Sheet1]ponadSheets(1)

Taylor Scott
źródło
0

Swift 4 , 125 117 96 bajtów

Niestety można to przetestować tylko lokalnie.

import CoreLocation;var c=CLLocationManager().location!.coordinate;print(c.longitude,c.latitude)
Pan Xcoder
źródło