From b545e8e5e3086f78b9b148c68d7874b8ecf2b79a Mon Sep 17 00:00:00 2001 From: cpunch Date: Tue, 23 Feb 2021 11:50:41 -0600 Subject: [PATCH] Added another example script 'compare.comso' - This stresses the table implementation as well as cosmoV_equals --- examples/compare.cosmo | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 examples/compare.cosmo diff --git a/examples/compare.cosmo b/examples/compare.cosmo new file mode 100644 index 0000000..00319a7 --- /dev/null +++ b/examples/compare.cosmo @@ -0,0 +1,40 @@ +var strtable = [] +var strLen = 4 // length of all strings to generate +var AByte = "A":byte() // grabs the ascii value of 'A' + +proto stringBuilder + function __init(self, length) + self.len = length + end + + // we are the iterator object lol + function __iter(self) + self.x = 0 + return self + end + + function __next(self) + var x = self.x++ + + // if we've generated all the possible strings, return nil ending the loop + if x >= 26 ^ self.len then + return nil + end + + // generate the string + var str = "" + for (var i = 0; i < self.len; i++) do + str = string.char(AByte + (x % 26)) .. str + + x = math.floor(x / 26) + end + + return str + end +end + +// generate a bunch of strings & populate the table +print("generating " .. 26 ^ strLen .. " strings...") +for str in stringBuilder(strLen) do + strtable[str] = true +end \ No newline at end of file