- ตัวดำเนินการ
-
เรียนรู้
ศูนย์การเรียนรู้ Python ตัวอย่างที่รันได้, NumPy, pandas และอื่น ๆ ศูนย์การเรียนรู้ C และ C++ พอยน์เตอร์ หน่วยความจำ STL และ C++ สมัยใหม่ ศูนย์การเรียนรู้ C#พื้นฐาน C#, OOP, LINQ, async และแบบฝึกหัด .NET อัลกอริทึม Python การค้นหา การเรียงลำดับ รีเคอร์ชัน และภาพจำลอง O(n) อัลกอริทึม C และ C++ เปรียบเทียบการเขียนด้วย C และ C++
- โจทย์
เพอร์เซปตรอน (1958) คืออัลกอริทึมการเรียนรู้แรกสำหรับนิวรอนเทียม มันทำนายด้วยฟังก์ชันขั้นบันไดและเรียนรู้จากความผิดพลาด
เริ่มด้วยน้ำหนักและไบแอสทั้งหมดเป็น 0 ในแต่ละ epoch ให้ไล่ตัวอย่าง ตามลำดับ และสำหรับแต่ละตัวอย่าง x ที่มีป้ายกำกับ y (0 หรือ 1):
- การทำนาย = 1 ถ้า x · weights + bias > 0 ไม่เช่นนั้น 0
- error = y - การทำนาย (คือ -1, 0 หรือ 1)
- ถ้า error ≠ 0: weights[i] ← weights[i] + learning_rate × error × x[i] สำหรับทุก i และ bias ← bias + learning_rate × error
จงเขียน train_perceptron(samples, labels, learning_rate, epochs)
อินพุต
samples: ตัวอย่าง m ตัว แต่ละตัวมีฟีเจอร์ n ตัว
labels: ป้ายกำกับ m ค่า แต่ละค่าเป็น 0 หรือ 1
learning_rate, epochs: ขนาดก้าวและจำนวนรอบที่วนผ่านข้อมูล
เอาต์พุต
คืนค่าน้ำหนักสุดท้าย ตามด้วยไบแอส (n + 1 ค่า)
เงื่อนไข
1 ≤ m ≤ 100, 1 ≤ n ≤ 10, 1 ≤ epochs ≤ 100
0 < learning_rate ≤ 1
-10 ≤ แต่ละฟีเจอร์ ≤ 10
ตัวอย่าง
ตัวอย่างที่ 1
อินพุต:
epochs = 1
labels = [0, 0, 0, 1]
samples = [
[0.0, 0.0],
[0.0, 1.0],
[1.0, 0.0],
[1.0, 1.0]
]
learning_rate = 1.0
ผลลัพธ์ที่คาดหวัง:
[1.0, 1.0, 1.0]
คำอธิบาย
[0, 0]: z = 0 ทำนาย 0 ถูก [0, 1] และ [1, 0]: ทำนาย 0 เช่นกัน ถูก [1, 1]: ทำนาย 0 แต่ป้ายกำกับเป็น 1 จึงได้ error = 1: น้ำหนักกลายเป็น [1, 1] และไบแอสเป็น 1 ผลลัพธ์: [1, 1, 1]
ตัวอย่างที่ 2
อินพุต:
epochs = 10
labels = [0, 0, 0, 1]
samples = [
[0.0, 0.0],
[0.0, 1.0],
[1.0, 0.0],
[1.0, 1.0]
]
learning_rate = 1.0
ผลลัพธ์ที่คาดหวัง:
[2.0, 1.0, -2.0]
คำอธิบาย
หลังจาก 10 epoch เพอร์เซปตรอนเรียนรู้เกต AND ได้แล้ว: ด้วยน้ำหนัก [2, 1] และไบแอส -2 มีเพียง [1, 1] ที่ให้ z > 0
แหล่งอ้างอิง
-
ตัวอย่างที่ 1 ยังไม่ได้รันอินพุต:
epochs = 1 labels = [0, 0, 0, 1] samples = [ [0.0, 0.0], [0.0, 1.0], [1.0, 0.0], [1.0, 1.0] ] learning_rate = 1.0ผลลัพธ์ที่คาดหวัง:[1.0, 1.0, 1.0]เอาต์พุตของคุณ -
ตัวอย่างที่ 2 ยังไม่ได้รันอินพุต:
epochs = 10 labels = [0, 0, 0, 1] samples = [ [0.0, 0.0], [0.0, 1.0], [1.0, 0.0], [1.0, 1.0] ] learning_rate = 1.0ผลลัพธ์ที่คาดหวัง:[2.0, 1.0, -2.0]เอาต์พุตของคุณ
มี 4 การทดสอบที่ซ่อนอยู่จะถูกรันเมื่อคุณส่งคำตอบ
คอมไพเลอร์และดีบักเกอร์ C# ออนไลน์
เขียน คอมไพล์ รัน และดีบัก C# ออนไลน์ ใช้ breakpoint การทำงานทีละขั้น และการตรวจสอบออบเจ็กต์ใน IDE หลายไฟล์โดยไม่ต้องใช้ Visual Studio
🚀 350,747 การดำเนินการทั้งหมด (1 ในเดือนนี้)
ฝึก C# ด้วยโจทย์เขียนโค้ด
แก้โจทย์จริงใน editor นี้: รันทดสอบตัวอย่าง ส่งคำตอบ และรับรีวิวโค้ดจาก AI
🔷 เกี่ยวกับตัวรัน C# / .NET ออนไลน์นี้
CodeUtility C# Executor ช่วยให้คุณเขียนและรันโค้ด C# จริงได้โดยตรงในเบราว์เซอร์ของคุณ - ไม่ต้องติดตั้ง ไม่ต้องตั้งค่า Visual Studio หรือ .NET SDK ใช้งานผ่านแซนด์บ็อกซ์ที่ปลอดภัยซึ่งรองรับ .NET runtime และเวอร์ชันภาษา C# สมัยใหม่ รวมถึง C# 9 และใหม่กว่านั้น
เครื่องมือนี้ใช้ dotnet-script เบื้องหลังในการคอมไพล์และรันโค้ดของคุณด้วยพฤติกรรม .NET แท้ๆ ทำให้คุณลองเล่นได้ทั้งฟีเจอร์ C# พื้นฐานและขั้นสูง เช่น LINQ, async/await, pattern matching และ generics
คุณสามารถทดสอบสคริปต์ง่ายๆ ฟังก์ชัน และลำดับตรรกะ หรือสำรวจแนวคิดอย่างคลาส โครงสร้าง (structs), การสืบทอด (inheritance) และอินเทอร์เฟซ - ทั้งหมดนี้ในสภาพแวดล้อมการเขียนโค้ดที่สะอาดและปราศจากสิ่งรบกวน
ไม่ว่าคุณกำลังเรียนรู้ C#, ทดสอบอัลกอริทึมหรือทดลองฟีเจอร์ .NET เครื่องมือ CodeUtility C# Executor มอบวิธีที่รวดเร็ว ปลอดภัย และเชื่อถือได้ในการรันโค้ด C# ได้ทันทีจากทุกเบราว์เซอร์
มากกว่าเครื่องมือรันโค้ด
ใช้ตัวแก้ไขหลายไฟล์ เทอร์มินัลประมวลผลแบบแยกส่วน ไลบรารีเฉพาะรันไทม์ พื้นที่ทำงานถาวร การแชร์ และการทำงานร่วมกันแบบเรียลไทม์ได้จากตัวประมวลผลเดียวกัน
วิธีใช้ตัวประมวลผลนี้
เลือกรันไทม์ เปิดหรือสร้างไฟล์ เขียนโค้ด แล้วเลือกเรียกใช้ ผลลัพธ์จะแสดงในเทอร์มินัล ส่วนผู้ใช้ที่ลงชื่อเข้าใช้สามารถเก็บไฟล์ในพื้นที่ทำงาน ติดตั้งไลบรารี และทำงานร่วมกันผ่านการแชร์ได้
- เลือกเวอร์ชันแล้วแก้ไขไฟล์ปัจจุบัน หรือเปิดไฟล์อื่นในพื้นที่ทำงาน
- เรียกใช้โค้ด ป้อนข้อมูลในเทอร์มินัลเมื่อระบบร้องขอ และตรวจสอบประวัติการเรียกใช้ที่บันทึกไว้
- ใช้ไลบรารี เครื่องมือพื้นที่ทำงาน การแชร์ และแชท เมื่องานของคุณต้องใช้โค้ดมากกว่าหนึ่งส่วน
💡 พื้นฐาน C# และตัวอย่างที่คุณลองได้ด้านบน
1. การประกาศตัวแปรและค่าคงที่
C# ใช้การประกาศตัวแปรแบบชนิดชัดเจน (strongly-typed) ใช้ const สำหรับค่าคงที่ตอนคอมไพล์ และ readonly สำหรับค่าคงที่ตอนรันไทม์
int age = 30;
double pi = 3.14159;
char grade = 'A';
string name = "Alice";
bool isActive = true;
// ค่าคงที่
const int MaxUsers = 100;
const string Company = "CodeUtility";
2. เงื่อนไข (if / switch)
ใช้ if, else if และ switch เพื่อควบคุมโฟลว์การทำงาน
int x = 2;
if (x == 1)
{
Console.WriteLine("หนึ่ง");
}
else if (x == 2)
{
Console.WriteLine("สอง");
}
else
{
Console.WriteLine("อื่น ๆ");
}
switch (x)
{
case 1:
Console.WriteLine("หนึ่ง");
break;
case 2:
Console.WriteLine("สอง");
break;
default:
Console.WriteLine("อื่น ๆ");
break;
}
3. ลูป
C# รองรับลูปแบบ for, while และ foreach
for (int i = 0; i < 3; i++)
{
Console.WriteLine(i);
}
int n = 3;
while (n > 0)
{
Console.WriteLine(n);
n--;
}
4. อาเรย์
อาเรย์ใช้เก็บคอลเลกชันขนาดคงที่ของสมาชิกชนิดเดียวกัน
int[] numbers = { 10, 20, 30 };
Console.WriteLine(numbers[1]);
5. การจัดการรายการ (List)
ใช้ List<T> สำหรับคอลเลกชันที่ยืดหยุ่นได้ (ไดนามิก)
List<int> nums = new List<int> { 1, 2, 3 };
nums.Add(4);
nums.Remove(2);
foreach (int n in nums)
{
Console.Write(n + " ");
}
6. อินพุต/เอาต์พุตคอนโซล
ใช้ Console.WriteLine และ Console.ReadLine สำหรับ I/O พื้นฐาน
Console.Write("กรอกชื่อของคุณ: ");
string name = Console.ReadLine();
Console.WriteLine($"สวัสดี, {name}!");
7. ฟังก์ชัน
กำหนดเมธอดโดยระบุชนิดค่าที่ส่งคืน ชื่อ และพารามิเตอร์
int Add(int a, int b)
{
return a + b;
}
Console.WriteLine(Add(3, 4));
8. ดิกชันนารี
Dictionary<TKey, TValue> ใช้เก็บคู่คีย์-ค่า
Dictionary<string, int> ages = new Dictionary<string, int>();
ages["Alice"] = 30;
Console.WriteLine(ages["Alice"]);
9. การจัดการข้อยกเว้น
จัดการข้อผิดพลาดขณะรันด้วย try, catch, และ finally
try
{
throw new Exception("มีบางอย่างผิดพลาด");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
10. การทำงานกับไฟล์ (File I/O)
ใช้ File และ StreamReader/StreamWriter สำหรับการทำงานกับไฟล์
File.WriteAllText("file.txt", "สวัสดีไฟล์");
string text = File.ReadAllText("file.txt");
Console.WriteLine(text);
11. การจัดการสตริง
สตริงใน C# รองรับเมธอดอย่าง Length, Substring, Contains
string message = "Hello World";
Console.WriteLine(message.Length);
Console.WriteLine(message.Substring(0, 5));
Console.WriteLine(message.Contains("World"));
12. คลาสและออบเจ็กต์
C# รองรับการเขียนโปรแกรมเชิงวัตถุผ่านคลาสและออบเจ็กต์
class Person
{
public string Name;
public Person(string name) => Name = name;
public void Greet() => Console.WriteLine($"สวัสดี ฉันชื่อ {Name}");
}
Person p = new Person("Alice");
p.Greet();