Ơ, tôi đang ở đâu?


26

Ồ không! Tôi bị mắc kẹt trong một khu rừng lớn (Được rồi, không thực sự, nhưng chỉ giả sử nó) và tôi không biết mình đang ở đâu!

Rất may, tôi đã mang máy tính xách tay của tôi. Nhưng khi tôi tìm kiếm 'Bản đồ', nó nói 'Không có kết quả' và tôi đang hỏi đây là phương sách cuối cùng.

Vui lòng tạo một chương trình xuất ra kinh độ và vĩ độ của vị trí của tôi ở bất kỳ định dạng hai số nào. any two number formatbao gồm:

  • Một tuple.
  • Một chuỗi bao gồm kinh độ và vĩ độ.
  • Một đối tượng JSON.
  • v.v.

Bất kỳ API hoặc Thư viện có thể được sử dụng. Đó là, Bạn có thể truy vấn Google Maps, v.v. (Tôi đoán, Họ đã không rác API của họ: \)


19
PowerShell đã gllàm Get-Location, thật đáng buồn, tôi không nghĩ C:\Users\Connorsẽ giúp bạn thoát khỏi khu rừng rất nhiều.
colsw

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

Câu trả lời:


72

Toán học, 4 byte

Ơ, tôi đang ở đâu?

Here

Đánh giá để GeoPosition[{latitude, longitude}].


5
o_O Mathematica đã tích hợp sẵn cho việc này?
Matthew Roh

4
@SIGSEGV Tất nhiên ... (đoạn số 4)
Martin Ender

33
Mathematica có sẵn nội dung cho mọi thứ
Skidsdev

10
Thậm chí tốt hơn: lệnh Sunset[Here] - Nowtrả lại chính xác lượng thời gian cho đến khi mặt trời lặn.
Greg Martin

4
Tôi thích thú khi thấy một câu trả lời có nhiều phiếu hơn câu hỏi này. Chúc mừng 👏👏👏
Matthew Roh

11

JavaScript (ES6), 89 82 byte

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

Hãy thử trực tuyến! (Vì một số lý do, điều này không hoạt động trong đoạn trích).

Giải trình

navigatorđối tượng là một phần của BOM . geolocationlà một thuộc tính của nó và cũng là một đối tượng, chứa dữ liệu địa lý của người dùng. watchPosition()là một phương thức của geolocationđối tượng. Nó nhận một chức năng gọi lại được thực hiện sau khi dữ liệu địa lý đã được lấy. Hàm gọi lại x=>alert((y=x.coords).latitude+","+y.longitude)là một hàm ẩn danh (lambda) nhận trong một đối tượng xalert()slatitudelongitude thuộc tính và các thuộc tính được x.coordsphân tách bằng dấu phẩy. Lưu ý rằng đối tượng xđược chuyển đến chức năng gọi lại bằng cách watchPosition()khi chức năng gọi lại được gọi (tức là sau khi truy xuất dữ liệu địa lý).


Lưu ý: Dữ liệu địa lý dựa trên GPS nếu có sẵn GPS, nếu không thì dựa trên IP.


2
watchPositionthay vì getCurrentPositiontiết kiệm 5 byte. alert([(y=x.coords).latitude,y.longitude])tiết kiệm thêm 2
Johan Karlsson

for(f in r=navigator.geolocation)r=r[f](x=>alert((y=x.coords).latitude+","+y.longitude))
Ngắn

3
Thực sự đó là một dịp hiếm hoi khi JS có thể cạnh tranh trong khi dựa vào tên tài sản quá dài của nó.
Xù xì

@JohanKarlsson Cảm ơn! Thực hiện nó!
Arjun

@Shaggy Đúng, thực sự.
Arjun

8

Python với yêu cầu, 101 100 75 byte

4 byte được lưu nhờ vào @ииииииии

21 byte được lưu nhờ @Rod

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

Nếu đây là Python 2, bạn có thể lưu 1 byte bằng cách xóa dấu ngoặc đơn
Wondercricket

Có lẽ tốt hơn là sử dụng một url ngắn? Ví dụ: su0.ru/auls . Vì vậy, bạn sẽ tiết kiệm được 4 byte.
Ứng dụng này có

Bạn không cần tất cả định dạng này, from requests import*;print(get('http://ip-api.com/json').text.split(',')[5:7])nên là đủ
Rod

Liên kết bị hỏng! Nếu bạn sẽ sử dụng một công cụ rút ngắn URL, tốt nhất nên sử dụng một công cụ đã được thiết lập.
Jakob

5

PowerShell, 130 byte

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

Ung dung:

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.

Trả về như:

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

Hóa ra có một cách để làm điều này, nhưng nó không quá đẹp.

phần thưởng: mở google maps trên vị trí hiện tại của bạn.

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"

có thể tiết kiệm 3 byte bằng cách sử dụng TryStartnhưng nó xuất ra một trueđường ống và chi phí cao hơn để triệt tiêu điều đó.

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

PowerShell (không cạnh tranh), 44 Byte

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

Sử dụng dịch vụ bên ngoài vì PowerShell không có nội dung bên trong cho 'vị trí hiện tại' - đây là Định vị địa lý dựa trên IP, do đó gần như chắc chắn sẽ không trả lại vị trí thực của bạn, nó sẽ trả về vị trí 'mặc định' cho ISP của bạn và nếu bạn chạy cái này qua VPN sẽ xuất hiện bất cứ nơi nào có điểm thoát.

Tôi đã thử (không phải là một bài tập golf) để làm cho API bản đồ google hoạt động với phương pháp định vị địa lý không dây-mac, nhưng nó không chính xác hoặc có thể chơi được.

đánh dấu là không cạnh tranh do tính không chính xác của kết quả.

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

màn hình này Central Dublin, Irelandkhi đã tìm kiếm lên, tuy nhiên tôi là một chút bên ngoài trung tâm thành phố hiện nay, khoảng 8 dặm từ điểm trở lại.


Trong C #, GeoCoordinateWatchercó một TryStartphương thức mà bạn có thể thử, nó trông giống như nó trả về khi trạng thái Readythay vì lặp trên nó. Nếu phương pháp đó có sẵn rõ ràng.
TheLethalCoder

1
@TheLethalCoder là điều đầu tiên tôi nhìn vào, thêm vào trong ví dụ đó, nó chỉ tiết kiệm 3 byte tổng thể, nhưng nó bãi một trueđể đường ống trước khi tôi có thể xuất lat / long, và tôi nghĩ rằng nó có thể vi phạm spec khi đó là đầu ra .
colsw

@TheLethalCoder có thể lưu một phần byte một cách khả thi [int]9e8khi bạn đặt thời gian chờ TryStartnhưng tôi không thể làm việc với nó 9999999[int]9e8giống như thêm một 9.
colsw

2

(không cạnh tranh) Angolf , 110 107 byte

❦™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
Chào mừng đến với trang web! Tôi dường như không thể tìm thấy bất kỳ thông tin nào về Angolf; bạn có phiền khi liên kết trang web của nó?
Sản phẩm ETH


1
Chào mừng đến với trang web! Bạn có một liên kết cũ hơn này? nếu không, ngôn ngữ được coi là mới hơn thách thức. đó là tùy chỉnh để đánh dấu các câu trả lời bằng các ngôn ngữ mới hơn so với thử thách với (không cạnh tranh) trong tiêu đề
Lemon

Tôi đã có Angolf được 3 tháng rồi nhưng tôi mới tải nó lên GitHub vì nó không có liên kết trước đó
thatoneuser

@thatoneuser không may về ngôn ngữ thị giác này cần phải được xuất bản để được đánh dấu là "cạnh tranh", vui lòng đánh dấu nó là không lọc (điều này có nghĩa là bạn có thể tham gia và thu hút các upvote, nhưng bạn sẽ được xem xét cho một dấu hiệu tic được chấp nhận.
Rohan Jhunjhunwala

0

C #, 132 byte

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

0

VBA Excel (Chỉ dành cho Windows, Office 2016+), 278 272 byte

Giới hạn đối với Windows, Office 2016+ đối với việc sử dụng Microsoft.Mashup.OleDb.1nhà cung cấp

Toàn bộ subthói quen không có đầu vào và đầu ra vị trí hiện tại của bạn dưới dạng Excel.ListObjectbảng đã nhập, bao gồm thông tin bổ sung.

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

Ví dụ đầu ra loại trừ vì lý do rõ ràng.

-2 byte để sử dụng [Sheet1]hơnSheets(1)


0

Swift 4 , 125 117 96 byte

Điều này chỉ có thể được thử nghiệm tại địa phương, không may.

import CoreLocation;var c=CLLocationManager().location!.coordinate;print(c.longitude,c.latitude)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.