paiza×Qiita記事投稿キャンペーンということで、paizaラーニングレベルアップ問題集の野球の審判を色々な言語でやってみました。対象はコードモンスター大図鑑で対応している9言語です。
2024/08/25
Javascriptのコードを修正いたしました。
方針
この問題は
- 整数Nを受け取る
- N回ループする繰り返し処理を実装
- 投球結果を受け取る
-
投球結果がstrikeだった場合には、
- 与えられたstrikeの数を数える
- strikeが3つたまった場合は、out!とコールする
- それ以外の場合は、strike!を出力する
-
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();
}