2016-12-03 1 views
0

die „Pyramide“ von Briefen

var z = []; 
 
for(var i = 1; i < 7; i++) z.push("a".repeat(i)); 
 
console.log(z.join("\n")+"\n"+"a".repeat(7)+z.reverse().splice(0,1).join("\n"));

ich den Code gemacht habe, dass eine „Pyramide“ von Briefen der Fall ist, die wie folgt aussehen:

a 
aa 
aaa 
aaaa 
aaaaa 
aaaaaa 
aaaaaaa 
aaaaaa 
aaaaa 
aaaa 
aaa 
aa 
a 

aber es gibt die Ausgabe wie folgt:

a 
aa 
aaa 
aaaa 
aaaaa 
aaaaaa 
aaaaaaaaaaaaa 

Code hier:

var z = []; 
for(var i = 1; i < 7; i++) z.push("a".repeat(i)); 
console.log(z.join("\n")+"\n"+"a".repeat(7)+z.reverse().splice(0,1).join("\n")); 

Wie funktioniert der Code wie erwartet?

P.S. Ich brauche die Ausgabe nicht zu trennen, weil ich anstelle der console.log Methode die API-Methode message.send verwende.

+1

Und Ihre Frage? –

+0

@FelixKling "Machen Sie meine Hausaufgaben" – xShirase

+0

die Frage ist, "wie man den Code wie erwartet funktioniert?" –

Antwort

1

Spaßweise, modulos, verwendbar mit jeder Größe verwenden.

var len = 7; 
 
var z = []; 
 
for(var i = 0; i < 2*len; i++) 
 
    if(i<len) 
 
    z.push("a".repeat(i%len+1)); 
 
    else if (i>len) 
 
    z.push("a".repeat(len-i%len)) 
 
console.log(z.join("\n"));

1

Sie müssen eine \n nach der Mittellinie hinzufügen, und Sie müssen den Spleiß entfernen.

var z = []; 
 
for(var i = 1; i < 7; i++) z.push("a".repeat(i)); 
 
console.log(
 
    z.join("\n")+"\n"+ 
 
    "a".repeat(7)+'\n'+ 
 
    z.reverse().join("\n") 
 
);

+0

danke, arbeitete –

0

diese Art und Weise möglich:

var z = []; 
for(var i = 1; i < 7; i++) z.push("a".repeat(i)); 
for(var i = 7; i > 0; i--) z.push("a".repeat(i)); 
console.log(z.join("\n")); 

oder:

var z = []; 
for(var i = -7; i < 7; i++) z.push("a".repeat(7-Math.abs(i))); 
console.log(z.join("\n")); 

auch diese sehr schnelle Implementierung versuchen:

Für jedes k in der Rückruf drücken die Anzahl der a dem Array mit
+0

congrats, gewinnen Sie :) https://jsperf.com/pyramid-of-letters – xShirase

0

const fn = (ch, len) => { 
 
    let head = footer = ''; 
 
    Array(...Array(len).keys()).forEach((e, i) => { 
 
    head += ch.repeat(i + 1) + `\n`; 
 
    if(i !== 0) 
 
     footer += ch.repeat(len - i) + `\n`; 
 
    }); 
 
    return head + footer; 
 
}; 
 

 
document.querySelector('pre').innerHTML = fn('a', 7);
<pre></pre>

0

Verwendung Array#from ein Array von 11. Länge erstellen. Registriert das Array mit \n:

const result = Array.from({ length: 11 }, (v, k) => 'a'.repeat(k < 6 ? k + 1 : 11 - k)).join('\n'); 
 

 
console.log(result);

Verwandte Themen