erlang练习题(二)

题目一

替换元组或列表中指定位置的元素,新元素作为参数和列表或元组一起传入函数内

解答

replaceIdx(List, Index, Val) ->replaceIdx(List, Index, Val, 1, []).replaceIdx([], _, _, _, Acc) ->lists:reverse(Acc);%% 到达替换位置的处理replaceIdx([_ | Rest], Index, Val, Index, Acc) ->io:format("[~p]~n", [[Val | Acc]]),replaceIdx(Rest, Index, Val, Index + 1, [Val | Acc]);replaceIdx([Element | Rest], Index, Val, CurrentIndex, Acc) ->io:format("[~p]~n", [[Element | Acc]]),replaceIdx(Rest, Index, Val, CurrentIndex + 1, [Element | Acc]).

题目二

指定列表第几位之后的数据进行反转。如:指定[2,3,5,6,7,2]第3位后进行反转

解答

%% 和并两个列表 
merge_list(List1, List2) ->merge_list(List1, List2, []).merge_list([], [], Acc) -> lists:reverse(Acc);
merge_list([H | T], List2, Acc) ->merge_list(T, List2, [H | Acc]);
merge_list([], [H | T], Acc) ->merge_list([], T, [H | Acc]).%% 指定列表第几位之后的数据进行反转。如:指定[2,3,5,6,7,2]第3位后进行反转为 [2,3,5,2,7,6] 
reverse_n(List, N) ->Sublist = lists:sublist(List, N + 1, length(List) - N),NewSublist = lists:reverse(Sublist),merge_list(lists:sublist(List, 3), NewSublist).

题目三

对列表进行过滤,输出列表所有的奇数和偶数

解答

filteroe(List) ->Odds = [X || X<-List, X rem 2 /= 0],Evens = [X || X<-List, X rem 2 == 0],io:format("Odds = ~p ~nEvens = ~p ~n", [Odds, Evens]).

题目四

使用匿名函数对列表进行过滤,输出列表所有的奇数和偶数(可以使用API)

解答

filter_odd_even(List) ->Odds = lists:filter(fun(X) -> X rem 2 /= 0 end, List),Evens = lists:filter(fun(X) -> X rem 2 =:= 0 end, List),{Odds, Evens}.

题目五

对数字列表或者元组中所有的奇数进行求和

解答

sum_odd(List) ->lists:sum([X || X<- List, X rem 2 /= 0]).

题目六

对数字列表或元组,输出所有偶数乘以它在此列表或元组中的偶数位数

比如在列表[3,4,8,9,7,2,5]中8所在此列表中的偶数位数为2,2所在此元组中的偶数位数为3

解答

get_evens_mul_Idx(List) ->get_evens_mul_Idx(List, 1, []).%% 递归终止get_evens_mul_Idx([], _, Acc) -> lists:reverse(Acc);%% 处理遇到偶数的情况get_evens_mul_Idx([Value | Rest], Index, Acc) when Value rem 2 == 0 ->get_evens_mul_Idx(Rest, Index + 1, [Value * Index | Acc]);%% 非偶数的情况,下标增加,其他不变get_evens_mul_Idx([_ | Rest], Index, Acc) ->get_evens_mul_Idx(Rest, Index + 1, Acc).

题目七

将指定的元素插入到列表或元组中指定的位置,列表或元组中后面的元素依次向后挪动

解答

insert_at(List, Index, Val) ->insert(List, Index, Val, 1, []).insert([], _, _, _, Acc) -> lists:reverse(Acc);%% 处理Index之前的元素,原样插入insert([Value | Rest], Index, Val, CurIdx, Acc) when CurIdx /= Index ->insert(Rest, Index, Val, CurIdx + 1, [Value | Acc]);%% 到达插入位置的处理insert(List, Index, Val, Index, Acc) ->insert(List, Index, Val, Index + 1, [Val | Acc]).

题目八

用列表输出在列表或元组中查找到的的所有重复元素

解答

find_dup(Items) ->find_dup(Items, []).find_dup([], Duplicates) ->Duplicates;%% Acc 是用来存储重复值只存一次find_dup([Item | Rest], Acc) ->case lists:member(Item, Rest) and not lists:member(Item, Acc) of % 如果答案集合已经存在了重复元素,就不要加入true -> find_dup(Rest, [Item | Acc]);false -> find_dup(Rest, Acc)end.

题目九

删出列表或元组中的所有重复元素

解答

%% 思路:就是把元素加入到新的列表中,重复的不加入 0delete_dup(Items) ->delete_dup(Items, []).delete_dup([], Acc) -> Acc;delete_dup([Item | Rest], Acc) ->case lists:member(Item, Acc) of % 元素没有出现在结果集中就加入false -> delete_dup(Rest, [Item | Acc]);true -> delete_dup(Rest, Acc)end.

题目十

使用冒泡排序对列表进行排序(升序)

解答

%% 取列表头作为最大值和bubble_sort(List) ->bubble_sort(List, length(List)).bubble_sort(List, 0) -> List; % 当迭代次数为 0 时,排序完成bubble_sort(List, N) ->SortedList = bubble_pass(List, N), % 对列表进行下一趟冒泡,一个元素到达最终位置bubble_sort(SortedList, N - 1). % 递归的进行下一趟冒泡bubble_pass([X, Y | Rest], N) when X > Y ->[Y | bubble_pass([X | Rest], N - 1)]; % 如果 X > Y 就交换他们bubble_pass([X | Rest], N) ->[X | bubble_pass(Rest, N - 1)]; % 否则位置保持不变bubble_pass([], _) -> [].

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/80608.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AOSP源码中Android.mk文件中的反斜杠符号(\)的作用和使用

简介 在AOSP&#xff08;Android Open Source Project&#xff09;源码中的Android.mk文件中&#xff0c;反斜杠符号&#xff08;\&#xff09;的主要作用是将一行代码拆分成多行&#xff0c;以提高可读性并帮助组织较长的代码块。这对于定义复杂的构建规则和变量时特别有用。…

uniapp-历史搜索记录

应用场景 很多搜索场景内都能用到这个功能 大概就是用户搜索了某个关键字 然后搜索的关键字可以持久的保存下来 下次打开搜索的时候可以达到快速点击搜索的效果 实现步骤 1. 先给输入框双向绑定数据和事件 <input v-model"keyWord"> 2. 给搜索按钮绑定点…

前后端分离--Vue的入门基础版

目录 一.前后端分离 二.Vue的简介 三.Vue的入门案例 四.Vue的生命周期 一.前后端分离 前后端分离是一种软件架构模式&#xff0c;将应用程序的前端&#xff08;用户界面&#xff09;和后端&#xff08;数据处理和业务逻辑&#xff09;独立开发、独立部署。在前后端分离的架…

1、风行内容仓的增效之路 - 前言

18年初&#xff0c;公司成立内容资源管理中心&#xff08;以下按内部习惯简称内容仓&#xff09;。 18年中&#xff0c;因异地管理不便&#xff0c;我开始参与内容仓的现场管理&#xff0c;主要是提供一些管理方面的建议&#xff0c;以及部分协调工作。 19年Q4&#xff0c;我…

【计算机网络】75 张图详解:网络设备、网络地址规划、静态路由(万字长文)

75 张图详解&#xff1a;网络设备、网络地址规划、静态路由 1.网络设备1.1 交换机1.2 路由器 2.网络地址规划2.1 IP 地址2.2 分类地址2.3 子网掩码2.4 无类地址2.5 子网划分2.5.1 示例一2.5.2 示例二 2.6 超网合并 3.静态路由3.1 路由表3.2 直连路由3.3 静态路由3.4 默认路由3.…

Ansible 自动化运维工具部署主从数据库+读写分离

文章目录 Ansible 自动化运维工具部署主从数据库读写分离一、主从复制和读写分离介绍二、准备工作&#xff08;1&#xff09;节点规划&#xff08;2&#xff09;修改主机名&#xff08;3&#xff09;免密&#xff08;4&#xff09;配置IP映射&#xff08;5&#xff09;安装ansi…

【案例】--EasyExcel解析文件案例

目录 一、前言二、EasyExcel解析文件2.1、EasyExcel选型2.2、如何存储excel解析的文件2.3、解析格式规则的excel文件2.4、解析未知格式规则的excel文件一、前言 最近项目中,需要对excel、csv等文件进行解析,并做相关的业务功能。在实际业务中,遇到不少难题: (1)、excel、c…

Postman应用——下载注册和登录

文章目录 下载安装注册登录注册账号登录账号 下载安装 Postman下载&#xff1a;https://www.postman.com/ 访问链接后&#xff0c;进入首页&#xff0c;根据自己的操作系统下载对应的版本。 找到下载到的目录直接双击.exe文件&#xff0c;会默认安装在C盘&#xff0c;安装完会…

系统架构设计师(第二版)学习笔记----信息系统基础

【原文链接】系统架构设计师&#xff08;第二版&#xff09;学习笔记----信息系统基础 文章目录 一、信息系统概述1.1 信息系统的5个基本功能1.2 信息系统发展阶段1.3 初始阶段的主要特点1.4 传播阶段的主要特点1.5 控制阶段的主要特点1.6 集成阶段的主要特点1.7 信息系统的种类…

【Unity3D】UI Toolkit数据动态绑定

1 前言 本文将实现 cvs 表格数据与 UI Toolkit 元素的动态绑定。 如果读者对 UI Toolkit 不是太了解&#xff0c;可以参考以下内容。 UI Toolkit简介UI Toolkit容器UI Toolkit元素UI Toolkit样式选择器UI Toolkit自定义元素 本文完整资源见→UI Toolkit数据动态绑定。 2 数据…

无涯教程-JavaScript - COMBINA函数

描述 COMBINA函数返回给定数量的项目的组合数量(重复)。 语法 COMBINA (number, number_chosen)争论 Argument描述Required/OptionalNumber 必须大于或等于0,并且大于或等于Number_chosen。 非整数值将被截断。 RequiredNumber_chosen 必须大于或等于0。 非整数值将被截断。…

脚本:python绘制七夕爱心

文章目录 效果脚本Reference 效果 脚本 import random from math import sin, cos, pi, log from tkinter import *CANVAS_WIDTH 640 # 画布的宽 CANVAS_HEIGHT 640 # 画布的高 CANVAS_CENTER_X CANVAS_WIDTH / 2 # 画布中心的X轴坐标 CANVAS_CENTER_Y CANVAS_HEIGHT /…

搭建Android自动化python+appium环境

一. 需要软件 JDK:JAVA安装后配置JDK环境 SDK:SDK下载后配置adb环境 Python:pyhton语言 Pycharm:python脚本编译工具 Appium-python-client:pyhton中的库 Appium客户端 二. 搭建步骤 1.配置JDK环境 ①. 下载安装java: https://www.oracle.com/java/technologies/java…

SEO优化排名的技巧与注意点(百度SEO排名的五大注意点)

关键词排名是指在搜索引擎中&#xff0c;用户搜索相关关键词时&#xff0c;网站出现的顺序。SEO优化是提高网站排名的一种方法。优化关键词排名的目的是提高网站流量和知名度。但是要注意遵循百度SEO排名的规则。 下面介绍一下百度SEO排名的五大注意点和优化关键词的六种方式。…

Unable to access jarfile shop-0.0.3-SNAPSHOT.jar

"Unable to access jarfile" 错误通常表示在尝试运行 JAR 文件时找不到或无法访问指定的 JAR 文件。这可能是因为文件路径不正确、文件不存在、权限问题等引起的。以下是解决这个错误的一些建议&#xff1a; 检查文件路径&#xff1a; 确保您在命令中正确指定了 JAR …

本地事务与分布式事务

目录 一、本地事务 1、事务的基本性质 2、事务的隔离级别 3、事务的传播行为 4、SpringBoot 事务关键点 二、分布式事务 1、为什么有分布式事务 2、CAP 定理与 BASE 理论 3、分布式事务几种方案 一、本地事务 1、事务的基本性质 数据库事务的几个特性&#xff1a;原…

管理类联考——数学——汇总篇——知识点突破——代数——等差数列

⛲️ 一、考点讲解 1.定义 如果在数列{ a n a_n an​}中&#xff0c; a n 1 − a n d a_{n1}-a_nd an1​−an​d&#xff08;常数&#xff09; &#xff08; n ∈ N &#xff0b; &#xff09; &#xff08;n∈N_&#xff0b;&#xff09; &#xff08;n∈N&#xff0b;​&a…

欧科云链研究院:锚定金融市场,香港从STO再出发

作者&#xff5c;Hedy Bi 昨日&#xff0c;据大公报报道&#xff0c;太极资本宣布推出香港首个面向「专业投资者」的房地产基金证券型代币发行&#xff08;STO&#xff09;。集资目标为1亿元。“牌照&#xff0c;醉翁之意不在酒。BTC、ETH等加密资产只是第一步&#xff0c;而背…

pgsql操作json类型

目录 一、表结构 二、实体类 三、json处理器 四、配置文件 五、josn数据 1、插入 2、查找 一、表结构 CREATE TABLE "public"."pg_user" ("id" int8 NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 MINVALUE 1 MAXVALUE 92233720…

Dinky上路之旅

1、部署flink集群 1.1、flink-conf.yaml cat > flink-conf.yaml << EOF jobmanager.rpc.address: boshi-146 jobmanager.rpc.port: 6123 jobmanager.bind-host: 0.0.0.0 jobmanager.memory.process.size: 1600m taskmanager.bind-host: 0.0.0.0 # 修改为本机ip tas…