From 8a222956c69af92cb21d5715375ffaa3bef30766 Mon Sep 17 00:00:00 2001 From: koronya Date: Sun, 14 Jun 2026 19:15:41 +0900 Subject: [PATCH] [JS][7kyu] Clean Nesting Tree --- codewars/7kyu/clean-nesting-tree/koronya.js | 54 +++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 codewars/7kyu/clean-nesting-tree/koronya.js diff --git a/codewars/7kyu/clean-nesting-tree/koronya.js b/codewars/7kyu/clean-nesting-tree/koronya.js new file mode 100644 index 000000000..18bed17c6 --- /dev/null +++ b/codewars/7kyu/clean-nesting-tree/koronya.js @@ -0,0 +1,54 @@ +// [JS][7kyu] Clean Nesting Tree +// clean-nesting-tree +// https://www.codewars.com/kata/67c9c1cdf96c66388eb35cd4/train/javascript + +const isNested = (item) => item.length !== 0 +const isNotEqualArr = (arr) => new Set(arr).size > 1 + +const isInvalidArr = (arr) => isNotEqualArr(arr.map((item) => isNested(item))) + +const isCleanlyNested = (xs) => { + const stack = [] + stack.push(xs) + while (stack.length > 0) { + let arr = stack.shift() + if (!arr) { + continue + } + if (isInvalidArr(arr)) { + return false + } + arr.forEach((item) => stack.push(item)) + } + + return true +} + +// isCleanlyNested([]) === true +// isCleanlyNested([[], []]) === true +// isCleanlyNested([ +// [[], [], []], +// [[], [[]]], +// ]) === false +// isCleanlyNested([[[[[]], [[]]], [[]]], [[]]]) === true +// isCleanlyNested([ +// [ +// [ +// [[[], [], [], []], [[[[]], [[]], [[]]]]], +// [[], [], [], [], [], []], +// ], +// ], +// [[], [], [], []], +// ]) === true +// isCleanlyNested([[[], [], [], [], []]]) === true +// isCleanlyNested([ +// [ +// [[], [], []], +// [[], [], []], +// [[], [], []], +// [[], [], [], [], [], []], +// ], +// ]) === true +// isCleanlyNested([[], [[], [[], [[], [], [], []], [[[], [], [], []], [], [], [[], [], [], [], [], []]], []], []], [], [], [], []]) === false +// isCleanlyNested([[], [[], [], []], []]) === false +// isCleanlyNested([[], [], [[], [[], [], [], []], [], []], [], [], []]) === false