- ตัวดำเนินการ
-
เรียนรู้
ศูนย์การเรียนรู้ Python ตัวอย่างที่รันได้, NumPy, pandas และอื่น ๆ ศูนย์การเรียนรู้ C และ C++ พอยน์เตอร์ หน่วยความจำ STL และ C++ สมัยใหม่ ศูนย์การเรียนรู้ C#พื้นฐาน C#, OOP, LINQ, async และแบบฝึกหัด .NET อัลกอริทึม Python การค้นหา การเรียงลำดับ รีเคอร์ชัน และภาพจำลอง O(n) อัลกอริทึม C และ C++ เปรียบเทียบการเขียนด้วย C และ C++
- โจทย์
A 3×3 board is given as three strings of X, O and . (empty). A player wins with three of their marks in a row, column or diagonal. Boards never have two winners.
Implement tic_tac_toe_winner(board).
Input
board: Three rows of three characters each.
Output
Return "X" or "O" for the winner, "Draw" if the board is full with no winner, or "Pending" if empty cells remain and nobody has won.
เงื่อนไข
board has exactly 3 rows of length 3
ตัวอย่าง
ตัวอย่างที่ 1
อินพุต:
board = ["XOX", ".X.", "O.X"]
ผลลัพธ์ที่คาดหวัง:
"X"
คำอธิบาย
X holds the diagonal from top-left to bottom-right, so X wins.
ตัวอย่างที่ 2
อินพุต:
board = ["XOX", "XOO", "OXX"]
ผลลัพธ์ที่คาดหวัง:
"Draw"
คำอธิบาย
The board is full and no line has three of a kind: Draw.
แหล่งอ้างอิง
-
Example 1 ยังไม่ได้รันอินพุต:
board = ["XOX", ".X.", "O.X"]ผลลัพธ์ที่คาดหวัง:"X"เอาต์พุตของคุณ -
Example 2 ยังไม่ได้รันอินพุต:
board = ["XOX", "XOO", "OXX"]ผลลัพธ์ที่คาดหวัง:"Draw"เอาต์พุตของคุณ
มี 5 การทดสอบที่ซ่อนอยู่จะถูกรันเมื่อคุณส่งคำตอบ
คอมไพเลอร์และดีบักเกอร์ C# ออนไลน์
เขียน คอมไพล์ รัน และดีบัก C# ออนไลน์ ใช้ breakpoint การทำงานทีละขั้น และการตรวจสอบออบเจ็กต์ใน IDE หลายไฟล์โดยไม่ต้องใช้ Visual Studio
🚀 349,497 การดำเนินการทั้งหมด (43,755 ในเดือนนี้)
ฝึก 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();