???? 前言
大家好呀,我是毛小悠,能够叫我二毛,在家中排行老二,是一名前端开发工程师。
本系列文章旨在通过练习来进步JavaScript的能力,一起欢快的做题吧。????????????
以下每道题,二毛我都有尝试做一遍。倡议限时训练,比方限定为半小时,如果半小时内想不进去,能够联合文章开端的参考答案来思考。
能够在下方评论区留言或者加我的微信:code_maomao。期待你的到来。
求关注求点赞????~~~????????????
???? 题目1:海盗码
当海盗数量发生变化时,请帮忙Amaro确认下一次他的逻辑。
请记住,每次海盗发现宝藏,黄金的数量就等于海盗人数 * 20。
例:
如果海盗数量为2,包含Amaro,则array = [40, 0],这样他就能够将所有黄金保留给本人。
如果包含Amaro在内的海盗数量是3,则array = [59, 0, 1],并且他要拿59金。
如果海盗数量为4,包含Amaro,则array = [79, 0, 1, 0],而他要取79金。
如果包含Amaro在内的海盗数量为5,则array = [98, 0, 1, 0, 1],并且他要拿98金。
返回应该调配的计划数组。
习题代码
function amaroPlan(pirateNum){}
???? 题目2:在路上
工作
您刚刚搬入一条齐全笔挺的街道,n两边的屋宇完全相同。天然,您想找出这条街另一侧的人的门牌号码。这条街看起来像这样:
街道如图所示:
1| |63| |45| |2
左边的偶数减少;右边的逐步升高,门牌号码开始于1并且有距离地减少。当n = 3,1对抗6,3对抗4和5对抗2。
例子:
给定您的门牌号address和街道长度,在街道n的另一侧给出门牌号。
overTheRoad(address, n)overTheRoad(1, 3) = 6overTheRoad(3, 3) = 4overTheRoad(2, 3) = 5overTheRoad(3, 5) = 8
习题代码
function overTheRoad(address, n){//code here}
???? 题目3:音讯验证
您有一个输出字符串,应查看它是否是无效音讯。为此,您须要将字符串除以数字,而后将数字与以下子字符串中的字符数进行比拟。
例如,"3hey5hello2hi"应分为3, hey, 5, hello, 2, hi,函数应返回true,因为它"hey"是3个字符,"hello"5个和"hi"2个字符;当数字和字符数匹配时,后果为true。
笔记:
- 邮件仅由字母和数字组成
- 数字能够有多个数字:例如
"4code13hellocodewars"
是无效的音讯 - 每个数字都必须与以下子字符串中的字符数匹配,否则音讯有效:例如
"hello5"
和"2hi2"
有效 - 如果音讯为空字符串,则应返回
true
function isAValidMessage(message){// your code}
???? 题目4:让死鱼游泳
编写一个简略的解析器,将解析并运行Deadfish。
死鱼有4个命令,每个命令长1个字符:
i 增加值(最后是0)
d 缩小值
s 平方值
o 将值输入到返回数组
有效字符应被疏忽。
parse("iiisdoso") => [ 8, 64 ]
0+1+1+1——平方(后果为9)-1输入为8,平方,输入为64。
// Return the output array, and ignore all non-op charactersfunction parse( data ){}
???? 题目5:他们是“一样的”吗?
给定两个数组,a和b编写一个函数comp(a, b)(compSame(a, b)在Clojure中),该函数查看两个数组是否具备“雷同”元素且具备雷同的多重性。“雷同”在这里是指其中的元素b是a平方的元素,与程序无关。
如果都是空数组,返回true。
例子
无效数组
a = [121, 144, 19, 161, 19, 144, 19, 11]b = [121, 14641, 20736, 361, 25921, 361, 20736, 361]
comp(a, b)返回true,因为在b121中是11的平方,在14641中是121的平方,在20736中是144的平方,在361中是19的平方,在25921中是161的平方,依此类推。如果咱们用b平方来写元素,这将变得不言而喻:
a = [121, 144, 19, 161, 19, 144, 19, 11]b = [11*11, 121*121, 144*144, 19*19, 161*161, 19*19, 144*144, 19*19]
有效的数组
如果咱们将第一个数字更改为其余数字,则comp可能不再返回true:
a = [121, 144, 19, 161, 19, 144, 19, 11]b = [132, 14641, 20736, 361, 25921, 361, 20736, 361]
comp(a,b)返回False,因为在b132中不是任何数的平方a。
a = [121, 144, 19, 161, 19, 144, 19, 11]b = [121, 14641, 20736, 36100, 25921, 361, 20736, 361]
comp(a,b)返回false,因为在b36100中不是任意数量的平方a。
备注
a
或b
可能是[]
(除R,Shell外的所有语言)。a
或b
可能是nil
或null
或None
或nothing
(C ++,Elixir,Haskell,PureScript,Pascal,R,Rust,Shell中除外)。
如果a或b有nil(或null或None),这个问题就没有意义了那么返回FALSE。
注意事项
这两个数组的大小(> 0)与function comp中的参数雷同。
习题代码
function comp(array1, array2){//your code here}
答案
???? 题目1的答案
参考答案1:
function amaroPlan(n){return [20*n-((n-1)/2|0),...[...Array(n-1)].map((_,i)=>i%2)]}
参考答案2:
function amaroPlan(pirateNum) {const result = Array(pirateNum).fill(0);result[0] = pirateNum * 20;for (let i = 2; i < pirateNum; i += 2) {result[0]--;result[i]++;}return result;}
参考答案3:
function amaroPlan(pNum){const arr = Array.from({length:pNum}, (_, x)=> x % 2 ===0 ? 1 : 0)arr[0] += pNum*20 - arr.reduce((a,b)=> a + b, 0)return arr}
???? 题目2的答案
function overTheRoad(address, n){return (n*2+1)-address;}
???? 题目3的答案
function isAValidMessage(message){// your codeif (!message) return truewhile (message.length > 0) {let num = parseInt(message);if (isNaN(num)) return false;message = message.slice((num + "").length);let str = message.slice(0, num);let regex = RegExp('^[a-zA-Z]{' + num + '}$')if (!regex.test(str)) return false;message = message.slice(num);}return true;}
参考答案2
function isAValidMessage(message) {const number = message.split(/[a-z]/i).filter(e => e !== '')const word = message.split(/[0-9]/).filter(e => e !== '')const filtering = word.map((x,i) => x.length == number[i]).filter(e => e === true).lengthreturn !message.length || (filtering === number.length && word.length === number.length && message.slice(0, 1).match(/[0-9]/) && !message.slice(-1).match(/[0-9]/)) ? true : false}
参考答案3
function isAValidMessage(message) {if (!/^(d+[a-z]+)*$/i.test(message))return false;let parts = message.match(/d+|[a-z]+/gi);if (parts)for (let i = 0; i < parts.length; i += 2)if (+parts[i] !== parts[i + 1].length)return false;return true;}
???? 题目4的答案
参考答案1
// Return the output array, and ignore all non-op charactersfunction parse( data ) {var v = 0, ret = []for (var c of data) {switch (c) {case 'i' : v++; break;case 'd' : v--; break;case 's' : v=v*v; break;case 'o' : ret.push(v); break;}}return ret;}
参考答案2
const parse = (data) => {let result = []let val = 0data.split('').forEach(x => {switch(x){case 'i':val++breakcase 'd':val--breakcase 's':val*=valbreakcase 'o':result.push(val)}})return result}
???? 题目5的答案
参考答案1:
function comp(array1, array2) {if(array1 == null || array2 == null) return false;array1.sort((a, b) => a - b); array2.sort((a, b) => a - b);return array1.map(v => v * v).every((v, i) => v == array2[i]);}
参考答案2
function comp(a, b) {return !!a && !!b && a.map(x => x*x).sort().join() == b.sort().join();}
????后序
本系列会定期更新的,题目会由浅到深的逐步提高。
求关注求点赞 ????~~????????????
能够关注我的公众号:前端毛小悠。欢送浏览