codewars练习(javascript)-2021/2/8

本文分享了三个Codewars-js练习,包括将数字转为二进制或十六进制,计算生命路径数,以及扁平化并排序数组。通过实例展示了如何使用JavaScript实现这些算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

codewars-js练习

2021/2/8

github 地址

my github地址,上面有做的习题记录,不断更新…

【1】<7kyu>【Evens and Odds】

This kata is about converting numbers to their binary or hexadecimal representation:

  • If a number is even, convert it to binary.
  • If a number is odd, convert it to hex.

将数字转换成二进制或十六进制表示的:

如果一个数是偶数,就把它转换成二进制数。如果一个数字是奇数,将其转换为十六进制。

example

(2));//'10'
(13));//'d'

solution

<script type="text/javascript">
 		function evensAndOdds(num){
 			// console.log(num);
 			if(num % 2 == 0){
 				return num.toString(2);
 			}else{
 				return parseInt(num).toString(16);
 			}
 		}
		
		// 验证
		console.log(evensAndOdds(2));//'10'
		console.log(evensAndOdds(13));//'d'
	</script>
【2】<7kyu>【Life Path Number】

一个人的生命路径号是通过将其出生日期中的每个数字相加计算出来的,直到它减少为一个数字。

example

year: 1 + 8 + 7 + 9 = 25; 2 + 5 = 7
month: 0 + 3 = 3
day: 1 + 4 = 5
final result: 7 + 3 + 5 = 15; 1 + 5 = 6

solution

<script type="text/javascript">
 		function lifePathNumber(dateOfBirth) {
 			// console.log(dateOfBirth);
 			var arr = dateOfBirth.split('-').join('').split('');
 			// console.log(arr);
 			var year1 = parseInt(arr[0]) + +arr[1] + +arr[2] + +arr[3];
 			// console.log(year1)
 			var year = Math.floor(year1 / 10) + year1 % 10;
 			// console.log(year);

 			var mouth = parseInt(arr[4]) + +arr[5];
 			var day = parseInt(arr[6]) + +arr[7];

 			var final = year + mouth + day;
 			// console.log(final);
 			var lifenum = (Math.floor(final / 10) + final % 10);
 			if(lifenum % 10 == 0){
 				lifenum = (Math.floor(lifenum / 10) + lifenum % 10);
 			}
  			return lifenum;
  		}
		
		// 验证
		console.log(lifePathNumber("1879-03-14"));// 6
		console.log(lifePathNumber("1815-12-10"));// 1
		console.log(lifePathNumber('1961-07-04'));//1
	</script>
【3】<7kyu>【Flatten and sort an array】

Given a two-dimensional array of integers, return the flattened version of the array with all the integers in the sorted (ascending) order.

给定一个二维整数数组,返回该数组的扁平版本,其中所有整数按排序(升序)顺序排列。

example

Given [[3, 2, 1], [4, 6, 5], [], [9, 7, 8]], your function should return [1, 2, 3, 4, 5, 6, 7, 8, 9].

solution

<script type="text/javascript">
		function flattenAndSort(array) {
			// console.log(array);
			var arr = [];
			if(array.length !=0){
				for(var i=0;i<array.length;i++){
					for(var j=0;j<array[i].length;j++){
						// console.log(array[i][j]);
						arr.push(array[i][j]);
					}
				}
				// console.log('arr',arr)
				arr.sort((a,b)=>{return a-b;});
				for(var z=0;z<arr.length;z++){
					arr[z] = parseInt(arr[z]);
				}
				// console.log(arr);
			  	return arr;
			 }else{
			 	return array;
			 }
		}
		
		// // 验证
		console.log(flattenAndSort([[3, 2, 1], [4, 6, 5], [], [9, 7, 8]]));//[1, 2, 3, 4, 5, 6, 7, 8, 9]
		console.log(flattenAndSort([[1, 3, 5], [100], [2, 4, 6]]));// [1, 2, 3, 4, 5, 6, 100]
	</script>

以上为自己思路供大家参考,可能有更优的思路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值