Err, ¿dónde estoy?

26

¡Oh no! Estoy atrapado en un gran bosque (bueno, en realidad no, pero solo asúmalo) y no sé dónde estoy.

Afortunadamente, traje mi laptop. Pero cuando busqué 'Mapas', decía 'Sin resultados', y estoy preguntando esto como último recurso.

Haga un programa que genere la longitud y latitud de mi ubicación en cualquier formato de dos números. any two number formatincluye:

  • Una tupla
  • Una cadena que incluye la longitud y la latitud.
  • Un objeto JSON.
  • etc.

Se puede usar cualquier API o Bibliotecas. Es decir, puede consultar Google Maps, etc. (supongo, no tiraron a la basura sus API: \)

Matthew Roh
fuente
19
PowerShell tiene glpara Get-Location, lamentablemente, no creo que C:\Users\Connorte ayude a escapar mucho del bosque.
colsw
C: \ Users \ @Connor> sudo yes
Matthew Roh

Respuestas:

72

Mathematica, 4 bytes

Err, ¿dónde estoy?

Here

Evalúa a GeoPosition[{latitude, longitude}].

Martin Ender
fuente
55
o_O Mathematica tenía algo incorporado para esto?
Matthew Roh
44
@SIGSEGV Por supuesto ... (fragmento # 4)
Martin Ender
33
Mathematica tiene algo para todo
Skidsdev
10
Aún mejor: el comando Sunset[Here] - Nowdevuelve correctamente la cantidad de tiempo hasta el atardecer.
Greg Martin
44
Me divierte ver una respuesta con más votos que la pregunta. Felicidades
Matthew
11

JavaScript (ES6), 89 82 bytes

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

Pruébalo en línea! (Por alguna razón, esto no funcionaba en el fragmento).

Explicación

navigatorobjeto es una parte de BOM . geolocationes una propiedad de él y también es un objeto, que contiene datos geolocalizantes del usuario. watchPosition()Es un método de geolocationobjeto. Toma una función de devolución de llamada que se ejecuta después de recuperar los datos geolocalizados. La función de devolución de llamada x=>alert((y=x.coords).latitude+","+y.longitude)es una función anónima (lambda) que toma en un objeto xy alert()es la latitudey longitudepropiedades de los x.coordsseparados por una coma. Tenga en cuenta que el objeto xse pasa a la función de devolución de llamada watchPosition()cuando se llama a la función de devolución de llamada (es decir, después de la recuperación de los datos geolocalizados).


Nota: Los datos de geolocalización se basan en GPS si el GPS está disponible; de ​​lo contrario, se basa en IP.

Arjun
fuente
2
watchPositionen lugar de getCurrentPositionguardar 5 bytes. alert([(y=x.coords).latitude,y.longitude])ahorra 2 más
Johan Karlsson
1 carácter más corto, arroja un error:for(f in r=navigator.geolocation)r=r[f](x=>alert((y=x.coords).latitude+","+y.longitude))
user2428118
3
De hecho, es una rara ocasión cuando JS puede ser competitivo mientras confía en sus nombres de propiedad demasiado largos.
Shaggy
@JohanKarlsson ¡Gracias! ¡Lo implementé!
Arjun
@Shaggy True, de hecho.
Arjun
8

Python con las solicitudes, 101 100 75 bytes

4 bytes guardados gracias a @ КириллМалышев

21 bytes guardados gracias a @Rod

from requests import*;print(get('http://su0.ru/auls').text.split(',')[5:7])
Uriel
fuente
Si se trata de Python 2, puede guardar 1 byte eliminando el paréntesis
Wondercricket,
¿Quizás es mejor usar una URL corta? Por ejemplo, su0.ru/auls . Entonces ahorrará 4 bytes.
Кирилл Малышев
No necesita todo este formato, from requests import*;print(get('http://ip-api.com/json').text.split(',')[5:7])debería ser suficiente
Rod
¡El enlace está roto! Si va a usar un acortador de URL, lo mejor es usar uno establecido.
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

Sin golf:

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.

Devoluciones como:

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

Resulta que hay una manera de hacer esto, pero no es tan bonita.

bono: abre google maps en tu ubicación actual.

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"

podría ahorrar 3 bytes usando, TryStartpero genera una salida truea la tubería y cuesta más suprimir eso.

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

PowerShell (no competidor), 44 bytes

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

Utiliza un servicio externo ya que PowerShell no tiene funciones internas integradas para la 'ubicación actual'; esta es una geolocalización basada en IP, por lo que casi definitivamente no devolverá su ubicación real, devolverá una ubicación 'predeterminada' para su ISP, y si ejecuta esto sobre una VPN se presentará donde sea que esté el punto de salida.

Intenté (no como un ejercicio de golf) hacer que la API de Google Maps funcione con el método de geolocalización de direcciones MAC inalámbricas, pero está lejos de ser precisa o golfable.

marcado como no competidor debido a la inexactitud de los resultados.

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

esto aparece Central Dublin, Irelandcuando se busca, sin embargo, actualmente estoy un poco fuera del centro de la ciudad, a unas 8 millas del punto de regreso.

colsw
fuente
En C #, GeoCoordinateWatchertiene un TryStartmétodo que puede probar que parece que regresa cuando el estado es en Readylugar de recorrerlo. Si ese método está disponible obviamente.
TheLethalCoder
1
@TheLethalCoder fue lo primero que analicé, agregado en el ejemplo allí, solo guarda 3 bytes en general, pero volca truea la tubería antes de que pueda generar el lat / long, y creo que probablemente viola la especificación cuando se genera .
colsw
@TheLethalCoder podía factible guardar un byte (s) en la [int]9e8parte cuando se establece el tiempo de espera en TryStartpero no puedo conseguir que funcione con 9999999y [int]9e8es lo mismo que añadir un extra 9.
colsw
2

(no competitivos) 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
thatoneuser
fuente
1
Bienvenido al sitio! Parece que no puedo encontrar ninguna información sobre Angolf; ¿te importaría vincular su sitio web?
ETHproductions
github.com/XtremePlayzCODE/angled/blob/master/angolf.js , Perdón por la respuesta tardía
usuario
1
Bienvenido al sitio! ¿tienes un enlace más antiguo que este? si no, el lenguaje se considera más nuevo que el desafío. es costumbre marcar las respuestas en idiomas más nuevos que el desafío con (sin competencia) en el título
Destructible Lemon
He tenido Angolf durante 3 meses, pero ahora lo he subido a GitHub ya que no tenía un enlace antes
usuario
@thatoneuser desafortunadamente en esta vista los idiomas deben haber sido publicados para ser marcados como "competidores", márquelo como no competitivo (esto significa que puede participar y obtener votos positivos, pero será considerado para una marca de tic aceptada.
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
fuente
0

Excel VBA (Windows, Office 2016+ solamente), 278 272 bytes

Restringido a Windows, Office 2016+ para el uso del Microsoft.Mashup.OleDb.1proveedor

subRutina completa que no requiere entrada y da salida a su ubicación actual como una Excel.ListObjecttabla escrita, incluida información adicional.

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

Ejemplo de salida excluido por razones obvias.

-2 Bytes para uso de [Sheet1]más deSheets(1)

Taylor Scott
fuente
0

Swift 4 , 125117 96 bytes

Esto solo se puede probar localmente, desafortunadamente.

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