paizaラーニングレベルアップ問題集の「野球の審判」を色々な言語でやってみた

paiza×Qiita記事投稿キャンペーンということで、paizaラーニングレベルアップ問題集の[野球の審判](https://paiza.jp/works/mondai/c_rank_skillcheck_archive/umpire)を色々な言語でやってみました。対象は[コードモンスター大図鑑](https://paiza.jp/code_monster)で対応している9言語です。

2024/08/25
Javascriptのコードを修正いたしました。
- - -
###### 方針
この問題は
1. [整数Nを受け取る](https://paiza.jp/works/mondai/c_rank_skillcheck_archive/umpire_02)
1. [N回ループする繰り返し処理を実装](https://paiza.jp/works/mondai/c_rank_skillcheck_archive/umpire_03)
1. [投球結果を受け取る](https://paiza.jp/works/mondai/c_rank_skillcheck_archive/umpire_04)
1. [投球結果がstrikeだった場合には、](https://paiza.jp/works/mondai/c_rank_skillcheck_archive/umpire_05)
	1. [与えられたstrikeの数を数える](https://paiza.jp/works/mondai/c_rank_skillcheck_archive/umpire_06)
	1. [strikeが3つたまった場合は、out!とコールする](https://paiza.jp/works/mondai/c_rank_skillcheck_archive/umpire_07)
	1. それ以外の場合は、strike!を出力する
1. [ballが入力された場合についても同様の処理をする](https://paiza.jp/works/mondai/c_rank_skillcheck_archive/umpire)
方針で実装します。
- - -
###### PHP
```php
<?php
	// 整数Nを受け取る
	$n = fgets(STDIN);

	$strike = 0; // strikeの数
	$ball = 0; // ballの数

	// N回ループする繰り返し処理を実装
	for ($i = 0; $i < $n; $i++) {
		// 投球結果を受け取る
		$s = trim(fgets(STDIN));

		if ($s == "strike") { // 投球結果がstrikeだった場合には
			// 与えられたstrikeの数を数える
			$strike++;

			// strikeが3つたまった場合は、out!とコールする
			if ($strike == 3) {
				echo "out!\n";
			} else { // それ以外の場合は、strike!を出力する
				echo "strike!\n";
			}
		} else if ($s == "ball") { // ballが入力された場合についても同様の処理をする
			// 与えられたballの数を数える
			$ball++;

			// ballが4つたまった場合は、fourball!とコールする
			if ($ball == 4) {
				echo "fourball!\n";
			} else { // それ以外の場合は、ball!を出力する
				echo "ball!\n";
			}
		}
	}
?>
```
- - -
###### Ruby
```rb
# 整数Nを受け取る
n = gets.to_i

strike = 0 # strikeの数
ball = 0 # ballの数

# N回ループする繰り返し処理を実装
n.times do
	# 投球結果を受け取る
	s = gets.chomp

	if s == "strike" # 投球結果がstrikeだった場合には
		# 与えられたstrikeの数を数える
		strike += 1

		# strikeが3つたまった場合は、out!とコールする
		if strike == 3
			puts "out!"
		else # それ以外の場合は、strike!を出力する
			puts "strike!"
		end
	elsif s == "ball" # ballが入力された場合についても同様の処理をする
		# 与えられたballの数を数える
		ball += 1

		# ballが4つたまった場合は、fourball!とコールする
		if ball == 4
			puts "fourball!"
		else # それ以外の場合は、ball!を出力する
			puts "ball!"
		end
	end
end
```
- - -
###### Java	
```java
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		// 整数Nを受け取る
		int n = sc.nextInt();
		
		int strike = 0; // strikeの数
		int ball = 0; // ballの数
		
		// N回ループする繰り返し処理を実装
		for (int i = 0; i < n; i++) {
			// 投球結果を受け取る
			String s = sc.next();
			
			if ("strike".equals(s)) { // 投球結果がstrikeだった場合には
				// 与えられたstrikeの数を数える
				strike++;
				
				// strikeが3つたまった場合は、out!とコールする
				if (strike == 3) {
					System.out.println("out!");
				} else { // それ以外の場合は、strike!を出力する
					System.out.println("strike!");
				}
			} else if ("ball".equals(s)) { // ballが入力された場合についても同様の処理をする
				// 与えられたballの数を数える
				ball++;
				
				// ballが4つたまった場合は、fourball!とコールする
				if (ball == 4) {
					System.out.println("fourball!");
				} else { // それ以外の場合は、ball!を出力する
					System.out.println("ball!");
				}
			}
		}
		sc.close();
	}
}
```
- - -
###### Python
```py
# 整数Nを受け取る
n = int(input())

strike = 0 # strikeの数
ball = 0 # ballの数

# N回ループする繰り返し処理を実装
for _ in range(n):
	# 投球結果を受け取る
	s = input()

	if s == "strike": # 投球結果がstrikeだった場合には
		# 与えられたstrikeの数を数える
		strike += 1

		# strikeが3つたまった場合は、out!とコールする
		if strike == 3:
			print("out!")
		else: # それ以外の場合は、strike!を出力する
			print("strike!")
		
	elif s == "ball": # ballが入力された場合についても同様の処理をする
		# 与えられたballの数を数える
		ball += 1

		# ballが4つたまった場合は、fourball!とコールする
		if ball == 4:
			print("fourball!")
		else: # それ以外の場合は、ball!を出力する
			print("ball!")
```
- - -
###### C言語
```c
#include <stdio.h>
#include <string.h>

int main(void){
	// 整数Nを受け取る
	int n;
	scanf("%d", &n);

	int strike = 0; // strikeの数
	int ball = 0; // ballの数

	// N回ループする繰り返し処理を実装
	for (int i = 0; i < n; i++) {
		// 投球結果を受け取る
		char s[7];
		scanf("%s", s);

		if (!strcmp(s, "strike")) { // 投球結果がstrikeだった場合には
			// 与えられたstrikeの数を数える
			strike++;

			// strikeが3つたまった場合は、out!とコールする
			if (strike == 3) {
				puts("out!");
			} else { // それ以外の場合は、strike!を出力する
				puts("strike!");
			}
		} else if (!strcmp(s, "ball")) { // ballが入力された場合についても同様の処理をする
			// 与えられたballの数を数える
			ball++;

			// ballが4つたまった場合は、fourball!とコールする
			if (ball == 4) {
				puts("fourball!");
			} else { // それ以外の場合は、ball!を出力する
				puts("ball!");
			}
		}
	}
	return 0;
}
```
- - -
###### C#
```cs
using System;

class Program
{
	static void Main()
	{
		// 整数Nを受け取る
		int n = int.Parse(Console.ReadLine());
		
		int strike = 0; // strikeの数
		int ball = 0; // ballの数
		
		// N回ループする繰り返し処理を実装
		for (int i = 0; i < n; i++) {
			// 投球結果を受け取る
			string s = Console.ReadLine();
			
			if ("strike".Equals(s)) { // 投球結果がstrikeだった場合には
				// 与えられたstrikeの数を数える
				strike++;
				
				// strikeが3つたまった場合は、out!とコールする
				if (strike == 3) {
					Console.WriteLine("out!");
				} else { // それ以外の場合は、strike!を出力する
					Console.WriteLine("strike!");
				}
			} else if ("ball".Equals(s)) { // ballが入力された場合についても同様の処理をする
				// 与えられたballの数を数える
				ball++;
				
				// ballが4つたまった場合は、fourball!とコールする
				if (ball == 4) {
					Console.WriteLine("fourball!");
				} else { // それ以外の場合は、ball!を出力する
					Console.WriteLine("ball!");
				}
			}
		}
	}
}
```
- - -
###### Javascript
```js
const lines = require("fs").readFileSync("/dev/stdin", "utf8").split("\n");

// 整数Nを受け取る
// 2024-08-25 parseIntからNumberに修正
// const n = parseInt(lines[0]);
const n = Number(lines[0]);

let strike = 0; // strikeの数
let ball = 0; // ballの数

// N回ループする繰り返し処理を実装
for (var i = 1; i <= n; i++) {
	// 投球結果を受け取る
	let s = lines[i];
	
	if (s === "strike") { // 投球結果がstrikeだった場合には
		// 与えられたstrikeの数を数える
		strike++;
		
		// strikeが3つたまった場合は、out!とコールする
		if (strike === 3) {
			console.log("out!");
		} else { // それ以外の場合は、strike!を出力する
			console.log("strike!");
		}
	} else if (s === "ball") { // ballが入力された場合についても同様の処理をする
		// 与えられたballの数を数える
		ball++;
		
		// ballが4つたまった場合は、fourball!とコールする
		if (ball === 4) {
			console.log("fourball!");
		} else { // それ以外の場合は、ball!を出力する
			console.log("ball!");
		}
	}
}
```
- - -
###### C++
```cpp
#include <iostream>
using namespace std;

int main(void){
	// 整数Nを受け取る
	int n;
	cin >> n;

	int strike = 0; // strikeの数
	int ball = 0; // ballの数

	// N回ループする繰り返し処理を実装
	for (int i = 0; i < n; i++) {
		// 投球結果を受け取る
		string s;
		cin >> s;

		if (s == "strike") { // 投球結果がstrikeだった場合には
			// 与えられたstrikeの数を数える
			strike++;

			// strikeが3つたまった場合は、out!とコールする
			if (strike == 3) {
				cout << "out!" << endl;
			} else { // それ以外の場合は、strike!を出力する
				cout << "strike!" << endl;
			}
		} else if (s == "ball") { // ballが入力された場合についても同様の処理をする
			// 与えられたballの数を数える
			ball++;

			// ballが4つたまった場合は、fourball!とコールする
			if (ball == 4) {
				cout << "fourball!" << endl;
			} else { // それ以外の場合は、ball!を出力する
				cout << "ball!" << endl;
			}
		}
	}
	return 0;
}
```
- - -
###### Kotlin
```kotlin
import java.util.*;

fun main() {
	val sc = Scanner(System.`in`);
	
	// 整数Nを受け取る
	val n = sc.nextInt();
	
	var strike = 0; // strikeの数
	var ball = 0; // ballの数
	
	// N回ループする繰り返し処理を実装
	for (i in 1..n) {
		// 投球結果を受け取る
		var s = sc.next();
		
		if ("strike".equals(s)) { // 投球結果がstrikeだった場合には
			// 与えられたstrikeの数を数える
			strike++;
			
			// strikeが3つたまった場合は、out!とコールする
			if (strike == 3) {
				println("out!");
			} else { // それ以外の場合は、strike!を出力する
				println("strike!");
			}
		} else if ("ball".equals(s)) { // ballが入力された場合についても同様の処理をする
			// 与えられたballの数を数える
			ball++;
			
			// ballが4つたまった場合は、fourball!とコールする
			if (ball == 4) {
				println("fourball!");
			} else { // それ以外の場合は、ball!を出力する
				println("ball!");
			}
		}
	}
	sc.close();
}
```