挑戦問題を格納しました

This commit is contained in:
m-mun
2026-09-16 12:25:03 +09:00
parent 093c94fcb8
commit 43ef034dd9
153 changed files with 12477 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
○システム名
マヨイドーロ
○システム説明
「テスト技法・設計手法演習問題(テストファースト).pdf」参照
○出題タイミング
設計・テスト技法の「JUnit」終了後に出題
○配布物
src
test
テスト技法・設計手法演習問題(テストファースト).pdf
○進め方
testの中の配置されているJUnitを使用してオールグリーンになるようにプログラムを作成する
演習課題としてではなく、練習問題として出題してださい(納品はなし)
12:30〜17:30まで時間を使ってしまって構いません。
グループ単位でパターンの洗い出しをさせて、プログラムを組む流れで実施してください
※教室のレベルが高い場合は個人で実施させても良いと思います。
○納品物
特になし
○早く終わったら・・・・
現状特にないため練習問題等を復習させても良い(過去の問題のJUnitを作成する等)

View File

@@ -0,0 +1,47 @@
/*
* Road.java
* 作成 IT-College 2016
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package testfirst.road.check;
/**
* テスト技法・設計手法演習問題です。
* このクラスを対象としたテストクラス:RoadTestのテストメソッドを実行した時に、
* 全てのテストメソッドがグリーンで完了するよう実装して下さい
*
* ※もちろん、テストケース以外のパターンでも正常動作するようにしてください
* @author IT-College
*
*/
public class Road {
/**
* N が与えられたとき、P を出力するプログラムです。
* @param 試行回数
* @return Bにたどり着ける回数
*/
public static String check(int n) {
/*
* N を「反転回数の上限」とします。言い換えるなら N は「その回数までは反転してかまわないという数」です。
* P を「A から入って B から出るルートの種類の数」とします
*/
/* ex)
* もしも N が 1 の場合、B から出るルートは、
* • A → イ → ウ → イ → ア → B
* • A → イ → ア → B
* という 2 種類があるので、P は 2 になります。
*/
/* ex)
* もしも N が 4 の場合、B から出るルートは、
* • X → イ → ウ → イ → ア → B
* • X → イ → ウ → イ → ア → イ → ウ → イ → ア → B
* • X → イ → ウ → イ → ア → イ → ア → B
* • X → イ → ウ → イ → ウ → イ → ア → B
* • X → イ → ア → B
* • X → イ → ア → イ → ウ → イ → ア → B
* • X → イ → ア → イ → ア → B
* という 7 種類があるので、P は 7 になります。
*/
return null;
}
}

View File

@@ -0,0 +1,38 @@
/*
* Road.java
* 作成 IT-College 2016
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package testfirst.road.main;
import java.util.InputMismatchException;
import java.util.Scanner;
import testfirst.road.check.Road;
/**
* テスト技法・設計手法演習問題のRoad.checkメソッドを実行するクラスです。
* エントリーポイント用
* @author IT-College
*
*/
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = 0;
while (true) {
System.out.println("N(反転回数の上限)を入力して下さい。上限はintの上限値及び、正の数とします");
try {
n = scanner.nextInt();
if (n < 0) {
System.out.println("範囲外の入力です");
continue;
}
break;
} catch(InputMismatchException e) {
System.out.println("範囲外の入力です");
scanner.next();
}
}
String p = Road.check(n);
System.out.println("[N:" + n + "] の場合、[P:" + p + "]");
}
}

View File

@@ -0,0 +1,82 @@
/*
* RoadTest.java
* 作成 IT-College 2016
*------------------------------------------------------------
* Copyright(c) Rhizome Inc. All Rights Reserved.
*/
package testfirst.road.check;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
/**
* road.main.Roadクラスメソッドのテストクラスです。
* JUnitテストを実行して、テストをクリアするように実装して下さい
* @author IT-College
*
*/
public class RoadTest {
@Test
public void Nに0の場合() {
String expected = new String("0");
String actual = Road.check(0);
//assertThat(actual, is(expected)); // JUnit4のソースコード
Assertions.assertEquals(actual, expected);
}
@Test
public void Nに1の場合() {
String expected = new String("2");
String actual = Road.check(1);
//assertThat(actual, is(expected)); // JUnit4のソースコード
Assertions.assertEquals(actual, expected);
}
@Test
public void Nに3の場合() {
String expected = new String("7");
String actual = Road.check(3);
//assertThat(actual, is(expected)); // JUnit4のソースコード
Assertions.assertEquals(actual, expected);
}
@Test
public void Nに4の場合() {
String expected = new String("7");
String actual = Road.check(4);
//assertThat(actual, is(expected)); // JUnit4のソースコード
Assertions.assertEquals(actual, expected);
}
@Test
public void Nに5の場合() {
String expected = new String("20");
String actual = Road.check(5);
//assertThat(actual, is(expected)); // JUnit4のソースコード
Assertions.assertEquals(actual, expected);
}
@Test
public void Nに10の場合() {
String expected = new String("143");
String actual = Road.check(10);
//assertThat(actual, is(expected)); // JUnit4のソースコード
Assertions.assertEquals(actual, expected);
}
@Test
public void Nに100の場合() {
String expected = new String("927372692193078999175");
String actual = Road.check(100);
//assertThat(actual, is(expected)); // JUnit4のソースコード
Assertions.assertEquals(actual, expected);
}
@Test
public void Nに1000の場合() {
String expected = new String("113796925398360272257523782552224175572745930353730513145086634176691092536145985470146129334641866902783673042322088625863396052888690096969577173696370562180400527049497109023054114771394568040040412172632375");
String actual = Road.check(1000);
//assertThat(actual, is(expected)); // JUnit4のソースコード
Assertions.assertEquals(actual, expected);
}
@Test
public void Nに2015の場合() {
String expected = new String("24410294683171395267259945469996127000411199333760853190535535281681195871429510314079442068798555059453792431772087225245168879580469159794544170936403149540819320510882801573596907938222922817134288725100817648047405608500267748766714030468003650259685406411646787207097050545802045736020993909154298598218721111963426993884619351338577630868510716463423585020972878819198991971234596733617320373133963970742975210614208");
String actual = Road.check(2015);
//assertThat(actual, is(expected)); // JUnit4のソースコード
Assertions.assertEquals(actual, expected);
}
}