[Haskell] CodeWars|Sum of Digits_haskell digits-程序员宅基地

技术标签: CodeWars  Haskell  

https://www.codewars.com/kata/541c8630095125aba6000c00/haskell

题目

本题你需要写一个Digital Root函数。
Digital root是一个数字所有位的递归和。给定n,算出n各位的和 n ,继续这个操作直到 n(p)=n(p1)

以下是范例:

digital_root(16)
=> 1 + 6
=> 7

digital_root(942)
=> 9 + 4 + 2
=> 15 ...
=> 1 + 5
=> 6

digital_root(132189)
=> 1 + 3 + 2 + 1 + 8 + 9
=> 24 ...
=> 2 + 4
=> 6

digital_root(493193)
=> 4 + 9 + 3 + 1 + 9 + 3
=> 29 ...
=> 2 + 9
=> 11 ...
=> 1 + 1
=> 2

题解

  1. 模拟法:
module DigitalRoot where

import Data.Char

digitalRoot :: Integral a => a -> a
digitalRoot x
    | x < 10 = x
    | otherwise = digitalRoot $ fromIntegral $ sum (map digitToInt $ show $ toInteger x)
  1. 数学法
module DigitalRoot where

digitalRoot :: Integral a => a -> a
digitalRoot n = 1 + (n - 1) `rem` 9
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/huanghongxun/article/details/78158709

智能推荐

嵌入式毕设分享 基于STM32单片机的二轮平衡小车-程序员宅基地

文章浏览阅读914次,点赞15次,收藏19次。 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是于STM32单片机的二轮平衡小车学长这里给一个题目综合评分(每项满分5分)难度系数:4分工作量:4分创新点:3分今天我们来介绍一下基于STM32单片机的二轮平衡小车模块及算法原理。小车可以实现手机APP控制前进、后退、左转和右转。

ubuntu安装重启时显卡问题报错: BUG soft lockup 的解决办法_bug soft lockup cpu#5 kworker-程序员宅基地

文章浏览阅读3.2k次,点赞5次,收藏18次。安装 Ubuntu 出现 BUG soft lockup 的解决办法(18.04):具体的错误内容: kernel:NMI watchdog: BUG: soft lockup - CPU#0 stuck for 26s想具体了解这条错误的内容,请参考此链接: https://www.cnblogs.com/vmtauto/p/7427913.html出现这条信息说明 : CUP 过度..._bug soft lockup cpu#5 kworker

CAN通信(二)——信号矩阵及DBC-程序员宅基地

文章浏览阅读3.2w次,点赞56次,收藏478次。CAN通信(二)——信号矩阵及DBCCAN通信(二)——信号矩阵及DBCCANoeDBC节点报文信号环境变量信号矩阵功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入CAN通信(二)——信号矩阵及DBCCANoe汽车电子在整车研_信号矩阵

JavaScript题目练习-程序员宅基地

文章浏览阅读3k次。1、以下哪一条Javascript语句会产生运行错误?正确答案: A 你的答案: D (错误)A var obj=( );B var obj=[ ];C var obj={ };D var obj=/ /;2、触摸事件包括以下哪几种?()正确答案: A B C D 你的答案: A B D (错误)touchStarttouchMovetouchCanceltouchEnd解析:以下是四种touch事件touchstart: //手指放到屏幕上时触发touc_javascript题目

基于MATLAB BP神经网络的数字图像识别_bp神经网络如何用于图像检测-程序员宅基地

文章浏览阅读848次,点赞20次,收藏25次。当前的刺激如果能与大脑中的模板相匹配,这个图像也就被识别了。但这种模型强调图像必须与脑中的模板完全符合才能加以识别,而事实上人不仅能识别与脑中的模板完全一致的图像,也能识别与模板不完全一致的图像。同时,人能识别的图像是大量的,如果所识别的每一个图像在脑中都有一个相应的模板,也是不可能的。图像技术的基础性研究,特别是结合人工智能与视觉处理的新算法,从更高水平提取图像信息的丰富内涵,成为人类运算量最大、直观性最强,与现实世界直接联系的视觉和“形象思维”这一智能的模拟和复现,是一个很难而重要的任务。_bp神经网络如何用于图像检测

django学生作业管理系统(源码+mysql+论文)-程序员宅基地

文章浏览阅读748次,点赞19次,收藏25次。此外,系统还可以记录学生的作业完成情况,为教师提供数据分析,帮助教师了解学生的学习进度和存在的问题,进而实施个性化教学策略。在数据库管理工具的选择上,使用了Navicat 11,这是一个用户友好且功能强大的数据库管理软件,它支持多种数据库系统,包括MySQL,并提供了图形化界面,使得数据库的管理和维护工作更加便捷。开发环境方面,我们选择了PyCharm作为主要的集成开发环境(IDE),它提供了丰富的Python开发工具和插件,支持Django框架,有助于提高开发效率和代码质量。系统的选题背景和意义。

随便推点

软件开发中的理想与现实(二)——让测试驱赶着我们的步伐-程序员宅基地

文章浏览阅读2.5k次。2月16日上午,第一天的培训开始。首先当然应该说说单元测试的必要性,我很欣赏JUnit In Action这本书里面列的几条理由: 带来更大的测试范围。单元测试能够更精确地发现问题,能覆盖更广泛的情况,当然,使得项目更可靠。 带来团队协作的可能。单元测试能够让我们写一点测一点,保证每次提交的质量,而且,团队协作时要是出了问题,找起责任人来也要方便得多。 防止衰退,

Java重写Override和重载Overload_override和overwirte-程序员宅基地

文章浏览阅读1.3k次。转载请标明出处:http://blog.csdn.net/wu_wxc/article/details/51457528 本文出自【吴孝城的程序员宅基地】重写是子类对父类中允许访问的的方法的重新编写 重载是同一类中方法名相同,但返回值类型或参数有所不同的方法的重新加载Override(重写)package cn.wuxiaocheng;class Animal { public v_override和overwirte

swagger - Unable to scan documentation context default-程序员宅基地

文章浏览阅读2.5k次。网上有人说 @ApiModelProperty(name = “主键id”,notes = “主键id”) 注解在id上name是 主键id,改成 @ApiModelProperty(name = “id”) 问题能解决,亲测是不会受影响的,即使是存在中文也能正常解析,没解决问题的小伙伴可以试试。如上代码,存在2个名称,启动时同样会报Unable to scan documentation context default错误,解决方案就是改对应的名称,保证不重复。_unable to scan documentation context default

pc双网卡实现路由转发_【今夜想聊聊】组播路由协议PIMSM模式-程序员宅基地

文章浏览阅读774次。PIM概念PIM(Protocol Independent Multicast)称为协议无关组播,表示组播依靠的单播路由可以由静态路由、RIP、OSPF、IS-IS、BGP等提供,组播路由和单播路由协议无关,只要单播路由协议能产生所需路由表项,如:RPF检查即可。PIM的特点1.PIM协议的本质是:三层协议,协议号为1032.PIM路由器组播地址为:224.0.0.133.P..._win10双网卡 组播转发

低优先级MPTCP的设计和实现_mptcp demo-程序员宅基地

文章浏览阅读1.1k次,点赞5次,收藏10次。概要:本科毕业设计课题的内容是实现低优先级MPTCP,在实现过程中碰到的困难有点多,现在顺利完成了毕业论文的答辩,希望能够把自己的一些经验和教训总结一下,希望有这方面需要的同学可以有所参考,不用像我那么艰难。实验环境:VMware Workstation Pro 网上的破解版,之前电脑上装的版本有点问题,VMtools不能正常用,安装就直接在百度搜索是没什么问题的。测试环节使用的工具是mini..._mptcp demo

Android 应用程序设置上网白名单-程序员宅基地

文章浏览阅读87次。在 Android 设备上,您可以设置一个应用程序的上网白名单,以控制哪些应用程序可以访问互联网。这在某些情况下非常有用,例如,如果您希望限制某些应用程序在移动数据网络上使用流量,或者如果您想为特定的应用程序提供优先访问权限。请注意,这只是一个示例代码,您需要根据自己的实际需求进行适当的修改。另外,为了使上网白名单设置生效,您可能需要在应用程序的其他部分添加适当的逻辑,以根据您的需求启用或禁用特定的应用程序。然后,我们获取了当前活动的组件的名称,即。方法来设置应用程序的上网白名单,将其状态设置为。

推荐文章

热门文章

相关标签