เอ่อฉันอยู่ไหน


26

ไม่นะ! ฉันติดอยู่ในป่าใหญ่ (โอเคไม่ใช่จริง ๆ แต่แค่สมมติมัน) และฉันไม่รู้ว่าฉันอยู่ที่ไหน!

โชคดีที่ฉันนำแล็ปท็อปมา แต่เมื่อฉันค้นหา 'แผนที่' มันบอกว่า 'ไม่มีผลลัพธ์' และฉันถามสิ่งนี้ว่าเป็นทางเลือกสุดท้าย

โปรดสร้างโปรแกรมที่แสดงลองจิจูดและละติจูดของตำแหน่งของฉันในรูปแบบตัวเลขสองค่าใด ๆ any two number formatรวมถึง:

  • สิ่งอันดับ
  • สตริงรวมถึงลองจิจูดและละติจูด
  • วัตถุ JSON
  • ฯลฯ ..

อาจใช้ API หรือไลบรารีใดก็ได้ นั่นคือคุณสามารถสืบค้น Google Maps และอื่น ๆ(ฉันเดาว่าพวกเขาไม่ได้ทิ้ง API ของพวกเขา: \)


19
PowerShell มีglไว้เพื่อGet-Locationเศร้าที่ฉันไม่คิดว่าC:\Users\Connorจะช่วยให้คุณหลบหนีจากป่ามาก
colsw

C: \ Users \ @Connor> sudo ใช่
Matthew Roh

คำตอบ:


72

Mathematica, 4 ไบต์

เอ่อฉันอยู่ไหน

Here

ประเมินGeoPosition[{latitude, longitude}]ว่า


5
o_O Mathematica มี builtin สำหรับสิ่งนี้หรือไม่?
Matthew Roh

4
@SIGSEGV แน่นอน ... (ตัวอย่าง # 4)
Martin Ender

33
Mathematica มีสิ่ง
ปลูก

10
ยิ่งไปกว่านั้น: คำสั่งSunset[Here] - Nowจะคืนค่าเวลาอย่างถูกต้องจนกระทั่งพระอาทิตย์ตก
Greg Martin

4
ฉันขบขันที่เห็นคำตอบที่มีคะแนนมากกว่านี้ ยินดีด้วย👏👏👏
Matthew Roh

11

JavaScript (ES6), 89 82 ไบต์

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

ลองออนไลน์! (ด้วยเหตุผลบางอย่างสิ่งนี้ไม่ทำงานในข้อมูลโค้ด)

คำอธิบาย

navigatorวัตถุที่เป็นส่วนหนึ่งของBOM geolocationเป็นคุณสมบัติของมันและยังเป็นวัตถุซึ่งมีข้อมูลทางภูมิศาสตร์ของผู้ใช้ watchPosition()เป็นวิธีการของgeolocationวัตถุ มันใช้ในฟังก์ชั่นการโทรกลับซึ่งจะดำเนินการหลังจากที่ข้อมูลทางภูมิศาสตร์ได้รับการดึง ฟังก์ชั่นการโทรกลับx=>alert((y=x.coords).latitude+","+y.longitude)เป็นฟังก์ชั่นไม่ระบุชื่อ (แลมบ์ดา) ที่ใช้ในวัตถุxและalert()s latitudeและlongitudeคุณสมบัติของx.coordsคั่นด้วยเครื่องหมายจุลภาค โปรดทราบว่าวัตถุxถูกส่งผ่านไปยังฟังก์ชั่นการโทรกลับโดยwatchPosition()เมื่อฟังก์ชั่นการโทรกลับถูกเรียก (เช่นหลังจากการดึงข้อมูลทางภูมิศาสตร์)


หมายเหตุ:ข้อมูลตำแหน่งทางภูมิศาสตร์เป็นระบบ GPS หากมี GPS มิฉะนั้นจะขึ้นอยู่กับ IP


2
watchPositionแทนการgetCurrentPositionบันทึก 5 ไบต์ alert([(y=x.coords).latitude,y.longitude])ประหยัด 2 อีก
Johan Karlsson

ตัวละครสั้นลง 1 ข้อผิดพลาด:for(f in r=navigator.geolocation)r=r[f](x=>alert((y=x.coords).latitude+","+y.longitude))
2428118

3
มันเป็นโอกาสที่หายากแน่นอนเมื่อ JS สามารถแข่งขันได้ในขณะที่ต้องพึ่งพาชื่ออสังหาริมทรัพย์ที่ยาวเกินไป
Shaggy

@JohanKarlsson ขอบคุณ! ดำเนินการมัน!
อาร์จัน

@Shaggy True แน่นอน
อาร์จัน

8

Python พร้อมคำร้องขอ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])ควรจะเพียงพอ
Rod

ลิงก์เสีย! หากคุณจะใช้ตัวย่อ URL ให้เลือกใช้ตัวสร้าง URL ที่ดีที่สุด
Jakob

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แต่จะส่งออก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 ไม่มี builtins ภายในสำหรับ 'ตำแหน่งปัจจุบัน' - นี่คือตำแหน่งทางภูมิศาสตร์ที่ใช้ IP ดังนั้นเกือบจะไม่ส่งคืนตำแหน่งที่แท้จริงของคุณแน่นอนมันจะส่งคืนตำแหน่ง 'เริ่มต้น' สำหรับ ISP ของคุณและถ้าคุณเรียกใช้ สิ่งนี้ผ่าน VPN จะปรากฏขึ้นทุกที่ที่มีทางออก

ฉันพยายาม (ไม่ใช่แบบฝึกหัดกอล์ฟ) เพื่อให้ Google Maps API ทำงานร่วมกับวิธีระบุตำแหน่งทางภูมิศาสตร์แบบไร้สาย - แมคที่อยู่ แต่ก็ยังห่างไกลจากความถูกต้องหรือเล่นได้

ทำเครื่องหมายว่าไม่ใช่การแข่งขันเนื่องจากความไม่ถูกต้องของผลลัพธ์

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ไปป์ไลน์ก่อนที่ฉันจะสามารถส่งออก lat / ยาวและฉันคิดว่ามันอาจละเมิดสเป็คเมื่อมันออก .
colsw

@TheLethalCoder เป็นไปได้ที่จะบันทึกไบต์ใน[int]9e8ส่วนที่เป็นไปได้เมื่อคุณตั้งค่าการหมดเวลาTryStartแต่ฉันไม่สามารถใช้งานได้9999999และ[int]9e8เหมือนกับการเพิ่มพิเศษ 9
colsw

2

(ไม่ใช่การแข่งขัน) Angolf , 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
ยินดีต้อนรับสู่เว็บไซต์! ฉันไม่สามารถหาข้อมูลเกี่ยวกับ Angolf ได้ คุณจะนึกถึงการเชื่อมโยงเว็บไซต์หรือไม่
ETHproductions

github.com/XtremePlayzCODE/angled/blob/master/angolf.jsขออภัยที่ตอบช้า
thatoneuser

1
ยินดีต้อนรับสู่เว็บไซต์! คุณมีลิงค์เก่ากว่านี้ไหม ถ้าไม่ใช่ภาษานั้นจะถือว่าใหม่กว่าความท้าทาย มันเป็นธรรมเนียมในการทำเครื่องหมายคำตอบในภาษาใหม่กว่าความท้าทายด้วย(ไม่ใช่การแข่งขัน)ในชื่อ
Destructible Lemon

ฉันเคยใช้ Angolf เป็นเวลา 3 เดือนแล้ว แต่ตอนนี้ฉันเพิ่งอัปโหลดไปยัง GitHub เนื่องจากไม่มีลิงก์มาก่อน
thatoneuser

@thatoneuser โชคไม่ดีที่ภาษานี้ต้องได้รับการตีพิมพ์เพื่อทำเครื่องหมายว่า "แข่งขัน" โปรดทำเครื่องหมายว่าไม่ใช่การแข่งขัน (ซึ่งหมายความว่าคุณสามารถเข้าร่วมและสะสมอัปโหลดได้ แต่คุณจะได้รับการพิจารณาเครื่องหมาย tic ที่ยอมรับ
Rohan Jhunjhunwala


0

Excel VBA (Windows, Office 2016+ เท่านั้น), 278 272 Bytes

จำกัด เฉพาะ 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 bytes

สามารถทดสอบได้เฉพาะในพื้นที่เท่านั้น

import CoreLocation;var c=CLLocationManager().location!.coordinate;print(c.longitude,c.latitude)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.