Euh, où suis-je?

26

Oh non! Je suis pris au piège dans une grande forêt (d'accord, pas vraiment, mais suppose-le) et je ne sais pas où je suis!

Heureusement, j'ai apporté mon ordinateur portable. Mais quand j'ai recherché «Cartes», il a dit «Aucun résultat», et je le demande en dernier recours.

Veuillez créer un programme qui génère la longitude et la latitude de mon emplacement dans n'importe quel format à deux chiffres. any two number formatcomprend:

  • Un tuple.
  • Une chaîne incluant la longitude et la latitude.
  • Un objet JSON.
  • etc..

Toute API ou bibliothèque peut être utilisée. Autrement dit, vous pouvez interroger Google Maps, etc. (je suppose, ils n'ont pas mis à la poubelle leurs API: \)

Matthew Roh
la source
19
PowerShell a glpour Get-Location, malheureusement, je ne pense pas que C:\Users\Connorcela vous aidera beaucoup à échapper à la forêt.
colsw
C: \ Users \ @Connor> sudo yes
Matthew Roh

Réponses:

72

Mathematica, 4 octets

Euh, où suis-je?

Here

Évalue à GeoPosition[{latitude, longitude}].

Martin Ender
la source
5
o_O Mathematica avait une fonction intégrée pour cela?
Matthew Roh
4
@SIGSEGV Bien sûr ... (extrait # 4)
Martin Ender
33
Mathematica a une fonction intégrée pour tout
Skidsdev
10
Encore mieux: la commande Sunset[Here] - Nowrenvoie correctement la durée avant le coucher du soleil.
Greg Martin
4
Je suis amusé de voir une réponse ayant plus de votes que la question. Félicitations
Matthew
11

JavaScript (ES6), 89 82 octets

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

Essayez-le en ligne! (Pour une raison quelconque, cela ne fonctionnait pas dans l'extrait de code).

Explication

navigatorl'objet fait partie de la nomenclature . geolocationest une propriété de son et est également un objet, qui contient des données géolocalisées de l'utilisateur. watchPosition()est une méthode d' geolocationobjet. Il prend en charge une fonction de rappel qui est exécutée après que les données géolocalisées ont été récupérées. La fonction de rappel x=>alert((y=x.coords).latitude+","+y.longitude)est une fonction anonyme (lambda) qui prend un objet xet alert()s les propriétés latitudeet longitudesont x.coordsséparées par une virgule. Notez que l'objet xest transmis à la fonction de rappel au watchPosition()moment de l'appel de la fonction de rappel (c'est-à-dire après la récupération des données géolocalisées).


Remarque: Les données géolocalisées sont basées sur le GPS si le GPS est disponible, sinon elles sont basées sur IP.

Arjun
la source
2
watchPositionau lieu d' getCurrentPositionenregistrer 5 octets. alert([(y=x.coords).latitude,y.longitude])enregistre 2 autres
Johan Karlsson
1 caractère plus court, génère une erreur:for(f in r=navigator.geolocation)r=r[f](x=>alert((y=x.coords).latitude+","+y.longitude))
user2428118
3
C'est une occasion rare en effet où JS peut être compétitif tout en s'appuyant sur ses noms de propriété trop longs.
Shaggy
@JohanKarlsson Merci! Mis en œuvre!
Arjun
@Shaggy True, en effet.
Arjun
8

Python avec requêtes, 101 100 75 octets

4 octets enregistrés grâce à @ КириллМалышев

21 octets économisés grâce à @Rod

from requests import*;print(get('http://su0.ru/auls').text.split(',')[5:7])
Uriel
la source
S'il s'agit de Python 2, vous pouvez économiser 1 octet en supprimant la parenthèse
Wondercricket
Peut-être vaut-il mieux utiliser une URL courte? Par exemple, su0.ru/auls . Vous économiserez donc 4 octets.
Кирилл Малышев
Vous n'avez pas besoin de tout ce formatage, cela from requests import*;print(get('http://ip-api.com/json').text.split(',')[5:7])devrait suffire
Rod
Le lien est rompu! Si vous allez utiliser un raccourcisseur d'URL, mieux vaut utiliser un raccourci établi.
Jakob
5

PowerShell, 130 octets

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

Non 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.

Renvoie comme:

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

Il s'avère qu'il existe un moyen de le faire, mais ce n'est pas si joli.

bonus: ouvre google maps sur votre position actuelle.

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"

pourrait économiser 3 octets en utilisant TryStartmais il génère un truedans le pipeline et coûte plus cher pour supprimer cela.

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

PowerShell (non concurrent), 44 octets

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

Utilise un service externe car PowerShell n'a pas de code interne pour `` l'emplacement actuel '' - il s'agit d'une géolocalisation basée sur IP, donc il ne retournera certainement pas votre emplacement réel, il renverra un emplacement `` par défaut '' pour votre FAI, et si vous exécutez cela sur un VPN présentera où que se trouve le point de sortie.

J'ai essayé (pas comme un exercice de golf) de faire fonctionner l'API Google Maps avec la méthode de géolocalisation sans fil à l'adresse mac, mais c'est loin d'être précis ou jouable au golf.

marqué comme non concurrent en raison de l'inexactitude des résultats.

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

cela s'affiche Central Dublin, Irelandlors de la recherche, mais je suis actuellement un peu en dehors du centre-ville, à environ 8 miles du point de retour.

colsw
la source
En C #, GeoCoordinateWatchera une TryStartméthode que vous pouvez essayer et qui ressemble à ce qu'elle retourne lorsque le statut est Readyau lieu de boucler dessus. Si cette méthode est évidemment disponible.
TheLethalCoder
1
@TheLethalCoder a été la première chose que j'ai examinée, ajouté dans l'exemple ici, il enregistre seulement 3 octets au total, mais il vide un truedans le pipeline avant que je puisse sortir le lat / long, et je pense que cela viole probablement les spécifications quand c'est sorti .
colsw
@TheLethalCoder pourrait éventuellement enregistrer un ou des octets sur la [int]9e8partie lorsque vous définissez le délai, TryStartmais je ne peux pas le faire fonctionner 9999999et [int]9e8c'est la même chose que d'ajouter un 9. supplémentaire
colsw
2

(non concurrente) 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
la source
1
Bienvenue sur le site! Je n'arrive pas à trouver d'informations sur Angolf; Pourriez-vous lier son site Web?
ETHproductions
github.com/XtremePlayzCODE/angled/blob/master/angolf.js , Désolé pour la réponse tardive
thatoneuser
1
Bienvenue sur le site! avez-vous un lien plus ancien que celui-ci? sinon, la langue est considérée comme plus récente que le défi. c'est la coutume de marquer les réponses dans des langues plus récentes que le défi avec (non concurrentes) dans le titre
Destructible Lemon
J'ai eu Angolf depuis 3 mois maintenant mais je viens de le télécharger sur GitHub car il n'avait pas de lien avant
thatoneuser
@thatoneuser malheureusement sur cette vue, les langues doivent avoir été publiées pour être marquées comme "concurrentes" veuillez le marquer comme non compétitif (cela signifie que vous pouvez participer et récolter des votes positifs, mais vous serez considéré pour une marque de tic acceptée.
Rohan Jhunjhunwala
0

C #, 132 octets

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

Excel VBA (Windows, Office 2016+ uniquement), 278 272 octets

Limité à Windows, Office 2016+ pour l'utilisation du Microsoft.Mashup.OleDb.1fournisseur

subRoutine complète qui ne prend aucune entrée et génère votre emplacement actuel sous forme de Excel.ListObjecttableau typé, y compris des informations supplémentaires.

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

Exemple de sortie exclu pour des raisons évidentes.

-2 octets pour l'utilisation de [Sheet1]plusSheets(1)

Taylor Scott
la source
0

Swift 4 , 125117 96 octets

Cela ne peut malheureusement être testé que localement.

import CoreLocation;var c=CLLocationManager().location!.coordinate;print(c.longitude,c.latitude)
M. Xcoder
la source