Javascript 方形文本问题寻找循环解决方案
因此,我的任务是把一个字符串作为输入,并将其置乱成一个方码,即“如果人类要留在地面上,上帝会给我们根”返回imtgdvs fearwer Mayogo anouuio ntnnlvt wttddes Aohhn sseoau,其中,新字符串中的每个字母来自将字符串排序为一列,该字符串是正方形的垂直列。即: 伊夫曼瓦斯 梅纳托斯 泰恩特 地滚球 德乌尔达 素食者 斯罗茨 我有一个解决方案,但它是笨重的,如果正方形大于8 x 8,我的解决方案就会崩溃。想要简化,只是还没有逻辑 我的直觉告诉我有一种方法可以循环,但我就是看不到方法Javascript 方形文本问题寻找循环解决方案,javascript,Javascript,因此,我的任务是把一个字符串作为输入,并将其置乱成一个方码,即“如果人类要留在地面上,上帝会给我们根”返回imtgdvs fearwer Mayogo anouuio ntnnlvt wttddes Aohhn sseoau,其中,新字符串中的每个字母来自将字符串排序为一列,该字符串是正方形的垂直列。即: 伊夫曼瓦斯 梅纳托斯 泰恩特 地滚球 德乌尔达 素食者 斯罗茨 我有一个解决方案,但它是笨重的,如果正方形大于8 x 8,我的解决方案就会崩溃。想要简化,只是还没有逻辑 我的直觉告诉我有一种方
const squareCode = function(message) {
let newString = ""
let string = message.replace(/ /g, "");
let root =Math.ceil(Math.sqrt(string.length))
root = Math.round(root)
for (let i = 0; i < string.length; i ++){
if (i % root == 0 || i == 0){
newString += string[i]
}
} newString += " "
for (let i = 0; i < string.length; i ++){
if (i % root == 1 ){
newString += string[i]
}
} newString += " "
for (let i = 0; i < string.length; i ++){
if (i % root ==2){
newString += string[i]
}
} newString += " "
for (let i =0; i < string.length; i ++){
if ( i % root ==3){
newString += string[i]
}
} newString += " "
for (let i =0; i < string.length; i ++){
if ( i % root ==4){
newString += string[i]
}
} newString += " "
for (let i =0; i < string.length; i ++){
if ( i % root ==5){
newString += string[i]
}
} newString += " "
for (let i =0; i < string.length; i ++){
if ( i % root ==6){
newString += string[i]
}
} newString += " "
for (let i =0; i < string.length; i ++){
if ( i % root ==7){
newString += string[i]
}
} newString += " "
return newString
}
console.log(squareCode("chill out"));
console.log(squareCode("feed the dog"));
console.log(squareCode("have a nice day"));
console.log(squareCode("if man was meant to stay on the ground god would have given us roots"));
//my output
//clu hlt io
//fto ehg ee dd
//hae and via ecy
//imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau
const squareCode=函数(消息){
让newString=“”
让string=message.replace(//g,“”);
设root=Math.ceil(Math.sqrt(string.length))
root=Math.round(root)
for(设i=0;i
我得到了我想要的东西,我只希望用不到50行的代码来完成它。一种使用Array#reduce的方法
const squareCode=message=>{
让字符串=message.replace(/\s+/g,“”)。split(“”);
让length=Math.ceil(Math.sqrt(string.length));
返回字符串.reduce((acc,l,i)=>(acc[i%length]+=l,acc),新数组(length.fill(“”)).join(“”);
};
log(squareCode(“冷静”));
console.log(squareCode(“喂狗”));
log(squareCode(“祝您愉快”);
log(squareCode(“如果人注定要呆在地上,上帝会给我们根”)代码>你能写出想要的输出吗?@steppup-这是个问题