-
Trình Thực Thi
Trình biên dịch Python Trình biên dịch C++ Trình biên dịch C Trình biên dịch Matplotlib Trình thông dịch Node.js Trình thông dịch PHP Trình biên dịch C# / .NET Trình biên dịch Rust Ruby Interpreter Trình biên dịch Java Trình biên dịch Go Trình biên dịch Kotlin Trình biên dịch Swift Trình biên dịch TypeScript
-
Học lập trình
Trung tâm học Python Ví dụ chạy được, NumPy, pandas và nhiều nội dung khác Trung tâm học C và C++ Con trỏ, bộ nhớ, STL và C++ hiện đại Trung tâm học C#C# cơ bản, OOP, LINQ, async và bài tập .NET Thuật toán Python Tìm kiếm, sắp xếp, đệ quy và trình mô phỏng O(n) Thuật toán C và C++ So sánh cách cài đặt bằng C và C++
- Thử thách
Naive Bayes giả định các đặc trưng độc lập với nhau khi đã biết lớp, và chọn lớp có điểm cao nhất:
score(c) = P(c) × P(x₁ | c) × P(x₂ | c) × … × P(xₙ | c)
Các đặc trưng là danh mục được mã hóa thành số nguyên. Ước lượng xác suất từ dữ liệu huấn luyện:
- P(c) = (số mẫu thuộc lớp c) / (số mẫu)
- P(xⱼ = v | c) = (số mẫu thuộc lớp c có đặc trưng j bằng v + 1) / (số mẫu thuộc lớp c + Kⱼ)
với Kⱼ là số giá trị khác nhau của đặc trưng j trong các mẫu huấn luyện và query. Phần +1 (làm trơn Laplace) giúp một giá trị chưa từng thấy không làm điểm bằng 0.
Trả về lớp có điểm cao nhất; nếu điểm bằng nhau, trả về lớp nhỏ hơn. Nhân nhiều xác suất nhỏ có thể bị tràn dưới, nên hãy cộng logarit thay vì nhân.
Hãy cài đặt naive_bayes_predict(features, labels, query).
Đầu vào
features: Mỗi mẫu huấn luyện một hàng gồm n đặc trưng phân loại.
labels: Lớp của từng mẫu huấn luyện.
query: n đặc trưng của mẫu cần phân loại.
Đầu ra
Trả về lớp dự đoán.
Ràng buộc
1 ≤ số mẫu ≤ 1.000, 1 ≤ n ≤ 20
0 ≤ mỗi giá trị đặc trưng và nhãn ≤ 100
Ví dụ
Ví dụ 1
Đầu vào:
query = [0, 1]
labels = [1, 1, 0, 0, 1]
features = [
[0, 1],
[0, 0],
[1, 1],
[1, 0],
[0, 1]
]
Kết quả mong đợi:
1
Giải thích
Lớp 1 có 3 mẫu và lớp 0 có 2 mẫu. Đặc trưng 1 có các giá trị {0, 1} (K = 2), đặc trưng 2 có {0, 1} (K = 2). score(1) = 3/5 × (3+1)/(3+2) × (2+1)/(3+2) = 0.6 × 0.8 × 0.6 = 0.288. score(0) = 2/5 × (0+1)/(2+2) × (1+1)/(2+2) = 0.4 × 0.25 × 0.5 = 0.05. Lớp 1 thắng.
Ví dụ 2
Đầu vào:
query = [2]
labels = [0, 0, 1]
features = [
[0],
[0],
[1]
]
Kết quả mong đợi:
0
Giải thích
Giá trị 2 chưa từng xuất hiện, nên K = 3 (các giá trị 0, 1 và 2). score(0) = 2/3 × (0+1)/(2+3) ≈ 0.133 và score(1) = 1/3 × (0+1)/(1+3) ≈ 0.083. Nhờ làm trơn, không điểm nào bằng 0, và lớp 0 phổ biến hơn thắng.
Tham khảo
-
Ví dụ 1 Chưa chạyĐầu vào:
query = [0, 1] labels = [1, 1, 0, 0, 1] features = [ [0, 1], [0, 0], [1, 1], [1, 0], [0, 1] ]Kết quả mong đợi:1Kết quả của bạn -
Ví dụ 2 Chưa chạyĐầu vào:
query = [2] labels = [0, 0, 1] features = [ [0], [0], [1] ]Kết quả mong đợi:0Kết quả của bạn
Có 4 kiểm tra ẩn sẽ chạy khi bạn nộp bài.
Trình biên dịch và gỡ lỗi C# online
Viết, biên dịch, chạy và debug C# online. Đặt breakpoint, step into hoặc step over và xem biến cùng object lồng nhau trong IDE hỗ trợ nhiều tệp, lưu workspace, chia sẻ và cộng tác trực tiếp—không cần cài đặt.
🚀 350,747 tổng số lượt thực thi (1 trong tháng này)
Luyện C# với thử thách lập trình
Giải các bài tập thực tế ngay trên trình soạn thảo này: chạy kiểm thử mẫu, nộp bài và nhận đánh giá code từ AI.
🔷 Giới thiệu về Trình thực thi C# / .NET trực tuyến này
CodeUtility C# Executor cho phép bạn viết và chạy mã C# thật trực tiếp trong trình duyệt - không cần cài đặt, thiết lập Visual Studio hay .NET SDK. Công cụ này được vận hành bởi môi trường sandbox an toàn hỗ trợ .NET runtime và các phiên bản C# hiện đại, bao gồm C# 9 trở lên.
Công cụ này dùng dotnet-script phía dưới để biên dịch và thực thi mã của bạn với đúng hành vi .NET, cho phép bạn thử nghiệm cả các tính năng C# cơ bản lẫn nâng cao như LINQ, async/await, pattern matching và generics.
Bạn có thể thử các script đơn giản, hàm và luồng logic, hoặc khám phá các khái niệm như class, struct, kế thừa và interface - tất cả trong một môi trường code sạch, không xao nhãng.
Dù bạn đang học C#, kiểm thử thuật toán hay thử nghiệm các tính năng .NET, CodeUtility C# Executor mang đến cách chạy mã C# nhanh, an toàn và tin cậy ngay từ bất kỳ trình duyệt nào.
Không chỉ là công cụ chạy mã
Sử dụng trình soạn thảo nhiều tệp, terminal thực thi biệt lập, thư viện riêng theo môi trường chạy, không gian làm việc lâu dài, tính năng chia sẻ và cộng tác theo thời gian thực ngay trong cùng một trình thực thi.
Cách sử dụng trình thực thi này?
Chọn môi trường chạy, mở hoặc tạo tệp, viết mã rồi nhấn Chạy. Kết quả xuất hiện trong terminal; người dùng đã đăng nhập có thể lưu tệp trong không gian làm việc, cài thư viện và cộng tác qua liên kết chia sẻ.
- Chọn phiên bản rồi chỉnh sửa tệp hiện tại hoặc mở một tệp khác trong không gian làm việc.
- Chạy mã, nhập dữ liệu trong terminal khi được yêu cầu và xem lại lịch sử chạy đã lưu.
- Sử dụng thư viện, công cụ không gian làm việc, chia sẻ và trò chuyện khi tác vụ cần nhiều hơn một đoạn mã.
💡 C# cơ bản & ví dụ bạn có thể thử ở trên
1. Khai báo biến và hằng số
C# sử dụng khai báo biến kiểu tĩnh (strongly-typed). Dùng const cho hằng số tại thời điểm biên dịch và readonly cho hằng số tại thời điểm chạy.
int age = 30;
double pi = 3.14159;
char grade = 'A';
string name = "Alice";
bool isActive = true;
// Hằng số
const int MaxUsers = 100;
const string Company = "CodeUtility";
2. Cấu trúc điều kiện (if / switch)
Dùng if, else if và switch để điều khiển luồng.
int x = 2;
if (x == 1)
{
Console.WriteLine("Một");
}
else if (x == 2)
{
Console.WriteLine("Hai");
}
else
{
Console.WriteLine("Khác");
}
switch (x)
{
case 1:
Console.WriteLine("Một");
break;
case 2:
Console.WriteLine("Hai");
break;
default:
Console.WriteLine("Khác");
break;
}
3. Vòng lặp
C# hỗ trợ các vòng lặp for, while và foreach.
for (int i = 0; i < 3; i++)
{
Console.WriteLine(i);
}
int n = 3;
while (n > 0)
{
Console.WriteLine(n);
n--;
}
4. Mảng
Mảng lưu trữ tập hợp có kích thước cố định gồm các phần tử cùng kiểu.
int[] numbers = { 10, 20, 30 };
Console.WriteLine(numbers[1]);
5. Thao tác với List
Dùng List<T> cho các tập hợp động.
List<int> nums = new List<int> { 1, 2, 3 };
nums.Add(4);
nums.Remove(2);
foreach (int n in nums)
{
Console.Write(n + " ");
}
6. Nhập/Xuất Console
Dùng Console.WriteLine và Console.ReadLine cho I/O cơ bản.
Console.Write("Nhập tên của bạn: ");
string name = Console.ReadLine();
Console.WriteLine($"Xin chào, {name}!");
7. Hàm
Định nghĩa phương thức với kiểu trả về, tên và tham số.
int Add(int a, int b)
{
return a + b;
}
Console.WriteLine(Add(3, 4));
8. Từ điển (Dictionary)
Dictionary<TKey, TValue> lưu trữ các cặp khóa-giá trị.
Dictionary<string, int> ages = new Dictionary<string, int>();
ages["Alice"] = 30;
Console.WriteLine(ages["Alice"]);
9. Xử lý ngoại lệ
Xử lý lỗi thời gian chạy bằng try, catch và finally.
try
{
throw new Exception("Đã có lỗi xảy ra");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
10. I/O Tệp
Dùng File và StreamReader/StreamWriter cho các thao tác với tệp.
File.WriteAllText("file.txt", "Xin chào Tệp");
string text = File.ReadAllText("file.txt");
Console.WriteLine(text);
11. Xử lý chuỗi
Chuỗi C# hỗ trợ các phương thức như Length, Substring, Contains.
string message = "Xin chào Thế giới";
Console.WriteLine(message.Length);
Console.WriteLine(message.Substring(0, 5));
Console.WriteLine(message.Contains("World"));
12. Lớp & Đối tượng
C# hỗ trợ lập trình hướng đối tượng thông qua class và object.
class Person
{
public string Name;
public Person(string name) => Name = name;
public void Greet() => Console.WriteLine($"Xin chào, tôi là {Name}");
}
Person p = new Person("Alice");
p.Greet();