PBT 2021의 도래 - Day 20 - 솔루션
가능한 속성 집합이 있는 CodeSandbox: https://codesandbox.io/s/advent-of-pbt-day-20-solution-21h7b?file=/src/index.spec.ts&previewwindow=tests
속성 1: 선형 트렁크를 구축해야 합니다.
for any requested size of tree n
it should render a tree having a linear trunk
빠른 확인으로 작성:
it("should build a linear trunc", () => {
fc.assert(
fc.property(fc.integer({ min: 1, max: 1000 }), (n) => {
// Arrange / Act
const tree = drawTree(n);
// Assert
// Remove all the leaves from the tree to only keep the trunk
const treeWithoutLeaves = tree
.split("\n")
.map((level) => level.replace(/[()]/g, " ").trimRight());
for (const level of treeWithoutLeaves) {
expect(level.trimLeft()).toEqual("^");
expect(level).toEqual(treeWithoutLeaves[0]);
}
})
);
});
속성 2: 더 크고 더 큰 수준을 만들어야 합니다.
for any requested size of tree n
it should render a tree having levels being larger and larger as we move down in the tree
빠른 확인으로 작성:
it("should create larger and larger levels", () => {
fc.assert(
fc.property(fc.integer({ min: 1, max: 1000 }), (n) => {
// Arrange / Act
const tree = drawTree(n);
// Assert
const treeLevels = tree.split("\n").map((level) => level.trim());
for (let index = 1; index < n; ++index) {
expect(treeLevels[index]).toContain(treeLevels[index - 1]);
}
})
);
});
속성 3: 나뭇잎을 한 수준에서 다음 수준으로 오프셋해야 합니다.
for any requested size of tree n
it should render a tree with leaves being offset from one level to the next one
빠른 확인으로 작성:
it("should offset leaves from one level to the next one", () => {
fc.assert(
fc.property(fc.integer({ min: 1, max: 1000 }), (n) => {
// Arrange / Act
const tree = drawTree(n);
// Assert
const treeLevels = tree.split("\n").map((level) => level.trim());
for (let index = 1; index < n; ++index) {
expect(treeLevels[index]).toEqual("(" + treeLevels[index - 1] + ")");
}
})
);
});
속성 4: 상단과 동일한 수준으로 크기 2의 기반을 만들어야 합니다.
for any requested size of tree n
it should render a tree having a base of size 2
빠른 확인으로 작성:
it("should create a base of size two with levels identical to the top", () => {
fc.assert(
fc.property(fc.integer({ min: 1, max: 1000 }), (n) => {
// Arrange / Act
const tree = drawTree(n);
// Assert
const treeLevels = tree.split("\n");
expect(treeLevels).toHaveLength(n + 2);
expect(treeLevels[n]).toEqual(treeLevels[0]);
expect(treeLevels[n + 1]).toEqual(treeLevels[0]);
})
);
});
다른 날에 다룬 주제와 솔루션을 확인합니다.
이 시리즈에 대한 자세한 내용은 해시태그 .
Reference
이 문제에 관하여(PBT 2021의 도래 - Day 20 - 솔루션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dubzzz/advent-of-pbt-2021-day-20-solution-43nm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)