diff --git a/js/tests/diamon_test.js b/js/tests/diamon_test.js new file mode 100644 index 00000000..696094db --- /dev/null +++ b/js/tests/diamon_test.js @@ -0,0 +1,193 @@ +export const tests = [] +const t = f => tests.push(f) +t(({ code }) => code.split('\n').filter(s => s.trim()).length < 78) +t(({ code }) => !code.includes('$')) + +t(({ eq }) => eq(diamon('x', 1)), $a.trim()) +t(({ eq }) => eq(diamon('x', 2)), $b.trim()) +t(({ eq }) => eq(diamon('x', 3)), $c.trim()) +t(({ eq }) => eq(diamon('<>', 4)), $d.trim()) +t(({ eq }) => eq(diamon('#', 40)), $e.trim()) +t(({ eq }) => eq(diamon('{}', 12)), $f.trim()) +t(({ eq }) => eq(diamon('ABC', 7)), $g.trim()) +t(({ eq }) => eq(diamon('<^>', 13)), $h.trim()) + +Object.freeze(tests) + +const $a = `x` +const $b = ` + x +xxx + x +` + +const $c = ` + x + xxx +xxxxx + xxx + x +` + +const $d = ` + <> + <><><> + <><><><><> +<><><><><><><> + <><><><><> + <><><> + <> +` + +const $e = ` + + # + ### + ##### + ####### + ######### + ########### + ############# + ############### + ################# + ################### + ##################### + ####################### + ######################### + ########################### + ############################# + ############################### + ################################# + ################################### + ##################################### + ####################################### + ######################################### + ########################################### + ############################################# + ############################################### + ################################################# + ################################################### + ##################################################### + ####################################################### + ######################################################### + ########################################################### + ############################################################# + ############################################################### + ################################################################# + ################################################################### + ##################################################################### + ####################################################################### + ######################################################################### + ########################################################################### + ############################################################################# +############################################################################### + ############################################################################# + ########################################################################### + ######################################################################### + ####################################################################### + ##################################################################### + ################################################################### + ################################################################# + ############################################################### + ############################################################# + ########################################################### + ######################################################### + ####################################################### + ##################################################### + ################################################### + ################################################# + ############################################### + ############################################# + ########################################### + ######################################### + ####################################### + ##################################### + ################################### + ################################# + ############################### + ############################# + ########################### + ######################### + ####################### + ##################### + ################### + ################# + ############### + ############# + ########### + ######### + ####### + ##### + ### + # +` + +const $f = ` + {} + {}{}{} + {}{}{}{}{} + {}{}{}{}{}{}{} + {}{}{}{}{}{}{}{}{} + {}{}{}{}{}{}{}{}{}{}{} + {}{}{}{}{}{}{}{}{}{}{}{}{} + {}{}{}{}{}{}{}{}{}{}{}{}{}{}{} + {}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{} + {}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{} + {}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{} +{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{} + {}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{} + {}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{} + {}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{}{} + {}{}{}{}{}{}{}{}{}{}{}{}{}{}{} + {}{}{}{}{}{}{}{}{}{}{}{}{} + {}{}{}{}{}{}{}{}{}{}{} + {}{}{}{}{}{}{}{}{} + {}{}{}{}{}{}{} + {}{}{}{}{} + {}{}{} + {} +` + +const $g = ` + ABC + ABCABCABC + ABCABCABCABCABC + ABCABCABCABCABCABCABC + ABCABCABCABCABCABCABCABCABC + ABCABCABCABCABCABCABCABCABCABCABC +ABCABCABCABCABCABCABCABCABCABCABCABCABC + ABCABCABCABCABCABCABCABCABCABCABC + ABCABCABCABCABCABCABCABCABC + ABCABCABCABCABCABCABC + ABCABCABCABCABC + ABCABCABC + ABC +` + +const $h = ` + <^> + <^><^><^> + <^><^><^><^><^> + <^><^><^><^><^><^><^> + <^><^><^><^><^><^><^><^><^> + <^><^><^><^><^><^><^><^><^><^><^> + <^><^><^><^><^><^><^><^><^><^><^><^><^> + <^><^><^><^><^><^><^><^><^><^><^><^><^><^><^> + <^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^> + <^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^> + <^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^> + <^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^> +<^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^> + <^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^> + <^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^> + <^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^> + <^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^><^> + <^><^><^><^><^><^><^><^><^><^><^><^><^><^><^> + <^><^><^><^><^><^><^><^><^><^><^><^><^> + <^><^><^><^><^><^><^><^><^><^><^> + <^><^><^><^><^><^><^><^><^> + <^><^><^><^><^><^><^> + <^><^><^><^><^> + <^><^><^> + <^> +` diff --git a/subjects/diamon/README.md b/subjects/diamon/README.md index c6e91668..8ea4e028 100644 --- a/subjects/diamon/README.md +++ b/subjects/diamon/README.md @@ -1,3 +1,33 @@ ## 🌟 Diamon -diamon (pyramid + reversed pyramid) +### Instructions + +Create a `diamon` function that takes a string and a number as parameters +and returns a diamond shape constructed by 2 arguments: + - the characters (as a string) to be repeated + - the size of a side (as a number) + +It is just like pyramid + a reversed pyramid + +### Output example + +- `*` character and side of 5 : + +``` + * + *** + ***** + ******* +********* + ******* + ***** + *** + * +``` + +> No new line in last line + +### Notions + +- [nan-academy.github.io/js-training/examples/loops](https://nan-academy.github.io/js-training/examples/loops.js) +- [nan-academy.github.io/js-training/examples/recursion](https://nan-academy.github.io/js-training/examples/recursion.js)