小编cat*_*all的帖子

是否有更干净,优雅的Haskell方式来编写这个LCM功能?

我刚刚开始使用Haskell并敲定了这个简单的递归算法,以便为列表中的每个数字找到LCM.它有效,但它很混乱,我希望有一些同行评论如何使这更优雅,可读和Haskell-y.

lcms list 
  | length list > 1 = lcms (lcm (head list) (head (tail list)):(tail (tail list)))
  | otherwise = list
Run Code Online (Sandbox Code Playgroud)

因此,它采用一个列表并对前两个项目进行LCM,然后将其预先列出减去这两个元素.基本上,我想要的psudocode是这样的:

lcms [a,b,c] = lcm (a, (lcm (b, c))
Run Code Online (Sandbox Code Playgroud)

任何建议,任何人?我渴望在Haskell上进行改进并撰写人们可以阅读的内容.效率提示也是受欢迎的!

谢谢,全部!

recursion haskell readability lcm fold

3
推荐指数
1
解决办法
210
查看次数

数千个值的 Redshift IN 条件

获取与 ~100k 值中的任何一个匹配的数据的最佳方法是什么?

对于这个问题,我正在使用 Amazon Redshift 数据库并有一个类似这样的表,其中包含数亿行:

--------------------
| userID | c1 | c2 |
| 101000 | 12 | 'a'|
| 101002 | 25 | 'b'|
____________________
Run Code Online (Sandbox Code Playgroud)

还有数百万个唯一的用户 ID。我有一个包含 98,000 个我关心的用户 ID 的 CSV 列表,我想对这些特定用户的列进行数学计算。

select c1, c2 from table where userID in (10101, 10102, ...)
Run Code Online (Sandbox Code Playgroud)

与这样的巨型列表匹配的最佳解决方案是什么?

我的方法是制作一个 python 脚本,读取我们条件集中所有用户的结果,然后在 python 中根据 CSV 进行过滤。它非常缓慢,但并非在所有情况下都有效。

一位同事建议将 98k 用户上传到临时表中,然后加入查询。这似乎是最聪明的方法,但我想问你们是否都有想法。

我还想知道打印一个包含所有 98k 用户的超长 SQL 查询是否可以匹配并运行它。出于好奇,那甚至会跑吗?

sql database postgresql data-warehouse amazon-redshift

0
推荐指数
1
解决办法
949
查看次数