Files
coding-practice/problems/3516-find-closest-person/go/main.go
2025-09-04 10:10:53 +08:00

71 lines
1.6 KiB
Go

// LeetCode 3516: Find Closest Person
// 難度: Easy
// 日期: 2025-09-04
package main
import "fmt"
// TODO: 實作解法
func findClosest(x, y, z int) int {
distanceX := abs(x - z)
distanceY := abs(y - z)
if distanceX == distanceY{
return 0
}else if distanceX > distanceY{
return 2
}else{
return 1
}
}
func abs(n int) int{
if n < 0 {
return -n
}
return n
}
func main() {
testCase1()
testCase2()
testCase3()
}
// 基本測試案例 - Example 1
func testCase1() {
// Input: x = 2, y = 7, z = 4
// Expected: 1 (Person 1 距離較近: |2-4| = 2 < |7-4| = 3)
actual := findClosest(2, 7, 4)
expected := 1
fmt.Printf("Test 1: Input(2, 7, 4) Expected: %d, Actual: %d, Result: %s\n",
expected, actual, getResult(actual == expected))
}
// 基本測試案例 - Example 2
func testCase2() {
// Input: x = 2, y = 5, z = 6
// Expected: 2 (Person 2 距離較近: |5-6| = 1 < |2-6| = 4)
actual := findClosest(2, 5, 6)
expected := 2
fmt.Printf("Test 2: Input(2, 5, 6) Expected: %d, Actual: %d, Result: %s\n",
expected, actual, getResult(actual == expected))
}
// 基本測試案例 - Example 3
func testCase3() {
// Input: x = 1, y = 5, z = 3
// Expected: 0 (距離相等: |1-3| = 2 = |5-3| = 2)
actual := findClosest(1, 5, 3)
expected := 0
fmt.Printf("Test 3: Input(1, 5, 3) Expected: %d, Actual: %d, Result: %s\n",
expected, actual, getResult(actual == expected))
}
func getResult(pass bool) string {
if pass {
return "PASS"
}
return "FAIL"
}