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" });
}
}