PBT 2021 の到来 - 17 日目
6746 ワード
Advent of PBT 2021 — Learn how to use property based testing and fast-check through examples
今日のアルゴリズムは isHumbleNumber です.
次のドキュメントとプロトタイプが付属しています.
/**
* Check if a number is an Humber number.
*
* Humble numbers are positive integers which have
* no prime factors > 7.
*
* Source: https://rosettacode.org/wiki/Humble_numbers
*
* @param n - The number to be checked,
* superior or equal to zero and up to 2**31 -1
*/
declare function isHumbleNumber(n: number): boolean;
すでにいくつかの例に基づいたテストを書いています:
it("should consider any prime number <=7 as humble", () => {
expect(isHumbleNumber(2)).toBe(true);
expect(isHumbleNumber(3)).toBe(true);
expect(isHumbleNumber(5)).toBe(true);
expect(isHumbleNumber(7)).toBe(true);
});
it("should consider any number <=7 as humble", () => {
expect(isHumbleNumber(0)).toBe(true);
expect(isHumbleNumber(1)).toBe(true);
expect(isHumbleNumber(4)).toBe(true);
expect(isHumbleNumber(6)).toBe(true);
});
it("should consider any compositite of 2, 3, 5 or 7 as humble", () => {
expect(isHumbleNumber(2 * 2 * 2 * 2 * 2)).toBe(true);
expect(isHumbleNumber(2 * 2 * 3 * 3 * 5 * 5 * 7 * 7)).toBe(true);
});
it("should consider number with prime factor >7 as non-humble", () => {
expect(isHumbleNumber(11)).toBe(false);
expect(isHumbleNumber(2 * 11)).toBe(false);
});
プロパティベースのテストでどのようにカバーしますか?
作業を容易にするために、セットアップ済みの CodeSandbox を提供します.これには、例に基づいたテストが既に作成されており、アルゴリズムの可能な実装が含まれています: https://codesandbox.io/s/advent-of-pbt-day-17-qvdwh?file=/src/index.spec.ts&previewwindow=tests
解決策を見たいですか?今日のアルゴリズムをカバーするために私が持ってきたプロパティのセットは次のとおりです.
他の日に取り上げられたトピックとその解決策を確認するには.
このシリーズの詳細については、ハッシュタグ .
Reference
この問題について(PBT 2021 の到来 - 17 日目), 我々は、より多くの情報をここで見つけました https://dev.to/dubzzz/advent-of-pbt-2021-day-17-3p8bテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol