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
例
入力:
board = ["XOX", ".X.", "O.X"]
期待される出力:
"X"
解説
X holds the diagonal from top-left to bottom-right, so X wins.
入力:
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#コードをオンラインで作成、コンパイル、実行、デバッグできます。Visual Studioなしで、複数ファイルIDEのブレークポイント、ステップ実行、オブジェクト確認を利用できます。
🔷 この C# / .NET オンライン実行ツールについて
CodeUtility C# Executor は、ブラウザ上で本物の C# コードをそのまま書いて実行できるツールです — インストール、Visual Studio のセットアップ、.NET SDK は不要です。安全なサンドボックスで動作し、 .NET ランタイムと C# 9 以降を含むモダンな C# 言語バージョンに対応しています。
このツールは内部で dotnet-script を用いてコードをコンパイル・実行し、.NET 本来の挙動で動かせます。 LINQ、async/await、パターンマッチ、ジェネリクスといった基本から高度な C# 機能まで試せます。
シンプルなスクリプト、関数、ロジックの流れを検証したり、クラス、構造体、継承、インターフェイスなどの概念を — 余計なもののない快適なコーディング環境で探索できます。
C# を学習中でも、アルゴリズムを検証中でも、.NET の機能を実験中でも、CodeUtility C# Executor なら、どのブラウザからでも C# コードをすぐに安全・確実に実行できます。
同じ実行環境で、複数ファイル対応エディター、分離された実行ターミナル、ランタイム別ライブラリ、永続ワークスペース、共有、リアルタイム共同作業を利用できます。
この実行環境の使い方
ランタイムを選択し、ファイルを開くか作成してコードを記述し、[実行]を選択します。出力はターミナルに表示されます。サインインしたユーザーは、ワークスペースにファイルを保存し、ライブラリをインストールして、共有を通じて共同作業できます。
- バージョンを選択して現在のファイルを編集するか、ワークスペース内の別のファイルを開きます。
- コードを実行し、求められた場合はターミナルに入力して、保存された実行履歴を確認します。
- 複数のコードスニペットが必要な作業では、ライブラリ、ワークスペースツール、共有、チャットを利用します。
💡 C# の基本と、上で試せるサンプル
1. 変数と定数の宣言
C# では強い型付けの変数宣言を使います。コンパイル時の定数には 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("1");
}
else if (x == 2)
{
Console.WriteLine("2");
}
else
{
Console.WriteLine("その他");
}
switch (x)
{
case 1:
Console.WriteLine("1");
break;
case 2:
Console.WriteLine("2");
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<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 を使用します。
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. ファイル I/O
ファイル操作には File と StreamReader/StreamWriter を使います。
File.WriteAllText("file.txt", "Hello File");
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();