codewars题目

article/2025/8/18 20:54:10

codewars题目解答

  • 1.Calculating with Functions
  • 2.Sum of Pairs
  • 3.Maximum subarray sum
  • 4.Rot13
  • 5.Calculating with Functions

1.Calculating with Functions

在这里插入图片描述
我的解决方案(粗糙的一批)

   function common(n, val) {var a, b;for (var key in n) {a = key;b = n[key]}switch (a) {case '*':return val * b;break;case '-':return val - b;break;case '+':return val + b;break;case '/':return Math.floor(val / b);break;default:return val}}function zero(n) {return common(n, 0)}function one(n) {return common(n, 1)}function two(n) {return common(n, 2)}function three(n) {return common(n, 3)}function four(n) {return common(n, 4)}function five(n) {return common(n, 5)}function six(n) {return common(n, 6)}function seven(n) {return common(n, 7)}function eight(n) {return common(n, 8)}function nine(n) {return common(n, 9)}function times(n) {return {'*': n}}function plus(n) {return {'+': n}}function minus(n) {return {'-': n}}function dividedBy(n) {return {'/': n}}

别人的写法

function zero(func) {return func ? func(0) : 0;};function one(func) {return func ? func(1) : 1;};function two(func) {return func ? func(2) : 2;};function three(func) {return func ? func(3) : 3;};function four(func) {return func ? func(4) : 4;};function five(func) {return func ? func(5) : 5;};function six(func) {return func ? func(6) : 6;};function seven(func) {return func ? func(7) : 7;};function eight(func) {return func ? func(8) : 8;};function nine(func) {return func ? func(9) : 9;};function plus(b) {return function(a) {return a + b;};};function minus(b) {return function(a) {return a - b;};};function times(b) {return function(a) {return a * b;};};function dividedBy(b) {return function(a) {return a / b;};};console.log(eight(plus(nine()))) //35

2.Sum of Pairs

Sum of Pairs
在这里插入图片描述在这里插入图片描述
我的解答:这一题好难啊,现在的解法虽然可以解决问题,但是执行超时了,懵逼,明天再看

        var sum_pairs = function(ints, s) {var arri = []var arrb = []for (var i = 0, l = ints.length, r = []; i < l; i++) {for (var j = i + 1; j < l; j++) {if (ints[i] + ints[j] == s) {if (r[0] == null) {r[0] = i;r[1] = j;arri.push(i);arrb.push(j);} else if (j - i === r[1] - r[0]) {arri.push(i);arrb.push(j);} else if (j - i < r[1] - r[0]) {r[0] = i;r[1] = j;}}}}if (arri.length > 1) {var anser1 = ints[arri[0]]var anser2 = ints[arrb[0]]return [anser1, anser2]} else if (r[1]) {return [ints[r[0]], ints[r[1]]]} else {return undefined}}

3.Maximum subarray sum

Maximum subarray sum
求连续子序列的最大和
简单的情况是当列表只由正数组成,而最大和是整个数组的和。如果列表仅由负数组成,则返回0。
空列表被视为最大和为零。请注意,空列表或数组也是有效的子列表/子数组。
在这里插入图片描述
思路:双重循环获得数组的全部子序列,然后求最大值
我的答案

    var maxSequence = function (arr) {// ...if (arr.length > 0) {var arr1 = []var sumArr = []for (var j = 0; j < arr.length; j++) {for (var i = j; i < arr.length; i++) {arr1.push(arr.slice(j, i + 1))}}arr1.map((valArr) => {sumArr.push(sum(valArr))})return Math.max.apply(Math, sumArr.map(item => { return item }))>0?Math.max.apply(Math, sumArr.map(item => { return item })):0}else{return 0}}function sum(arr) {return arr.reduce(function (prev, curr, idx, arr) {return prev + curr;});}

codewars上答案

    var maxSequence = function (arr) {var min = 0, ans = 0, i, sum = 0;for (i = 0; i < arr.length; ++i) {sum += arr[i];                     //-2  -3   min = Math.min(sum, min);          // 0  -3   ans = Math.max(ans, sum - min);    // 0   0   console.log(sum,min,ans);      }return ans;}

4.Rot13

Rot13
套用ROT13到一段文字上仅仅只需要检查字元字母顺序并取代它在13位之后的对应字母,有需要超过时则重新绕回26英文字母开头即可。A换成N、B换成O、依此类推到M换成Z,然后序列反转:N换成A、O换成B、最后Z换成M。只有这些出现在英文字母里头的字元受影响;数字、符号、空白字元以及所有其他字元都不变。因为只有在英文字母表里头只有26个,并且26=2×13

我的解答

    var arr = ['A','B','C' ,'D' ,'E' ,'F' ,'G','H', 'I', 'J', 'K', 'L', 'M', 'N','O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']function rot13(message){//your code herelet result = ''message.split('').map((val)=>{if(arr.indexOf(val.toLocaleUpperCase())!=-1){var index = arr.indexOf(val.toLocaleUpperCase())+13if(index>25){if(judgeUpper(val)){result+=arr[index-26].toLocaleUpperCase()}else{console.log(val);result+=arr[index-26].toLocaleLowerCase()}}else{if(judgeUpper(val)){result+=arr[index].toLocaleUpperCase()}else{console.log(index);result+=arr[index].toLocaleLowerCase()}}}else{result+=val}})return result}function judgeUpper(val){if(/[A-Z]/.test(val)){return true}}console.log(rot13('test'));

利用charCodeAt()fromCharCode()

      var codeA = "A".charCodeAt(0),codeZ = "Z".charCodeAt(0),codea = "a".charCodeAt(0),codez = "z".charCodeAt(0);function rot13(message) {return message.split("").map(function (char) {var code = char.charCodeAt(0);if (codeA <= code && code <= codeZ) {return String.fromCharCode(((code - codeA + 13) % 26) + codeA);} else if (codea <= code && code <= codez) {console.log(code,codeA);return String.fromCharCode(((code - codea + 13) % 26) + codea);}return char;}).join("");}console.log(rot13('ROT13'))

5.Calculating with Functions

Scramblies
第二个字母的全部字符是否可以在第一个字母中找到
在这里插入图片描述
我的超时的答案

			function scramble(str1, str2) {//code melet num = 0str2.split('').map((val) => {const a = str1.split('').indexOf(val)if (a > -1) {str1 = str1.replace(val, '')console.log(a, str1)num++}})if (num == str2.length) {return true} else {return false}}

第二位同样超时的答案

			function scramble(str1, str2) {const str1Arr = str1.split('')return Array.prototype.every.call(str2, (l) => {var i = str1Arr.indexOf(l)if (i !== -1) {str1Arr.splice(i, 1)}return i !== -1})}

贴上来主要是看js哪些操作会改变原数组

  • 修改原数组(记住这一个就可以了)
var arr = []
arr.splice() //***注意****//
arr.reverse()
arr.fill()
arr.copyWithin()
arr.sort()
arr.push()
arr.pop()
arr.unshift()
arr.shift()
  • 不会修改原数组
var arr = []
arr.slice()
arr.map()
arr.forEach()
arr.every()
arr.some()
arr.filter()
arr.reduce()
arr.entries()
arr.find()
arr.concat('1',['2','3']) //[1,2,3]

forEach有争议
orEach 在对 item 进行修改的时候,如果 item 是原始类型的值,item 对应的 的内存地址实际并没有变化
如果 item 是 引用类型的值,item 对应多的内存地址也没有变化,但是对应的值,已经重写了


http://chatgpt.dhexx.cn/article/hUJiqgku.shtml

相关文章

编程刷题平台Codewars初体验-Java

点此欢迎光临我的个人网站【一几文星球】 最近发现了一个很多网友都在推荐的编程刷题平台Codewars&#xff0c;作为一个对啥都好奇&#xff08;啥都学不深 &#xff09;的编程菜鸟&#xff0c;我二话不说直接开始注册体验。 网站一进&#xff0c;嘿&#xff0c;全英文&#x…

Codewars | 使用入门

https://jingyan.baidu.com/article/adc81513864eebf723bf73ab.html https://www.codewars.com/trainer/setup 注册以后&#xff0c;大家的编程段位是8段。段位越高&#xff0c;段数越小。 目前笔者的段位是6段。通过解决难度在6段和6段以上的问题可以获得段位的提升。当然&…

梯度提升树(GBDT)

提升树模型 提升树是以分类数或回归树为基本分类器的提升方法。提升方法实际采用加法模型&#xff08;即基函数的线性组合&#xff09;与前向分布算法&#xff0c;以决策树为基函数的提升方法为提升树&#xff08;boosting tree&#xff09;。基本分类器 x < v x<v x<…

机器学习: 提升

文章目录 Github提升的概念理解与随机森林的比较提升算法 GBDT参数设置和正则化 XGBoostAdaboost算法总结 Github 系列文章 pdf 版本已经上传至&#xff1a; https://github.com/anlongstory/awsome-ML-DL-leaning/tree/master/xiaoxiang-notes 欢迎 Star 和下载 ? 提升的概…

多模态深度学习综述:网络结构设计和模态融合方法汇总

点击上方“机器学习与生成对抗网络”&#xff0c;关注"星标" 获取有趣、好玩的前沿干货&#xff01; 作者丨小奚每天都要学习知乎 编辑丨极市平台 来源丨https://zhuanlan.zhihu.com/p/152234745 一、简介 从2010年开始&#xff0c;深度学习方法为语音识别&#xff0…

回归分析(数据拟合---MATLAB和1stopt软件)

回归分析&#xff08;regression analysis)指的是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。 回归分析按照涉及的变量的多少&#xff0c;分为一元回归和多元回归分析&#xff1b; 按照因变量的多少&#xff0c;可分为简单回归分析和多重回归分析&#xf…

利用Excel的LINEST计算线性拟合的斜率和截距的不确定性

目录 线性拟合的斜率和截距的不确定性Excel数组函数LINESTLINEST结果的含义LINEST输出的10个统计参数含义如下&#xff1a; 模型预测 y ^ \widehat{y} y ​ m x b mxb mxbReferences 线性拟合的斜率和截距的不确定性 利用熟悉的Excel绘图功能&#xff0c;可以根据距离-高程散…

机器学习算法——Kmeans

1.k-mean算法的原理 1、选取K个点做为初始聚集的簇心 2、分别计算每个样本点到K个簇核心的距离&#xff08;这里的距离一般取欧氏距离或余弦距离)&#xff0c;找到离该点最近的簇核心&#xff0c;将它归属到对应的簇 3、所有点都归属到簇之后&#xff0c;M个点就分为了K个簇…

【时序】Reformer:局部敏感哈希(LSH)实现高效 Transformer 论文笔记

论文名称&#xff1a;Reformer: The Efficient Transformer 论文下载&#xff1a;https://arxiv.org/abs/2001.04451 论文年份&#xff1a;ICLR2020 论文被引&#xff1a;706&#xff08;2020/04/20&#xff09; 论文代码&#xff1a;https://github.com/google/trax/tree/mast…

损失函数MSE和MAE的区别以及如何选择

1、均方误差&#xff08;L2损失&#xff09; 均方误差(MSE)是最常用的回归损失函数&#xff0c;计算方法是求预测值与真实值之间距离的平方和&#xff0c;公式如下&#xff1a; M S E 1 m ∑ m i 1 ( y i − y ^ i ) 2 MSE\frac{1}{m} \sum_{m}^{i1}\left(y_{i}-\hat{y}_{i}…

连载|GBDT如何进行回归和分类

GBDT 在前几年的机器学习竞赛以及工作中&#xff0c;人们使用着各种传统算法进行调参取得性能的提升&#xff0c;突然有一天杀出了一种名为GBDT的算法&#xff0c;改变了当前的格局&#xff0c;该算法在不同的场景中总是能够产生很好的效果&#xff0c;本文就让我们来了解一下…

最小二乘法多项式曲线拟合数学原理及其C++实现

目录 0 前言1 最小二乘法概述2 最小二乘法求解多项式曲线系数向量的数学推导2.1 代数法2.2 矩阵法 3 代码实现4 总结参考 0 前言 自动驾驶开发中经常涉及到多项式曲线拟合&#xff0c;本文详细描述了使用最小二乘法进行多项式曲线拟合的数学原理&#xff0c;通过样本集构造范德…

GB和GBDT 算法流程及分析

1、优化模型的两种策略&#xff1a; 1&#xff09;基于残差的方法 残差其实就是真实值和预测值之间的差值&#xff0c;在学习的过程中&#xff0c;首先学习一颗回归树&#xff0c;然后将“真实值-预测值”得到残差&#xff0c;再把残差作为一个学习目标&#xff0c;学习下一棵回…

机器学习和深度学习性能指标

这里写目录标题 1、声明2、机器学习评估性能指标2.1、回归&#xff08;Regression&#xff09;算法指标2.1.1、平均绝对误差 MAE2.1.2、均方误差 MSE2.1.3、均方根误差 RMSE2.1.4、决定系数R^22.1.5、解决评估指标鲁棒性问题 2.2、分类&#xff08;Classification&#xff09;算…

多模态信息融合研究

1、主要研究方向 多模态学习可以划分为以下五个研究方向&#xff1a; 多模态表示学习 Multimodal Representation&#xff1a;主要研究如何将多模态的数据所蕴含的语义信息通过embedding的方式实现向量化&#xff0c;便于后续的计算&#xff1b; 模态转化 Translation&#…

【时序】DeepGLO:可以学习全局依赖和局部信息的多时间序列预测模型

论文名称&#xff1a;Think Globally, Act Locally: A Deep Neural Network Approach to High-Dimensional Time Series Forecasting 论文下载&#xff1a;https://arxiv.org/abs/1905.03806 论文年份&#xff1a;NeurIPS 2019 论文被引&#xff1a;134&#xff08;2022/04/21&…

独立性检验(卡方检验)

独立性检验(Test for Independence)是根据频数来判断两类因子是彼此独立还是彼此相关的一种假设检验。假如对某一个数据集有X&#xff08;值域为x1, x2&#xff09;跟Y&#xff08;值域为y1, y2&#xff09;变量&#xff0c;下面是他们的频数表&#xff1a; x1 x2 汇总 y1 …

列联表分析——独立性检验(卡方检验)

第一步&#xff1a;建立原假设和备择假设 H0&#xff1a;两变量相不立&#xff1b;H1&#xff1a;u两变量相互b独立 第二步&#xff1a;计算自由度和理论频数 第三步&#xff1a;计算卡方统计量 实际观察次数与理论次数之差的平方再除以理论次数得到的统计量近似服从卡方分布…

列联表分析-独立性检验

用SPSS分析甲乙丙三名推销员的对ABC三类产品的销售数据是否独立 原假设&#xff1a;他们之间相互独立 数据如下&#xff1a; 导入数据 将销量进行加权 点击分析-描述统计–交叉表&#xff1b; 结果 当表格是2X2的时候得到结果如下&#xff1a;

第15章卡方检验:拟合优度和独立性检验

第1章统计学入门 第2章频数分布略 第3章集中趋势的测量 第4章变异性 第5章分数的位置及标准化分布 第6章概率和正态分布 第7章概率和样本&#xff1a;样本均值的分布 第8章假设检验介绍 第9章t检验介绍 第10章两个独立样本的t检验 第11章两个相关样本的t检验…