Maison >interface Web >js tutoriel >Codewars - Ordre décroissant

Codewars - Ordre décroissant

Linda Hamilton
Linda Hamiltonoriginal
2025-01-05 10:39:43507parcourir

Salutations.

Codewars - Descending Order

Je publie les défis Codewars et mon processus de réflexion dans cette série. J'utilise JS et Node 18 autant que possible. Par souci de clarté, j'en fais un usage équitable.

Passons au prochain défi de Codewars. Dans celui-ci, nous sommes chargés de développer une fonction qui prend n’importe quel entier en entrée. Nous devons classer les chiffres du plus haut au plus bas.

Je commence par cette pensée :

"D'accord, je devrai diviser les chiffres d'une manière ou d'une autre. Peut-être que je devrais d'abord transformer l'entier en chaîne. Puis diviser les chiffres. Puis trier, puis concaténer le tout, puis revenir à un entier"

Et donc, cela commence par un modèle :

function descendingOrder(n){

 // stringify
  number = n.toString();

 // split digits
  array = new Array(number.length);
  // code that fills array with digits {}

 //sort
  array.sort()

 // concatenate digits
  reverse = array.join('');

 // back to integer
  n = Number.parseInt(reverse);

  return n;
}

Beaucoup de lettres, tellement ennuyeuses. Et toujours pas fonctionnel. Alors, de quoi d’autre avons-nous besoin ? Eh bien, une boucle qui place les chiffres dans le tableau pour commencer :

 // split digits
  array = new Array(number.length);
  for(i=0 ; i<number.length ; i++){
    array[i] = number.at(i);
  }

Ça devrait le faire. N'est-ce pas ?

Codewars - Descending Order

Non. Un tout petit détail. Le diable est dans les détails. Et les bugs aussi. La fonction de tri classe par défaut par ordre croissant. Nous devons « inverser la polarité ». En substance, nous en avons besoin. Le comportement par défaut est le suivant :

(a, b) => a - b

Et nous avons besoin de :

(a, b) => b - a

Tous les ingrédients réunis :

function descendingOrder(n){
  number = n.toString();
  array = new Array(number.length);
  for(i=0;i<number.length;i++){
    array[i] = number.at(i);
  }
  array.sort((a,b)=>b-a)
  reverse = array.join('');
  n = Number.parseInt(reverse);
  return n;
}

Pas la meilleure, ni la solution la plus simple. Mais ça fait le travail.

Cya. Boire de l'eau ???.

Précédent

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:VS Code LLM = ?Article suivant:VS Code LLM = ?