我有一个由0,1,2,3,4,5,6,7,8,9组成的数组。我目前使用的是Javascript语言。
然后我想将它简化为一个新的数组,其本身的数字7在索引4处,而数组中的其余数字在该索引之后从最低到最大排序。
这项任务的一个具有挑战性的方面是让低于7的数字在索引4之前进行自我排序。
它必须位于索引4。它不能位于不同的索引。要放在索引4处的目标数字可以是我上面写的数组中的任何数字。
示例:
当我想要将数字7放在索引4时返回的数组:
[3,4,5,6,7,8,9,0,1,2]当我想要将数字9放在索引4时返回的数组:
[5,6,7,8,9,0,1,2,3,4]到目前为止我最好的尝试:
let state = 7;
[0,1,2,3,4,5,6,7,8,9].reduce((acc,cur)=>{
let lastInd = state+5;
let firstInd = state-4 <0 ? 10+(state-4): state-4;
return acc
},[])可以选择对此进行硬编码以获得答案(这是硬编码的解决方案):
let state = 7
let order = [
[0,1,2,3,4,5,6,7,8,9],
[1,2,3,4,5,6,7,8,9,0],
[2,3,4,5,6,7,8,9,0,1],
[3,4,5,6,7,8,9,0,1,2],
[4,5,6,7,8,9,0,1,2,3],
[5,6,7,8,9,0,1,2,3,4],
[6,7,8,9,0,1,2,3,4,5],
[7,8,9,0,1,2,3,4,5,6],
[8,9,0,1,2,3,4,5,6,7],
[9,0,1,2,3,4,5,6,7,8]
];
let stateArray = order.find((e)=>{
return e.indexOf(state) === 4;
});我只是认为这将是一个很好的时间杀手,并试图解决一个有趣和具有挑战性的问题。我并不急于解决这个问题,因为我为我的项目实现了硬编码代码,但我一直在想这个问题的答案是什么,我想有人可能想要解决这个问题。
用Java或JS语言编写的解决方案对我来说是最好的。我没有学过任何其他语言,但如果它能很容易地“翻译”成JS,我不会介意。
发布于 2019-02-08 15:06:18
这可以使用slice和concat来完成:
const a=[0,1,2,3,4,5,6,7,8,9]
const f=(x)=>
{
const b=a.slice(x-4)
const c=a.slice(0,x-4)
return( b.concat(c))}所以如果你调用f(7),你会得到:
[3,4,5,6,7,8,9,0,1,2]https://stackoverflow.com/questions/54587349
复制相似问题