Äh, wo bin ich?

26

Ach nein! Ich bin in einem großen Wald gefangen (Okay, nicht wirklich, aber nimm es einfach an) und ich weiß nicht, wo ich bin!

Zum Glück habe ich meinen Laptop mitgebracht. Bei der Suche nach "Karten" wurde jedoch "Keine Ergebnisse" angezeigt, und ich bitte dies als letzten Ausweg.

Bitte erstellen Sie ein Programm, das die Längen- und Breitengrade meines Standorts in einem beliebigen zweistelligen Format ausgibt. any two number formatbeinhaltet:

  • Ein Tupel.
  • Eine Zeichenfolge mit Längen- und Breitengrad.
  • Ein JSON-Objekt.
  • etc..

Es können beliebige APIs oder Bibliotheken verwendet werden. Das heißt, Sie können Google Maps usw. abfragen. (Ich denke, sie haben ihre APIs nicht in den Papierkorb geworfen: \)

Matthew Roh
quelle
19
Powershell hat glfür Get-Location, leider glaube ich nicht C:\Users\Connorwerden Sie sehr viel in den Wald helfen zu entkommen.
Colsw
C: \ Users \ @Connor> sudo yes
Matthew Roh

Antworten:

72

Mathematica, 4 Bytes

Äh, wo bin ich?

Here

Auswertungen zu GeoPosition[{latitude, longitude}].

Martin Ender
quelle
5
o_O Mathematica hatte ein eingebautes dafür?
Matthew Roh
4
@ Sigsegv Natürlich ... (Snippet # 4)
Martin Ender
33
Mathematica hat für alles eine eingebaute
Skidsdev
10
Noch besser: Der Befehl Sunset[Here] - Nowgibt die Zeit bis zum Sonnenuntergang korrekt zurück.
Greg Martin
4
Ich finde es amüsant, eine Antwort zu sehen, die mehr Stimmen als die Frage hat. Herzlichen Glückwunsch 👏👏👏
Matthew Roh
11

JavaScript (ES6), 89 82 Bytes

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

Probieren Sie es online! (Aus irgendeinem Grund funktionierte dies im Snippet nicht).

Erläuterung

navigatorObjekt ist Teil der Stückliste . geolocationist eine Eigenschaft von ihr und ist auch ein Objekt, das Geolokalisierungsdaten des Benutzers enthält. watchPosition()ist eine Methode des geolocationObjekts. Es wird eine Rückruffunktion verwendet, die ausgeführt wird, nachdem die geografischen Daten abgerufen wurden. Die Rückruffunktion x=>alert((y=x.coords).latitude+","+y.longitude)ist eine anonyme (Lambda) Funktion, die ein Objekt xund alert()die durch Komma getrennten Eigenschaften von latitudeund aufnimmt . Man beachte , dass das Objekt an die Callback - Funktion durch übergeben wird , wenn die Callback - Funktion (dh nach der Rückholung der Geopositionsdaten) aufgerufen wird. longitudex.coordsxwatchPosition()


Hinweis: Die geografischen Daten basieren auf GPS, wenn GPS verfügbar ist, andernfalls auf IP.

Arjun
quelle
2
watchPositionstatt getCurrentPositionspart 5 Bytes. alert([(y=x.coords).latitude,y.longitude])spart 2 weitere
Johan Karlsson
1 Zeichen kürzer, wirft einen Fehler:for(f in r=navigator.geolocation)r=r[f](x=>alert((y=x.coords).latitude+","+y.longitude))
user2428118
3
Es ist in der Tat eine seltene Gelegenheit, in der JS wettbewerbsfähig sein kann, wenn es sich auf zu lange Immobiliennamen verlässt.
Shaggy
@JohanKarlsson Danke! Implementierte es!
Arjun
@ Shaggy True, in der Tat.
Arjun
8

Python mit Anfragen, 101 100 75 Bytes

4 Bytes dank @ КириллМалышев gespeichert

21 Bytes gespart dank @Rod

from requests import*;print(get('http://su0.ru/auls').text.split(',')[5:7])
Uriel
quelle
Wenn dies Python 2 ist, können Sie 1 Byte speichern, indem Sie die Klammer entfernen
Wondercricket
Vielleicht ist es besser, eine kurze URL zu verwenden? Zum Beispiel su0.ru/auls . Sie sparen also 4 Bytes.
Кирилл Малышев
Sie brauchen nicht alle diese Formatierung, from requests import*;print(get('http://ip-api.com/json').text.split(',')[5:7])sollte genug sein
Rod
Verbindung ist unterbrochen! Wenn Sie einen URL-Shortener verwenden, verwenden Sie am besten einen etablierten.
Jakob
5

PowerShell, 130 Bytes

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

Ungolfed:

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.

Rückgabe als:

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

Es stellt sich heraus, dass es einen Weg gibt, dies zu tun, aber es ist nicht so hübsch.

Bonus: Öffnet Google Maps für Ihren aktuellen Standort.

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"

könnte 3 Bytes einsparen, TryStartaber es gibt a truean die Pipeline aus und kostet mehr, um dies zu unterdrücken.

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

PowerShell (nicht konkurrierend), 44 Bytes

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

Verwendet einen externen Dienst, da PowerShell keine internen Funktionen für den aktuellen Standort hat. Dies ist eine IP-basierte Geolokalisierung. Daher wird Ihr tatsächlicher Standort so gut wie nicht zurückgegeben, sondern ein Standardstandort für Ihren Internetdienstanbieter Dies über ein VPN wird überall dort angezeigt, wo sich der Austrittspunkt befindet.

Ich habe versucht (nicht als Golfübung), Google Maps API für die Verwendung mit der Geolokalisierungsmethode für drahtlose Mac-Adressen zu verwenden, aber es ist alles andere als genau und nicht golffähig.

Aufgrund der Ungenauigkeit der Ergebnisse als nicht konkurrierend gekennzeichnet.

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

Dies wird Central Dublin, Irelandbeim Aufsuchen angezeigt , allerdings bin ich derzeit etwas außerhalb des Stadtzentrums, ungefähr 8 Meilen vom zurückgegebenen Punkt entfernt.

colsw
quelle
In C # GeoCoordinateWatchergibt es eine TryStartMethode, die Sie ausprobieren können und die so aussieht, als würde sie zurückgegeben, wenn sich der Status in Readyeiner Schleife befindet. Wenn diese Methode offensichtlich verfügbar ist.
TheLethalCoder
1
@TheLethalCoder war das erste, was ich mir ansah. In dem dortigen Beispiel wurde hinzugefügt, dass es insgesamt nur 3 Bytes spart, aber a truein die Pipeline ausgibt, bevor ich lat / long ausgeben kann, und ich denke, dass es wahrscheinlich die Spezifikation verletzt, wenn das ausgegeben wird .
Colsw
@TheLethalCoder könnte ein oder mehrere Bytes auf dem [int]9e8Teil speichern, wenn Sie die Zeitüberschreitung einstellen, TryStartaber ich kann nicht damit arbeiten 9999999und [int]9e8ist das gleiche wie das Hinzufügen einer zusätzlichen 9.
colsw
2

(nicht konkurrierend) Angolf , 110 107 Bytes

❦™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
dieser eine Benutzer
quelle
1
Willkommen auf der Seite! Ich kann anscheinend keine Informationen über Angolf finden. Würde es Ihnen etwas ausmachen, seine Website zu verlinken?
ETHproductions
github.com/XtremePlayzCODE/angled/blob/master/angolf.js , Entschuldigung für die späte Antwort
thatoneuser
1
Willkommen auf der Seite! Hast du einen älteren Link als diesen? Andernfalls wird die Sprache als neuer als die Herausforderung angesehen. Es ist Brauch, Antworten in Sprachen zu markieren, die neuer sind als die Herausforderung mit (nicht konkurrierend) im Titel
Destructible Lemon
Ich habe Angolf seit 3 ​​Monaten, aber ich habe es gerade auf GitHub hochgeladen, da es vorher keinen Link hatte
Benutzer
@dieser Benutzer muss leider eine veröffentlichte Sprache haben, um als "konkurrierend" gekennzeichnet zu werden. Bitte kennzeichnen Sie diese als nicht konkurrierend.
Rohan Jhunjhunwala
0

C #, 132 Bytes

_=>{var w=new System.Device.Location.GeoCoordinateWatcher();w.Start();var c=w.Position.Location;return c.Longitude+","+c.Latitude;};
TheLethalCoder
quelle
0

Excel VBA (nur Windows, Office 2016+), 278 272 Bytes

Beschränkt auf Windows, Office 2016+ für die Verwendung von Microsoft.Mashup.OleDb.1 Anbieter

Volle subRoutine, die keine Eingabe annimmt und Ihren aktuellen Standort als ausgibtExcel.ListObject typisierte Tabelle einschließlich zusätzlicher Informationen .

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

Beispielausgabe aus offensichtlichen Gründen ausgeschlossen.

-2 Bytes für die Verwendung von [Sheet1]überSheets(1)

Taylor Scott
quelle
0

Swift 4 , 125 117 96 Bytes

Dies kann leider nur lokal getestet werden.

import CoreLocation;var c=CLLocationManager().location!.coordinate;print(c.longitude,c.latitude)
Mr. Xcoder
quelle