3
2

3がつくときだけアホになるやつではない

【世界の...】が付くと、山ちゃん(手羽先のアレ)が思いついちゃう。

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

/** ここから定型文 */
ここで記載したクラスについては、
こっちの記事に書いてある、標準入力を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>
/** ここまで定型文 */

実装クラス

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

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

public class FizzBuzz extends Question {

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

  /**
   * 整数 N が入力として与えられます。
   * 
   * 1からNまでの整数を1から順に表示してください。
   * 
   * ただし、表示しようとしている数値が、
   * 
   * ・3の倍数かつ5の倍数のときには、"Fizz Buzz"
   * ・3の倍数のときには、"Fizz"
   * ・5の倍数のときには、"Buzz"
   * 
   * を数値の代わりに表示してください。
   */
  @Override
  public List<String> answer() {
    return IntStream.range(1, Integer.parseInt(list.get(0)) + 1)
        .mapToObj(i -> i % 15 == 0 ? "Fizz Buzz" : i % 3 == 0 ? "Fizz" : i % 5 == 0 ? "Buzz" : String.valueOf(i))
        .collect(Collectors.toList());
  }
}

テストクラス

FizzBuzzTest.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 FizzBuzzTest {

  @Test
  void testAnswer1() {
    FizzBuzz testClass = new FizzBuzz(List.of("5"));
    assertArrayEquals(testClass.answer().toArray(), new String[] { "1",
        "2",
        "Fizz",
        "4",
        "Buzz" });
  }

  @Test
  void testAnswer2() {
    FizzBuzz testClass = new FizzBuzz(List.of("20"));
    assertArrayEquals(testClass.answer().toArray(), new String[] { "1",
        "2",
        "Fizz",
        "4",
        "Buzz",
        "Fizz",
        "7",
        "8",
        "Fizz",
        "Buzz",
        "11",
        "Fizz",
        "13",
        "14",
        "Fizz Buzz",
        "16",
        "17",
        "Fizz",
        "19",
        "Buzz" });
  }
}

世界のナベアツロジック(3の倍数と3の付く数字の時にアホになるアレ

FizzBuzzの解説とか世の中に溢れてるため、特に何もなかったので、
桂三度さんのだいぶ古いネタをプログラム化してみたよ。
※こっちについても二番煎じ、三番煎じ感が強いところですが。。。

実装クラス

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

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

public class Nabeatsu extends Question {

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

  /**
   * 整数 N が入力として与えられます。
   * 
   * 1からNまでの整数を1から順に表示してください。
   * 
   * ただし、表示しようとしている数値が、
   * 
   * ・3の倍数 または 3の付く数字のときには、"[数字]!(アホになる"
   * 
   * を数値の代わりに表示してください。
   */
  @Override
  public List<String> answer() {
    return IntStream.range(1, Integer.parseInt(list.get(0)) + 1)
        .mapToObj(i -> i % 3 == 0 || String.valueOf(i).indexOf("3") >= 0 ? (i + "!(アホになる") : String.valueOf(i))
        .collect(Collectors.toList());
  }
}

テストクラス

NabeatsuTest.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 NabeatsuTest {

  @Test
  void testAnswer1() {
    Nabeatsu testClass = new Nabeatsu(List.of("40"));
    assertArrayEquals(testClass.answer().toArray(),
        new String[] { "1",
            "2",
            "3!(アホになる",
            "4",
            "5",
            "6!(アホになる",
            "7",
            "8",
            "9!(アホになる",
            "10",
            "11",
            "12!(アホになる",
            "13!(アホになる",
            "14",
            "15!(アホになる",
            "16",
            "17",
            "18!(アホになる",
            "19",
            "20",
            "21!(アホになる",
            "22",
            "23!(アホになる",
            "24!(アホになる",
            "25",
            "26",
            "27!(アホになる",
            "28",
            "29",
            "30!(アホになる",
            "31!(アホになる",
            "32!(アホになる",
            "33!(アホになる",
            "34!(アホになる",
            "35!(アホになる",
            "36!(アホになる",
            "37!(アホになる",
            "38!(アホになる",
            "39!(アホになる",
            "40" });
  }
}
3
2
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
3
2