Эрр, где я?


26

о нет! Я пойман в ловушку в большом лесу (хорошо, не совсем, но только предположите это), и я не знаю, где я!

К счастью, я принес свой ноутбук. Но когда я искал «Карты», там было «Нет результатов», и я прошу об этом в качестве крайней меры.

Пожалуйста, создайте программу, которая выводит долготу и широту моего местоположения в любом двухзначном формате. any two number formatвключает:

  • Кортеж
  • Строка, включающая долготу и широту.
  • Объект JSON.
  • так далее..

Любой API или библиотеки могут быть использованы. То есть вы можете запросить Google Maps и т. Д. (Я думаю, они не уничтожили свои API: \)


19
PowerShell glдля Get-Location, к сожалению, я не думаю, C:\Users\Connorчто поможет вам очень бежать из леса.
Colsw

C: \ Users \ @Connor> sudo yes
Мэтью Ро

Ответы:


72

Mathematica, 4 байта

Эрр, где я?

Here

Оценивает до GeoPosition[{latitude, longitude}].


5
о_О Mathematica была встроена для этого?
Мэтью Ро

4
@SIGSEGV Конечно ... (фрагмент № 4)
Мартин Эндер

33
Mathematica имеет встроенный для всего
Skidsdev

10
Еще лучше: команда Sunset[Here] - Nowкорректно возвращает количество времени до заката.
Грег Мартин

4
Я удивлен, что у ответа больше голосов, чем у вопроса. Поздравляю 👏👏👏
Мэтью Ро

11

JavaScript (ES6), 89 82 байта

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

Попробуйте онлайн! (По какой-то причине это не работает во фрагменте).

объяснение

navigatorОбъект является частью спецификации . geolocationявляется свойством его, а также является объектом, который содержит геолокационные данные пользователя. watchPosition()это метод geolocationобъекта. Он принимает функцию обратного вызова, которая выполняется после получения геолокационных данных. Функция обратного вызова x=>alert((y=x.coords).latitude+","+y.longitude)является функцией анонимного (лямбда) , который принимает в качестве объекта xи alert()х годов latitudeи longitudeсвойства x.coordsразделены запятой. Обратите внимание, что объект xпередается в функцию обратного вызова, watchPosition()когда вызывается функция обратного вызова (то есть после получения геолокационных данных).


Примечание . Географические данные основаны на GPS, если GPS доступен, в противном случае они основаны на IP.


2
watchPositionвместо getCurrentPositionсохранения 5 байтов. alert([(y=x.coords).latitude,y.longitude])сохраняет еще 2
Йохан Карлссон

На 1 символ короче, выдает ошибку:for(f in r=navigator.geolocation)r=r[f](x=>alert((y=x.coords).latitude+","+y.longitude))
user2428118

3
Действительно, это редкий случай, когда JS может быть конкурентоспособным, полагаясь на его слишком длинные имена свойств.
Лохматый

@JohanKarlsson Спасибо! Реализовал это!
Арджун

@ Шэгги Правда, действительно.
Арджун

8

Питон с запросами, 101 100 75 байт

4 байта сэкономлено благодаря @ КириллМалышев

21 байт сохранен благодаря @Rod

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

Если это Python 2, вы можете сэкономить 1 байт, удалив скобки
Wondercricket

Может быть, лучше использовать короткий URL? Например, su0.ru/auls . Таким образом, вы сэкономите 4 байта.
Кирилл Малышев

Вам не нужно все это форматирование, from requests import*;print(get('http://ip-api.com/json').text.split(',')[5:7])должно быть достаточно
Род

Ссылка не работает! Если вы собираетесь использовать сокращатель URL, лучше всего использовать установленный.
Якоб

5

PowerShell, 130 байт

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.

Возвращает как:

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

Оказывается, есть способ сделать это, но это не так красиво.

бонус: открывает карты Google на вашем текущем местоположении.

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"

может сэкономить 3 байта, используя, TryStartно он выводит a trueв конвейер и стоит больше, чтобы подавить это.

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

PowerShell (неконкурентный), 44 байта

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

Использует внешнюю службу, поскольку PowerShell не имеет внутренних встроенных функций для «текущего местоположения» - это геолокация на основе IP, поэтому почти наверняка не вернет ваше фактическое местоположение, он вернет местоположение «по умолчанию» для вашего провайдера, и если вы запустите это через VPN будет присутствовать везде, где есть точка выхода.

Я пытался (не в качестве упражнения для игры в гольф) заставить API карт Google работать с методом геолокации беспроводных MAC-адресов, но он далек от точного или пригодного для игры в гольф.

помечены как неконкурентные из-за неточности результатов.

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

отображается Central Dublin, Irelandпри поиске, однако я нахожусь немного за пределами центра города, примерно в 8 милях от возвращенной точки.


В C # GeoCoordinateWatcherесть TryStartметод, который вы можете попробовать, который выглядит так, как будто он возвращает состояние, Readyа не зацикливается на нем. Если этот метод доступен, очевидно.
TheLethalCoder

1
@TheLethalCoder была первой вещью, которую я посмотрел, добавила в пример там, она сохраняет всего 3 байта в целом, но выдает дамп trueв конвейер, прежде чем я могу вывести широту / долготу , и я думаю, что, вероятно, нарушает спецификацию, когда она выводится ,
colsw

@TheLethalCoder может реально сохранить байт (ы) на [int]9e8части, когда вы установите тайм-аут, TryStartно я не могу заставить его работать, 9999999и [int]9e8это то же самое, что добавить дополнительные 9.
colsw

2

(неконкурентный) Ангольф , 110 107 байтов

❦™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
Добро пожаловать на сайт! Кажется, я не могу найти информацию об Ангольфе; Не могли бы вы связать свой сайт?
ETHproductions


1
Добро пожаловать на сайт! у вас есть более старая ссылка, чем эта? если нет, то язык считается более новым, чем проблема. в заголовке принято помечать ответы на языках, более новых, чем
Разрушаемый лимон»,

У меня был Angolf в течение 3 месяцев, но я только что загрузил его на GitHub, так как раньше у него не было ссылки
thatoneuser

@thatoneuser, к сожалению, на этом сайте языки должны быть опубликованы, чтобы пометить их как «конкурирующие», пожалуйста, пометьте их как неконкурентные (это означает, что вы можете участвовать и набирать голоса, но вас будут считать приемлемым тиковым знаком.
Rohan Jhunjhunwala

0

C #, 132 байта

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

0

Excel VBA (только для Windows, Office 2016+), 278 272 байта

Только для Windows, Office 2016+ для использования Microsoft.Mashup.OleDb.1провайдером

Полная subпроцедура, которая не требует ввода и выводит ваше текущее местоположение в виде Excel.ListObjectтипизированной таблицы, включая дополнительную информацию.

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

Пример вывода исключен по понятным причинам.

-2 байта для использования [Sheet1]болееSheets(1)


0

Swift 4 , 125 117 96 байт

Это может быть проверено только локально, к сожалению.

import CoreLocation;var c=CLLocationManager().location!.coordinate;print(c.longitude,c.latitude)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.