- ตัวดำเนินการ
-
เรียนรู้
เรียน Python ตัวอย่างที่รันได้, NumPy, pandas และอื่น ๆ เรียน AIโครงข่ายประสาท ML และ LLM ตั้งแต่ศูนย์ เรียน C และ C++ พอยน์เตอร์ หน่วยความจำ STL และ C++ สมัยใหม่ เรียน C#พื้นฐาน C#, OOP, LINQ, async และแบบฝึกหัด .NET เรียน Matplotlibกราฟเส้น แท่ง กระจาย และวงกลม พร้อมตัวแสดงภาพแบบโต้ตอบ อัลกอริทึม Python การค้นหา การเรียงลำดับ รีเคอร์ชัน และภาพจำลอง O(n) อัลกอริทึม C และ C++ เปรียบเทียบการเขียนด้วย C และ C++ เขียนโปรแกรมสำหรับเด็ก เรียนเขียนโปรแกรมผ่านการเล่น!
- โจทย์ใหม่
- สำหรับครูใหม่
- อัปเดต
- เลี้ยงกาแฟสักแก้ว
K-means หากลุ่มในข้อมูลที่ไม่มีป้ายกำกับ เริ่มจากเซนทรอยด์ที่กำหนด แล้วทำซ้ำ iterations ครั้ง:
- กำหนดกลุ่ม: ใส่แต่ละจุดในกลุ่มของเซนทรอยด์ที่ใกล้ที่สุด (ระยะทางแบบยุคลิด) ถ้าเซนทรอยด์สองตัวใกล้เท่ากัน ให้เลือกตัวที่มีดัชนีน้อยกว่า
- ปรับปรุง: ย้ายเซนทรอยด์แต่ละตัวไปที่ค่าเฉลี่ยของจุดที่อยู่ในกลุ่มของมัน เซนทรอยด์ที่ไม่มีจุดเลยให้อยู่ที่เดิม
จงเขียน k_means(points, centroids, iterations)
อินพุต
points: จุดข้อมูล แต่ละจุดเป็นลิสต์ของพิกัด
centroids: เซนทรอยด์เริ่มต้น k ตัว ที่มีจำนวนพิกัดเท่ากับจุด
iterations: จำนวนรอบของการกำหนดกลุ่มและปรับปรุง
เอาต์พุต
คืนค่าเซนทรอยด์สุดท้ายตามลำดับเดิม
เงื่อนไข
1 ≤ จำนวนจุด ≤ 1,000, 1 ≤ k ≤ 20, 1 ≤ จำนวนมิติ ≤ 10
0 ≤ iterations ≤ 100
-1,000 ≤ แต่ละพิกัด ≤ 1,000
ตัวอย่าง
ตัวอย่างที่ 1
อินพุต:
points = [
[1.0, 1.0],
[1.5, 2.0],
[8.0, 8.0],
[9.0, 8.5]
]
centroids = [
[0.0, 0.0],
[10.0, 10.0]
]
iterations = 1
ผลลัพธ์ที่คาดหวัง:
[
[1.25, 1.5],
[8.5, 8.25]
]
คำอธิบาย
สองจุดแรกอยู่ใกล้ (0, 0) มากกว่า และสองจุดสุดท้ายอยู่ใกล้ (10, 10) มากกว่า เซนทรอยด์ใหม่คือค่าเฉลี่ย: ((1 + 1.5) / 2, (1 + 2) / 2) = (1.25, 1.5) และ ((8 + 9) / 2, (8 + 8.5) / 2) = (8.5, 8.25)
ตัวอย่างที่ 2
อินพุต:
points = [
[0.0],
[1.0],
[10.0]
]
centroids = [
[0.0],
[100.0]
]
iterations = 2
ผลลัพธ์ที่คาดหวัง:
[
[3.666667],
[100.0]
]
คำอธิบาย
รอบที่ 1: (100) อยู่ไกลจากทุกจุด ทั้งสามจุดจึงเข้ากลุ่มของเซนทรอยด์ 1 ซึ่งย้ายไปที่ (0 + 1 + 10) / 3 ≈ 3.666667 ส่วนเซนทรอยด์ 2 ไม่มีจุดเลยจึงอยู่ที่ 100 เหมือนเดิม รอบที่ 2 กำหนดกลุ่มแบบเดียวกัน ผลลัพธ์จึงเป็น [[3.666667], [100]]
แหล่งอ้างอิง
-
ตัวอย่างที่ 1 ยังไม่ได้รันอินพุต:
points = [ [1.0, 1.0], [1.5, 2.0], [8.0, 8.0], [9.0, 8.5] ] centroids = [ [0.0, 0.0], [10.0, 10.0] ] iterations = 1ผลลัพธ์ที่คาดหวัง:[ [1.25, 1.5], [8.5, 8.25] ]เอาต์พุตของคุณ -
ตัวอย่างที่ 2 ยังไม่ได้รันอินพุต:
points = [ [0.0], [1.0], [10.0] ] centroids = [ [0.0], [100.0] ] iterations = 2ผลลัพธ์ที่คาดหวัง:[ [3.666667], [100.0] ]เอาต์พุตของคุณ
มี 4 การทดสอบที่ซ่อนอยู่จะถูกรันเมื่อคุณส่งคำตอบ ถ้าโค้ดไม่ผ่านข้อใด คุณจะเห็นการทดสอบข้อนั้น แก้โจทย์ให้ได้เพื่อดูทั้งหมด
Run Swift Online
Write, run, and debug Swift code online using a command-line Swift environment. Manage multiple files, save your workspace, and share code without installing Xcode.
🚀 19,043 การดำเนินการทั้งหมด (611 ในเดือนนี้)
ฝึก Swift ด้วยโจทย์เขียนโค้ด
แก้โจทย์จริงใน editor นี้: รันทดสอบตัวอย่าง ส่งคำตอบ และรับรีวิวโค้ดจาก AI
🍎 เกี่ยวกับตัวรัน Swift ออนไลน์นี้
CodeUtility Swift Executor ให้คุณเขียนและรันโค้ด Swift ได้โดยตรงบนเบราว์เซอร์ - ไม่ต้องติดตั้ง Xcode, SDK หรือเซ็ตอัป macOS แต่อย่างใด โดยใช้คอมไพเลอร์ Swift จริงในแซนด์บ็อกซ์ที่แยกออกมา เพื่อให้ได้พฤติกรรมของ Swift แบบเนทีฟที่ถูกต้องแม่นยำ
เครื่องมือนี้รองรับหลายเวอร์ชันของ Swift - 5.7, 5.9 และ รุ่นล่าสุด - ให้คุณยืดหยุ่นในการสำรวจฟีเจอร์ภาษาใหม่ๆ และยังคงความเข้ากันได้กับฐานโค้ด Swift รุ่นเก่า
เหมาะอย่างยิ่งสำหรับนักพัฒนาที่กำลังเรียนรู้ไวยากรณ์ Swift, ทดสอบอัลกอริทึม หรือทดลองโค้ดสำหรับ iOS, macOS และ Swift ฝั่งเซิร์ฟเวอร์ โดยไม่ต้องติดตั้งเครื่องมือหรือซิมูเลเตอร์ในเครื่อง
แต่ละสแนิปเพตรันอย่างปลอดภัยในสภาพแวดล้อม Swift แบบคอนเทนเนอร์ มั่นใจได้ถึงฟีดแบ็กจากคอมไพเลอร์จริงและการรันโค้ดที่ปลอดภัย
มากกว่าเครื่องมือรันโค้ด
ใช้ตัวแก้ไขหลายไฟล์ เทอร์มินัลประมวลผลแบบแยกส่วน ไลบรารีเฉพาะรันไทม์ พื้นที่ทำงานถาวร การแชร์ และการทำงานร่วมกันแบบเรียลไทม์ได้จากตัวประมวลผลเดียวกัน
วิธีใช้ตัวประมวลผลนี้
เลือกรันไทม์ เปิดหรือสร้างไฟล์ เขียนโค้ด แล้วเลือกเรียกใช้ ผลลัพธ์จะแสดงในเทอร์มินัล ส่วนผู้ใช้ที่ลงชื่อเข้าใช้สามารถเก็บไฟล์ในพื้นที่ทำงาน ติดตั้งไลบรารี และทำงานร่วมกันผ่านการแชร์ได้
- เลือกเวอร์ชันแล้วแก้ไขไฟล์ปัจจุบัน หรือเปิดไฟล์อื่นในพื้นที่ทำงาน
- เรียกใช้โค้ด ป้อนข้อมูลในเทอร์มินัลเมื่อระบบร้องขอ และตรวจสอบประวัติการเรียกใช้ที่บันทึกไว้
- ใช้ไลบรารี เครื่องมือพื้นที่ทำงาน การแชร์ และแชท เมื่องานของคุณต้องใช้โค้ดมากกว่าหนึ่งส่วน
💡 คู่มือพื้นฐาน Swift สำหรับผู้เริ่มต้น
1. การประกาศตัวแปรและค่าคงที่
ใช้ var สำหรับตัวแปร และ let สำหรับค่าคงที่ใน Swift.
var age = 30
let pi = 3.14159
var name = "Alice"
let isActive = true
// ค่าคงที่ไม่สามารถกำหนดค่าใหม่ได้
// pi = 3.14 // ❌ ข้อผิดพลาด
2. เงื่อนไข (if / switch)
ใช้ if, else if, else สำหรับลอจิก และใช้ switch สำหรับหลายเงื่อนไข.
let number = 2
if number == 1 {
print("One")
} else if number == 2 {
print("Two")
} else {
print("Other")
}
switch number {
case 1:
print("One")
case 2:
print("Two")
default:
print("Other")
}
3. ลูป
Swift รองรับลูปแบบ for-in, while และ repeat-while.
for i in 0..<3 {
print(i)
}
var n = 3
while n > 0 {
print(n)
n -= 1
}
4. อาเรย์
อาเรย์เก็บชุดข้อมูลที่มีลำดับ.
var numbers = [10, 20, 30]
print(numbers[1])
5. การจัดการอาเรย์
ใช้เมธอดของอาเรย์อย่าง append และ removeLast.
var nums = [1, 2, 3]
nums.append(4)
nums.removeLast()
for n in nums {
print(n)
}
6. การรับ/ส่งข้อมูลทางคอนโซล
ใช้ print() สำหรับเอาต์พุต ส่วนอินพุตต้องทำเพิ่มเติมใน Swift Playgrounds หรือ Xcode.
let name = "Alice"
print("Hello, \(name)")
7. ฟังก์ชัน
ประกาศฟังก์ชันที่นำกลับมาใช้ซ้ำได้ พร้อมพารามิเตอร์และค่าที่ส่งกลับ.
func add(a: Int, b: Int) -> Int {
return a + b
}
print(add(a: 3, b: 4))
8. ดิกชันนารี
ดิกชันนารีเก็บข้อมูลแบบคู่คีย์-ค่า.
var ages = ["Alice": 30]
print(ages["Alice"] ?? 0)
9. การจัดการข้อผิดพลาด
Swift ใช้ do-catch สำหรับการจัดการข้อผิดพลาด.
enum MyError: Error {
case runtimeError(String)
}
do {
throw MyError.runtimeError("Something went wrong")
} catch let error {
print(error)
}
10. การอ่าน/เขียนไฟล์
Swift ใช้ FileManager หรือเมธอดของ String สำหรับงานอ่าน/เขียนไฟล์.
let text = "Hello File"
try text.write(toFile: "file.txt", atomically: true, encoding: .utf8)
let content = try String(contentsOfFile: "file.txt")
print(content)
11. การจัดการสตริง
ใช้เมธอดอย่าง count, contains, uppercased() เป็นต้น.
let text = "Hello World"
print(text.count)
print(text.contains("World"))
print(text.uppercased())
12. คลาส & อ็อบเจ็กต์
Swift รองรับ OOP โดยใช้ class และ init.
class Person {
var name: String
init(name: String) {
self.name = name
}
func greet() {
print("Hi, I'm \(name)")
}
}
let p = Person(name: "Alice")
p.greet()
13. Optionals
Swift ใช้ ? และ ! เพื่อจัดการค่าแบบ optional.
var name: String? = "Alice"
print(name ?? "Unknown")
if let unwrappedName = name {
print(unwrappedName)
}