-
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
A* là thuật toán tìm đường kinh điển trong game và robot. Nó duyệt các ô theo thứ tự f = g + h, trong đó g là chi phí đã trả và h là ước lượng heuristic của chi phí còn lại.
Lưới chứa chi phí của từng ô: đi vào một ô tốn đúng giá trị của ô đó, và 0 là tường không thể đi vào. Bạn bắt đầu ở start (không trả chi phí ô này) và có thể đi lên, xuống, trái hoặc phải.
Dùng A* với heuristic là khoảng cách Manhattan |row - goal_row| + |col - goal_col|. Mọi ô đi được đều tốn ít nhất 1, nên heuristic này không bao giờ ước lượng quá và A* trả về kết quả tối ưu.
Hãy viết a_star_cost(grid, start, goal).
Đầu vào
grid: Ma trận chi phí của các ô (0 = tường).
start, goal: Vị trí dạng [row, col].
Đầu ra
Trả về tổng chi phí nhỏ nhất để đến goal, hoặc -1 nếu không thể đến (kể cả khi start hoặc goal là tường).
Ràng buộc
1 ≤ số hàng, số cột ≤ 100
0 ≤ mỗi chi phí ≤ 9
Ví dụ
Ví dụ 1
Đầu vào:
goal = [2, 2]
grid = [
[1, 1, 1],
[1, 0, 1],
[1, 1, 1]
]
start = [0, 0]
Kết quả mong đợi:
4
Giải thích
Ô giữa là tường. Đi sang phải hai lần rồi xuống hai lần (hoặc xuống rồi sang phải) sẽ đi vào 4 ô chi phí 1, tổng là 4.
Ví dụ 2
Đầu vào:
goal = [0, 2]
grid = [
[1, 9, 1],
[1, 9, 1],
[1, 1, 1]
]
start = [0, 0]
Kết quả mong đợi:
6
Giải thích
Đi thẳng qua ô 9 tốn 9 + 1 = 10. Đi xuống, dọc theo hàng cuối rồi đi lên sẽ đi vào sáu ô chi phí 1, tổng là 6.
Tham khảo
-
Ví dụ 1 Chưa chạyĐầu vào:
goal = [2, 2] grid = [ [1, 1, 1], [1, 0, 1], [1, 1, 1] ] start = [0, 0]Kết quả mong đợi:4Kết quả của bạn -
Ví dụ 2 Chưa chạyĐầu vào:
goal = [0, 2] grid = [ [1, 9, 1], [1, 9, 1], [1, 1, 1] ] start = [0, 0]Kết quả mong đợi:6Kế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();