我忘记提到的一件事我之前的帖子问题是矩阵查找方法对字符数据的适应能力较差。 代码在使用 matrices.JSL 进行集合运算包含函数映射字符串它将由小写字母组成的字符串转换为数值。 这种映射会大大减慢速度。 在相关帖子中, @阿迪-B询问有关对数据表列执行查找和替换的问题。 同样,我们正在处理从一个字符串到其他字符串(在本例中为另一个字符串)的映射。
这导致了本月的挑战:将一组值映射到一组新值的最快方法是什么?
- 对于连续数据,将值分组为分位数、十分位数(即 10 组)可能是最常见的做法,通常是有意义的。 写一个函数,分位数组(内维克,定量) ,它采用一个向量和一个大于 1 的正整数,并返回输入值所属的分位数组。 例如,如果
内维克= [1,2,3,4,5,6,7,8,9]和定量= 3
该函数将返回[1,1,1,2,2,2,3,3,3] 。
您必须决定如何处理跨越分位数组边界的值,特别是在存在重复项的情况下。
- 在处理许多级别的分类数据时,将低计数级别聚合到单个级别通常是有意义的。 创建一个函数聚合低计数(列表中)它接受分类值的输入列表并返回一个列表,该列表将具有高计数的值映射到其自身,并将具有低计数的值映射到单个新组。 如何确定低计数的截止值是挑战的一部分。
- 参考上面提到的帖子,创建一个函数查找和替换(列表中,地图)它接受一个字符串列表,并且对于每一项,使用作为第二个参数提供的关联数组进行从一个子字符串到一个新子字符串的映射。 该映射可以是一对一或多对一的。
- (额外加分)搜索字符串列表可以比洛克? 的目的映射字符串是将字符串转换为数字,所以本地排序,它使用二分搜索,可以使用。 本地排序比洛克。 尝试创建一个函数, locSortedString(字符串列表,字符串)找到字符串的位置字符串从排序后的字符串列表中字符串列表。 很难想象创造比这更快的东西洛克事先不知道可能出现的字符串值。 考虑到这一点,假设所有字符串都来自我们使用的单词列表挑战1 。 它附在下面。
祝你好运!