برنامه نویسی

Codewars – Descending Order – انجمن DEV

سلام.

بریک تاملند می گوید سلام

من چالش های Codewars و روند فکرم را در این مجموعه پست می کنم. من در صورت امکان از JS و Node 18 استفاده می کنم. فقط برای شفافیت، من از آنها استفاده منصفانه می کنم.

به چالش بعدی از Codewars. در این یکی، ما وظیفه داریم تابعی را توسعه دهیم که هر عدد صحیح را به عنوان ورودی بگیرد. باید ارقام را از بالاترین به کمترین مرتب کنیم.

من با این فکر شروع می کنم:

“بسیار خوب، من باید به نحوی ارقام را تقسیم کنم. شاید باید ابتدا عدد صحیح را به رشته تبدیل کنم. سپس رقم ها را تقسیم کنم. سپس ترتیب دهید، سپس همه را به هم متصل کنید، سپس به عدد صحیح برگردید.”

و بنابراین، با یک الگو شروع می شود:

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;
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نامه های بسیار، چنین خسته کننده. و هنوز هم کاربردی نیست. بنابراین، چه چیز دیگری نیاز داریم؟ خوب، یک حلقه که ارقام را برای شروع در آرایه قرار می دهد:

 // split digits
  array = new Array(number.length);
  for(i=0 ; i<number.length ; i++){
    array[i] = number.at(i);
  }
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

که باید آن را انجام دهد. درسته؟

گودار خوب است

نه یک جزئیات کوچک شیطان در جزئیات است. و همینطور اشکالات. تابع مرتب سازی به صورت پیش فرض به صورت صعودی مرتب می شود. ما باید “قطبیت را برگردانیم”. در اصل ما به این نیاز داریم. رفتار پیش فرض به این صورت است:

(a, b) => a - b
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و ما نیاز داریم:

(a, b) => b - a
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

همه مواد ترکیبی:

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;
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نه بهترین و نه ساده ترین راه حل. اما این کار را انجام می دهد.

سیا آب بنوشید 💧💧💧 .

قبلی

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا