1
0

そろそろ審判ってAIにならないのか?

野球に然り、オリンピックに然り、誤審がどうのこうのって騒がれてるけど、
AIじゃなくてもいいけどビデオ判定で全部済ませればよくね?とか思っちゃう今日このごろ。
そしたら審判分の人件費浮くよね?(カメラとかの維持費のほうが高いのかしら?

チェック処理とかは端折ってる

/** ここから定型文 */
ここで記載したクラスについては、
こっちの記事に書いてある、標準入力をList化したりしてるMainクラスから呼び出す予定だし・なんか継承したりしてるYO!!

ちな、Mainを実行して標準入力から入力するのクソ面倒くさいので、
Java編については問題の入力例をパラメータにしたテストクラスとかも作って公開するYO!!

開発・実行環境はこんな感じ
  • VSCode
  • Java 17
  • jUnit 5.9
  • maven

pom.xmlはこんな感じ

pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>jp.co.asil</groupId>
    <artifactId>paiza202408</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.9.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
/** ここまで定型文 */

実装クラス

Umpire.java
package jp.co.asil.paiza202408;

import java.util.List;
import java.util.stream.Collectors;

public class Umpire extends Question {

  public Umpire(List<String> list) {
    super(list);
  }

  @Override
  public List<String> answer() {
    // カウンター(ストライク数、ボール数)
    int[] counter = { 0, 0 };
    return list.subList(1, Integer.parseInt(list.get(0)) + 1).stream().map(ball -> {
      String ret = "";
      if (ball.equals("strike")) {
        counter[0]++;
        ret = counter[0] == 3 ? "out!" : "strike!";
      } else if (ball.equals("ball")) {
        counter[1]++;
        ret = counter[1] == 4 ? "fourball!" : "ball!";
      }
      return ret;
    }).collect(Collectors.toList());
  }

}

実装クラス

UmpireTest.java
package jp.co.asil.paiza202408;

import static org.junit.jupiter.api.Assertions.assertArrayEquals;

import java.util.List;

import org.junit.jupiter.api.Test;

public class UmpireTest {
  @Test
  void testAnswer1() {
    Umpire testClass = new Umpire(List.of("5",
        "ball",
        "strike",
        "ball",
        "strike",
        "strike"));
    assertArrayEquals(testClass.answer().toArray(), new String[] { "ball!",
        "strike!",
        "ball!",
        "strike!",
        "out!" });
  }

  @Test
  void testAnswer2() {
    Umpire testClass = new Umpire(List.of("6",
        "ball",
        "strike",
        "ball",
        "ball",
        "strike",
        "ball"));
    assertArrayEquals(testClass.answer().toArray(), new String[] { "ball!",
        "strike!",
        "ball!",
        "ball!",
        "strike!",
        "fourball!" });
  }
}

まとめ

ifの中でifをネストさせたくなかったため、多項式で文字列を設定するようにしてみました。

1
0
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
1
0