diff options
Diffstat (limited to 'anagrams.tlv')
-rw-r--r-- | anagrams.tlv | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/anagrams.tlv b/anagrams.tlv index b48d5c4..d4ffc81 100644 --- a/anagrams.tlv +++ b/anagrams.tlv @@ -236,6 +236,7 @@ >end - __teliva_timestamp: original count_letters: + >-- TODO: handle unicode >function count_letters(s) > local result = {} > for i=1,s:len() do @@ -249,6 +250,21 @@ > return result >end - __teliva_timestamp: original + count: + >-- turn an array of elements into a map from elements to their frequency + >-- analogous to count_letters for non-strings + >function count(a) + > local result = {} + > for i, v in ipairs(a) do + > if result[v] == nil then + > result[v] = 1 + > else + > result[v] = result[v] + 1 + > end + > end + > return result + >end +- __teliva_timestamp: original union: >function union(a, b) > for k, v in pairs(b) do @@ -488,8 +504,8 @@ >function count_anagrams(s) > local result = factorial(s:len()) > local letter_counts = count_letters(s) - > for k, v in pairs(letter_counts) do - > result = result / factorial(v) + > for l, cnt in pairs(letter_counts) do + > result = result / factorial(cnt) > end > return result >end |