原创

haskell 求助

我刚刚开始学习haskell遇到个题目做不出来,要求写一个function.

它接受一个长度为偶数的 list 和一个条件返回新的list

findBonding :: Eq a => (a -> a -> Bool) -> [a] -> Maybe [(a,a)]

元组 list 满足所有元素都是从原list来的且出现一次 就是俩俩组合,且满足f

findBonding (\x -> \y -> x+y<6) [1, 2, 3, 4] 得到 [(1,2),(3,4)] , [(1,3),(2,4)] [(1,4),(2,3)]

findBonding (\x -> \y -> x*y<10) [1, 2, 3, 4] 得到 [(1,2),(3,4)] , [(1,3),(2,4)] , [(1,4),(2,3)]

这是我已经写的代码

findBonding :: Eq a => (a -> a -> Bool) -> [a] -> Maybe [(a,a)]

findBonding f xs

|length xs `mod`2/=0 =Nothing

| and [elem (y, x) rel | (x, y) <- rel]

= Just(rel)

| otherwise = Nothing

where

rel = [(a, b) | a <- xs, b <- xs, a /= b, f a b]

只能返回符合条件f的所有可能组合,但是弄不出俩俩组合的样子

  findBonding (\x -> \y -> x*y < 21) [2..7]
=> Just [(2,3),(2,4),(2,5),(2,6),(2,7),(3,2),(3,4),(3,5),(3,6),(4,2),(4,3),(4,5),(5,2),(5,3),(5,4),(6,2),(6,3),(7,2)]

这个条件只有一个可能的bond 就是[(2,7),(3,6),(4,5),(5,4),(6,3),(7,2)]

T T 我做了俩天了实在想不出该怎么做

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【Rust日报】2020-06-08 - Rust/WinRT快速入门

    Apache Benchmark style http bench tool written in async rust.

    MikeLoveRust
  • 人脸对齐--Face Alignment at 3000 FPS via Regressing Local Binary Features

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangjunhit/article/de...

    用户1148525
  • 解读gobgp

    gobgp是github上一个开源的项目,顾名思义,是使用golang实现的bgp功能,性能被夸得不要不要的,所以很值得花时间了解一下。

    DifficultWork
  • 【TBase开源版测评】Hello, TBase

    TBase是腾讯基于PostgreSQL研发的一个分布式HTAP数据库,适用于拥有海量数据、高并发、部分分析场景解决,以及分布式事务能力的应用场景。 从现有的资...

    HappenLee
  • SSserver的加速优化配置(三)

    用户1203875
  • 【AI迷你接入赛】急速打造自己的客服机器人

    不知阅读本文的你是否接触过一线售前或客服业务?客服人员,接触最多的是相同且机械的问题。为了优化流程,释放资源,我们接入了腾讯智能对话平台 TBP。为此,特将接入...

    Techeek
  • MySQL explain 中的 rows 究竟是如何计算的?

    疑问1:上述SQL理应按id主键(聚簇索引)范围查找,为啥explain里的rows会多余两者之差呢?

    架构精进之路
  • 不同的peak calling软件比较

    我一般用MACS2做peak calling,但是不知道效果是不是最好的,去搜了一下,发现14年有一篇文章用DNase-seq的数据比较了主流的几个peak c...

    生信编程日常
  • Python打印正方形

    py3study
  • 关于javascript中的this 一段小实例深有体会啊

    大当家

扫码关注云+社区

领取腾讯云代金券