4
1
paiza×Qiita記事投稿キャンペーン「プログラミング問題をやってみて書いたコードを投稿しよう!」

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

Last updated at Posted at 2024-08-15

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

2024/08/25
Javascriptのコードを修正いたしました。


方針

この問題は

  1. 整数Nを受け取る
  2. N回ループする繰り返し処理を実装
  3. 投球結果を受け取る
  4. 投球結果がstrikeだった場合には、
    1. 与えられたstrikeの数を数える
    2. strikeが3つたまった場合は、out!とコールする
    3. それ以外の場合は、strike!を出力する
  5. ballが入力された場合についても同様の処理をする
    方針で実装します。

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
# 整数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
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
# 整数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言語
#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#
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
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++
#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
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();
}
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1