Shine bright like a diamond

Cette semaine, c'est Emilie qui vous propose un #KataOfTheWeek : Give me a diamond

Briefing du Kata : James veut faire plaisir à sa petite amie développeuse en lui offrant une chaîne de diamants. Comme James ne sait pas comment s'y prendre (le pauvre il est boucher), il a besoin de ton aide.

Règles: Vous devez renvoyer une chaîne de caractères qui ressemble à un losange lorsqu'elle est imprimée à l'écran, en utilisant des caractères astérisques (*). Les espaces de fin de ligne doivent être supprimés et chaque ligne doit être terminée par un caractère de nouvelle ligne (\n). Retournez null… si l'entrée est un nombre pair ou négatif, car il n'est pas possible d'imprimer un diamant de taille paire ou négative.

diamond(-3) => null
diamond(2) => null
diamond(3) =>

 *
***
 *

… qui apparaîtrait comme une chaîne de caractères de *\n***\n *\n

diamond(5) =>

  *
 ***
*****
 ***
  *

… qui est *\n ***\n*****\n ***\n  *\n

Saurez-vous résoudre le problème ?

Bon courage!


Et voici une solution proposée par l'auteur en JavaScript :

function diamond(n){
    if (n < 0 || n % 2 === 0) return null; // even or negative number

    let numSpace = 0;
    let result = '*'.repeat(n) + '\n'; // middle row

    for (let numStar = n - 2; numStar >= 1; numStar -= 2) {
        let nextRow = ' '.repeat(++numSpace) + '*'.repeat(numStar) + `\n`;
        result = nextRow + result + nextRow;
    }
    
    return result;
}

Votre TakiVeille

TakiVeille

TakiVeille