Err, neredeyim?


26

Oh hayır! Büyük bir ormanda sıkışıp kaldım (Tamam, tam olarak değil ama sadece farz et) ve nerede olduğumu bilmiyorum!

Neyse ki, dizüstü bilgisayarımı getirdim. Ama 'Haritalar'ı aradığımda,' Sonuç yok 'dedi ve bunu son çare olarak soruyorum.

Lütfen konumumun boylamını ve enlemlerini herhangi iki sayı biçiminde çıkaran bir program yapın. any two number formatiçerir:

  • Bir demet.
  • Boylam ve enlem içeren bir dize.
  • Bir JSON Nesnesi.
  • vb..

Herhangi bir API veya Kütüphaneler kullanılabilir. Diğer bir deyişle, Google Haritalar'ı vb. Sorgulayabilirsiniz . (Sanırım, API'larını bozmadılar: \)


19
PowerShell sahiptir gliçin Get-Locationne yazık ki sanmıyorum, C:\Users\Connorsize çok orman kaçış yardımcı olacaktır.
colsw

C: \ Users \ @Connor> sudo evet
Matthew Roh

Yanıtlar:


72

Mathematica, 4 bayt

Err, neredeyim?

Here

İçin değerlendirir GeoPosition[{latitude, longitude}].


5
o_O Mathematica'nın bunun için bir yerleşimi var mıydı?
Matthew Roh

4
Tabii ki ... @SIGSEGV (snippet # 4)
Martin Ender

33
Mathematica'da her şey için bir yapı var
Skidsdev

10
Daha da iyisi: komut Sunset[Here] - Nowdoğru gün batımına kadar olan süre miktarını döndürür.
Greg Martin,

4
Bu sorudan daha fazla oy alan bir cevap görmek beni çok eğlendirdi. Tebrikler 👏👏👏
Matthew Roh

11

JavaScript (ES6), 89 82 bayt

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

Çevrimiçi deneyin! (Bazı nedenlerden dolayı, bu snippet'te çalışmıyordu).

açıklama

navigatornesne malzeme listesinin bir parçasıdır . geolocationonun bir özelliğidir ve ayrıca kullanıcının coğrafi verilerini içeren bir nesnedir. watchPosition()bir geolocationnesnenin yöntemidir . Coğrafi konum verilerinin alınmasından sonra yürütülen bir geri çağırma işlevi alır. Geri arama fonksiyonu x=>alert((y=x.coords).latitude+","+y.longitude), bir nesne alan bir anonim (lamda) fonksiyonu xve alert()s latitudeve longitudeözellikleri x.coordsvirgülle ayrılmış. Nesnenin x, geri watchPosition()arama işlevi çağrıldığında geri çağrılma işlevine geçirildiğine dikkat edin (ör. Coğrafi konum verilerinin alınmasından sonra).


Not: Coğrafi konum verileri, GPS varsa GPS tabanlıdır, aksi takdirde IP tabanlıdır.


2
watchPositiongetCurrentPosition5 bayt yerine kaydeder. alert([(y=x.coords).latitude,y.longitude])2 tasarruf daha yaptı
Johan Karlsson

1 karakter daha kısa, bir hata atar:for(f in r=navigator.geolocation)r=r[f](x=>alert((y=x.coords).latitude+","+y.longitude))
user2428118

3
Gerçekten de, JS'nin aşırı uzun mülk adlarına güvenerek rekabetçi olabileceği nadir bir durumdur.
Shaggy,

@JohanKarlsson Teşekkürler! Uygulandı!
Arjun

@Shaggy Doğru, gerçekten.
Arjun

8

İstekleri ile Python, 101 100 75 bayt

@ КириллМалышев sayesinde 4 bayt kurtarıldı

@Rod sayesinde 21 bayt kaydedildi

from requests import*;print(get('http://su0.ru/auls').text.split(',')[5:7])

Bu Python 2 ise parantezi kaldırarak 1 byte kazanabilirsiniz
Wondercricket

Belki kısa bir URL kullanmak daha iyidir? Örneğin, su0.ru/auls . Böylece 4 bayttan tasarruf edersiniz.
Кирилл Малышев

Tüm bu biçimlendirmelere ihtiyacınız yok, from requests import*;print(get('http://ip-api.com/json').text.split(',')[5:7])yeterli olmalı
Rod

Bağlantı koptu! Bir URL kısaltıcı kullanacaksanız, yerleşik bir URL kullanmak en iyisidir.
Jakob

5

PowerShell, 130 Bayt

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.

Döndürür:

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

Bunu yapmanın bir yolu var, ama o kadar hoş değil.

bonus: mevcut konumunuzda google maps açar.

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"

kullanarak 3 bayt kurtarabilir, TryStartancak trueboru hattına bir çıktı verir ve bunu bastırmak daha pahalıya mal olur.

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

PowerShell (rekabet etmeyen), 44 Bayt

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

PowerShell 'geçerli konum' için dahili yerleşiklere sahip olmadığından harici bir hizmet kullanır - bu IP tabanlı Coğrafi Konumdur, bu nedenle neredeyse kesinlikle gerçek konumunuzu döndürmez, ISS'niz için 'varsayılan' bir konum döndürür ve çalıştırırsanız Bu, bir VPN üzerinden çıkış noktasının olduğu yerde olacaktır.

Kablosuz haritalar adresindeki coğrafi konumlandırma yöntemiyle çalışacak Google Maps API'sini almaya çalıştım (bir golf egzersizi olarak değil), ancak doğru veya golf oynamaktan çok uzak.

sonuçların yanlışlığı nedeniyle rekabet etmeyen olarak işaretlendi.

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

Bu Central Dublin, Ireland, arandığında görüntülenir , ancak şu anda şehir merkezinin biraz dışında, döndüğüm noktadan yaklaşık 8 mil uzaktayım.


C # 'da GeoCoordinateWatcher, TryStartdurum Readyüzerinde döngü yapmak yerine döndürdüğü zamana benzeyen, deneyebileceğiniz bir yöntem vardır . Bu yöntem açıkça mevcutsa.
TheLethalCoder

1
@ TheLethalCoder ilk baktığım şeydi, buna örnek olarak ekledi, sadece genel olarak 3 byte tasarruf sağlıyor, ancak truelat / long çıktısını vermeden önce a boru hattına atar ve sanırım çıktı olduğunda spekülasyonu ihlal ettiğini düşünüyorum .
colsw

@TheLethalCoder [int]9e8, zaman aşımı süresini ayarladığınızda parça üzerinde bir bayt (lar) tasarruf TryStartsağlayabilir , ancak çalışmasını sağlayamıyorum 9999999ve [int]9e8fazladan 9 eklemekle aynı
şeydir

2

(rekabet etmeyen) Angolf , 110 107 bayt

❦™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

1
Siteye Hoşgeldiniz! Angolf hakkında hiçbir bilgi bulamıyorum; kendi web sitesini birbirine bağlar mısın?
ETHProductions


1
Siteye Hoşgeldiniz! Bundan daha eski bir bağlantın var mı? değilse, dilin zorluktan daha yeni olduğu kabul edilir. Mücadeleden daha zor olan dillerdeki cevapları başlıksız (rekabet etmeyen) ile işaretlemek gelenekseldir
Destruct Lemon

Ben şimdi 3 aydır Angolf yaşadım ama önce bir bağlantı yoktu gibi ben sadece şimdi GitHub'dan yüklerken
thatoneuser

thatoneuser, maalesef bu bakışta dillerin "rekabet edici" olarak işaretlenmesi için yayınlanmış olmaları gerekiyor, lütfen rekabet etmeyen olarak işaretleyin (bu, katılabileceğiniz ve artı puan alabileceğiniz anlamına gelir, ancak kabul edilen bir tik işareti olarak değerlendirileceksiniz.
Rohan Jhunjhunwala

0

C #, 132 bayt

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

0

Excel VBA (Windows, Yalnızca Office 2016+), 278 272 Bayt

Microsoft.Mashup.OleDb.1Sağlayıcının kullanımı için Windows, Office 2016+ ile sınırlıdır

subGiriş yapmayan ve geçerli konumunuzuExcel.ListObject , ek bilgi de dahil olmak üzere, yazılan bir tablo olarak veren tam yordam .

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

Örnek çıktılar bariz nedenlerden dolayı dışlandı.

-2 [Sheet1]üstü kullanım için baytSheets(1)


0

Swift 4 , 125 117 96 bayt

Bu ne yazık ki sadece yerel olarak test edilebilir.

import CoreLocation;var c=CLLocationManager().location!.coordinate;print(c.longitude,c.latitude)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.