首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Haskell初始化n个偶数/奇数列表

Haskell是一种纯函数式编程语言,它具有强静态类型系统和惰性求值的特点。在Haskell中,可以使用列表推导式来初始化n个偶数或奇数的列表。

  1. 初始化n个偶数列表:

偶数是可以被2整除的数字。我们可以使用列表推导式来生成一个包含n个偶数的列表。以下是一个示例代码:

代码语言:txt
复制
evenNumbers :: Int -> [Int]
evenNumbers n = [x | x <- [2,4..], length (take n [x | x <- [2,4..]]) == n]

在上述代码中,我们使用了两个列表推导式。第一个列表推导式 [x | x <- [2,4..]] 生成了一个无限递增的偶数列表。第二个列表推导式 length (take n [x | x <- [2,4..]]) == n 用于筛选出前n个偶数。函数 evenNumbers 接受一个整数参数n,并返回一个包含n个偶数的列表。

  1. 初始化n个奇数列表:

奇数是不能被2整除的数字。我们可以使用列表推导式来生成一个包含n个奇数的列表。以下是一个示例代码:

代码语言:txt
复制
oddNumbers :: Int -> [Int]
oddNumbers n = [x | x <- [1,3..], length (take n [x | x <- [1,3..]]) == n]

在上述代码中,我们同样使用了两个列表推导式。第一个列表推导式 [x | x <- [1,3..]] 生成了一个无限递增的奇数列表。第二个列表推导式 length (take n [x | x <- [1,3..]]) == n 用于筛选出前n个奇数。函数 oddNumbers 接受一个整数参数n,并返回一个包含n个奇数的列表。

这些函数可以通过在Haskell的交互式环境中调用来使用。例如,evenNumbers 5 将返回一个包含前5个偶数的列表,oddNumbers 5 将返回一个包含前5个奇数的列表。

腾讯云提供了多种云计算相关产品,如云服务器、云数据库、云存储等。这些产品可以用于支持Haskell应用程序的部署和运行。你可以在腾讯云官网上找到更多关于这些产品的详细信息和介绍。

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

怎么判断一数是奇数还是偶数,回复1.0_201是奇数还是偶数

文章目录 怎么判断一数是奇数还是偶数? 判断一数是奇数还是偶数,我们最容易想到的就是对2取余。 方法一 方法二 方法二的原理是什么呢?...我的学习论坛 怎么判断一数是奇数还是偶数? 判断一数是奇数还是偶数,我们最容易想到的就是对2取余。...("Number为偶数"); } else { System.out.println("Number为奇数"); } 输出结果:Number为偶数 方法二 int number = 11...("Number为偶数"); } else { System.out.println("Number为奇数"); } 输出结果:Number为偶数 方法二的原理是什么呢?...偶数的最低为一定是0。 奇数的最低为一定是1。 所以如果要判断这个数是奇数还是偶数,只需要用这个数按位与1就可以了。 如果结果为0,那么这个数就是偶数,如果结果为1,那么这个数就是奇数

80060

经典面试题-两线程交替打印奇数偶数

前提 今天下班时候和同事聊天偶然听到面试题“两线程交替打印奇数偶数”的实现,这里做一复盘。 复盘 场景一:线程A打印奇数,线程B打印偶数,线程A和线程B交替打印,使用对象监视器实现。...场景二:线程A打印奇数,线程B打印偶数,线程A和线程B交替打印,使用JDK提供的并发类库实现。...这两场景中,场景一是一种比较古老的同步方式,本质由JVM实现;场景二是JDK1.5引入JUC包之后简化了并发编程的前提下的更简便的实现。下面针对两场景做对应的实现。...场景一 场景一中,线程A和线程B交替打印奇数偶数,使用对象监视器实现,通俗来说:线程A或线程B只要有一者竞争锁成功,就打印++i,通知其他线程从等待集合中释放,然后自身线程加入等待集合并且释放锁即可。...,然后thread-1打印偶数,这个和同步器框架的等待队列以及同步队列的竞争有关。

3.7K31

经典面试题-两线程交替打印奇数偶数

前提 今天下班时候和同事聊天偶然听到面试题“两线程交替打印奇数偶数”的实现,这里做一复盘。 复盘 场景一:线程A打印奇数,线程B打印偶数,线程A和线程B交替打印,使用对象监视器实现。...场景二:线程A打印奇数,线程B打印偶数,线程A和线程B交替打印,使用JDK提供的并发类库实现。...这两场景中,场景一是一种比较古老的同步方式,本质由JVM实现;场景二是JDK1.5引入JUC包之后简化了并发编程的前提下的更简便的实现。下面针对两场景做对应的实现。...场景一 场景一中,线程A和线程B交替打印奇数偶数,使用对象监视器实现,通俗来说:线程A或线程B只要有一者竞争锁成功,就打印++i,通知其他线程从等待集合中释放,然后自身线程加入等待集合并且释放锁即可。...,然后thread-1打印偶数,这个和同步器框架的等待队列以及同步队列的竞争有关。

66320

给定一长度为n的数组,请将数组中元素按照奇偶性重新划分,所有奇数靠左边,所有偶数靠右边,然后分别对奇数偶数部分进行排序

OJ题库ID1007:奇偶数 需求 运行结果 分析 1. 输入n n为数组元素的个数 2. 输入n个数 存储到一数组中 3. 用Arrays对数组进行排序 4....找出最大的偶数(输出内容的最后一元素后面不带空格,输出的最后一元素是最大的偶数) 5. 输出奇数 6....{ /* OJ题库ID1007:奇偶数 给定一长度为n的数组,请将数组中元素按照奇偶性重新划分,所有奇数靠左边,所有偶数靠右边,然后分别对奇数偶数部分进行排序...Input 输入有两行,第一行输入一数字n表示数组的长度, 第二行依次输入n个数字,表示数组的元素值。...) { // 由题得最后一元素后面没有空格(" ") 所以要判断是否是最后一元素 // 已知奇数在左 偶数在右 并且是按照顺序排序 那么最后一元素就是最大的偶数

92720

交换一整数的二进制奇数位与偶数

思路 前提: 以int类型整数为例,假设一int变量占四字节空间。 假设二进制数的最低位是奇数位。...思路: 二进制数00000000 00000000 00000000 10100101的所有奇数位保持不变而偶数位变为0(按位与上01010101 01010101 01010101 01010101...00001010; 二进制数00000000 00000000 00000000 10100101的所有偶数位保持不变而奇数位变为0(按位与上10101010 10101010 10101010 10101010...备注: 想要二进制数某一bit位保持不变而其他位变为0,只需要按位与上一新的二进制数,而这个新的二进制数除了要保持不变的bit位是1,其他bit位都是0即可。...= 0; scanf("%d", &n); int z = ((n & 0x55555555) > 1); printf("%d\n", z)

24310

878.第 N 奇数字 每日一题 11-22

原题 一正整数如果能被 a 或 b 整除,那么它是神奇的。 给定三整数 n , a , b ,返回第 n 神奇的数字。因为答案可能很大,所以返回答案 对 10^9 + 7 取模 后的值。...<= n <= 10^9 2 <= a, b <= 4 * 10^4 难度Hard 标签数学 二分查找 分析 看完题目我感觉一线性遍历就能出来了,可是忘记了今天这是一道困难题。...于是乎我的第一解法横空出世,默认的testCase也通过了。...超时了 哈哈哈 于是开始重新分析题目,发现规律: 一数里包含的神奇数字(x)的数量= x/a + x/b - x/最小公倍数 代码实现 func nthMagicalNumber(n int,...minGongBeiShu(a, b) maxVal := 1000000000 + 7 cnt := 0 for start <= end { // 找到中间的数,计算出这个数 有几个神奇数

22220

利用宏,实现将一整数的二进制位的奇数位和偶数位交换

) stuff 其中 parament 是一由逗号隔开的符号表,可能出现在buff中 注意: 参数列表的左括号必须与#define 相连,不然会被视为stuff的一部分 这里我们用一简单的例子进行示范...二、二进制操作符 要实现将一整数的二进制位的奇数位和偶数位交换,我们可以先把二进制数的奇数位 和 偶数位上的每一信息提取出来 这里我们了解一二进制操作符: 位操作符 & 和 | & 和 | 都是对二进制形式进行操作...,一字节有 8 byte,整数类型 有四字节,所以一共是816进制数表示一整形 奇数位全为0,偶数位全为1 = 1010 = a 奇数位全为1,偶数位全为0 = 0101 = 5 所以我们可以这样...可以将一整数的二进制位的奇数位和偶数位交换。...// 用n&(0xaaaaaaaa) a = 1010 只保留偶数位, 用n&(0x55555555) 5 = 0101 只保留奇数位 #define swap(n) (n = ((n&0xaaaaaaaa

10310

从素数生成看Haskell的简洁性

核心函数就是sieve,大致处理过程是这样:读入一列表,并取出第一元素p。然后筛选出不能被p整除的剩余数字,递归求解。这里提及一下,[2..]是Haskell列表的一神奇的特性,即支持无限列表。...not in [j for i in range(2, int(math.sqrt(maxn + 0.5))) for j in range(i + i, maxn, i)]] 这段代码体现了python列表解析的一特点...这种lazy的处理方法和Haskell是极其类似的,看代码: def _odd_iter(): # 构造偶数序列 n = 1 while True: n = n + 2...it = filter(_not_divisible(n), it) # 构造新序列 看来看去,似乎Haskell的版本真的很简单舒服。...这段代码也是Haskell简洁性的高度体现。其中,tail想到与后移整个数列,之后通过zipWith函数的处理将两个数列相加,以此来达到F(n)=F(n-1)+F(n-2)的效果。

31910

调整数组顺序使奇数位于偶数前面

调整数组顺序使奇数位于偶数前面 描述 输入一整数数组,实现一函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。...提示: 1 <= nums.length <= 50000 1 <= nums[i] <= 10000 实现方法 方法 1 思路 看到题目首先想到的暴力法,遍历数组,分别将奇偶数存入不同的列表中,然后定义一数组...,先后将存放奇偶数列表中的元素加到数组中返回即可,主要进行的是遍历操作,所以最终复杂度为 O...// 存放偶数 ArrayList listEven = new ArrayList(); // 存放奇数 ArrayList listOdd...listEven.add(num); }else{ listOdd.add(num); } } // 分别将奇数偶数存入最终结果数组

27940

一日一技:在Python里面如何获取列表的最大n元素或最小n元素?

我们知道,在Python里面,可以使用 max和 min获得一列表的最大、最小的元素: a = [4, 2, -1, 8, 100, -67, 25]max_value = max(a)min_value...= min(a) print(max_value)print(min_value) 运行效果如下图所示: 那么问题来了,如何获取最大的3元素和最小的5元素?...:{max_three}')print(f'最小的5元素:{min_five}') 运行效果如下图所示: 这里的 heapq是一用于处理 堆这种数据结构的模块。...它会把原来的列表转换成一堆,然后取最大最小值。 需要注意,当你要取的是前n大或者前n小的数据时,如果n相对于列表的长度来说比较小,那么使用 heapq的性能会比较好。...但是如果n列表的长度相差无几,那么先排序再切片的性能会更高一些。

8.7K30

剑指Offer题解 - Day27

调整数组顺序使奇数位于偶数前面」 力扣题目链接[1] 输入一整数数组,实现一函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。...双指针 我们可以分别声明两指针,分别指向数组的头部和尾部,当头部元素遇到偶数、尾部元素遇到奇数时,就调换两者指向的元素,然后指针分别后移和前移,重复进行判断。...当两指针相遇的时候,此时的数组元素就是奇数在前、偶数在后的格式。...let right = nums.length - 1; // 初始化右指针 while(left < right) { // 当两指针相遇便终止循环 if (nums...最终当指针相遇的时候,意味着已经调换完毕,最后的结果便是奇数在前,偶数在后。 复杂度方面,由于需要遍历整个数组,因此时间复杂度是O(n) ;维护了两常量级别的指针,因此空间复杂度是O(1) 。

23720

Day8-字符串-最长回文串

那么问题来了,什么是哈希表 知识点回顾-哈希表: 哈希表(Hash table,也叫散列表),是根据关键字值key直接进行访问的数据结构,通过把关键字值映射到表中一位置(数组下标)来直接访问,以加快查找关键字值的速度...如果是偶数个的字符,就很好处理,头部出现,尾部就必须出现,所以偶数个数的字符,都可以作为最后的回文串,所以偶数部分字符全都算进去就行。 那么奇数个数的字符呢?...当遍历到字符的数量为奇数时,奇数个字符是可以选为中心字符的,设置中心标志位flag,初始为0,遇见奇数个数的字符,将flag置为1,同时将该字符数量减1(因为只有偶数个数时,才能作为回文),然后算进总数就行...include using namespace std; int longestPalindrome(string s){ int char_map[128] = {0};//初始化字符哈希表...} else{ max_length += char_map[i] - 1;//奇数个数的字符,减1,使成为偶数个数 flag = 1

47910
领券