scheme - 使用 map 或 reduce 或 filter,在 Scheme 中,计算列表中有多少个元素
问题描述
(number-length '(1 1 0 1 0 0)) 这假设返回 6。我知道如何使用长度并找到它,但我不知道如何在没有长度的情况下使用 map、filter 或 reduce。有人可以给出一些想法吗?
解决方案
映射和应用:
(define (number-length1 lst)
(apply + (map (lambda (n) 1) lst)))
折叠/减少:
(define (number-length2 lst)
(foldl (lambda (list-element n) (+ n 1))
0
lst))
映射和折叠/减少:
(define (number-length3 lst)
(foldl + 0 (map (lambda (n) 1) lst)))
推荐阅读
- java - 我应该编写自定义验证还是正确配置弹簧?
- acceleo - 3.7.x 版的 Acceleo 编译器(.mtl 到 .emtl)
- excel - 是否可以将数学文本放入 Excel 中?
- latex - 如何在 Sphinx 生成的 Latex 文档中添加版权声明?
- symfony - Symfony 4 - 如何为存在路由的 Web api REST 修复“404 Not Found”?
- python - 从带有其他数字的地址字符串中获取印度邮政编码
- python - 无法更新 Django 内置用户的 last_login 字段
- python - 如何使python中的函数超时
- c# - 使用 GetCurrentDirectory 函数获取同一位置的两个不同值
- android - StackNavigator 标题内的 DrawerNavigator