Rumah >hujung hadapan web >tutorial js >Codewars - Bina timbunan Kiub

Codewars - Bina timbunan Kiub

Patricia Arquette
Patricia Arquetteasal
2025-01-07 08:32:39577semak imbas

Salam.

Codewars - Build a pile of Cubes

Saya menyiarkan cabaran Codewars dan proses pemikiran saya dalam siri ini. Saya menggunakan JS dan Node 18 apabila boleh. Hanya demi kejelasan, saya menggunakan mereka secara adil.

Yang seterusnya adalah sukar bagi kami, orang yang bergelut dengan matematik. Ia satu cabaran yang bagus walaupun. Pada asasnya, ia bermuara kepada memikirkan jumlah kiub "n". Kemudian ada ilmu hitam (a.k.a: algebra) et voilà! Selesai.

Jumlah kiub dijelaskan dengan bukti.

Penyelesaian penuh:

function findNb(m) {

  // sum of n cubes = ( n^2 * (n+1)^2 ) / 4

  let number = m * 4;
  number = number ** (1/2);
  let numberAux = number ** (1/2);
  let floor = Math.floor(numberAux);
  let ceiling = (Number.isInteger(numberAux)) ? floor + 1 : Math.ceil(numberAux);
  if ( floor * ceiling == number ){
    return floor;
  }
  return (-1);
}

Mengapa kita mengira lantai dan siling? Kerana jika hujah m memang mewakili jumlah kiub "n", maka numberAux ialah SEBAHAGIAN nombor yang kita cari. Kami hanya memerlukan bahagian integer. Yang mana "n". Dan ia juga lantai.

Jika 'm' tidak mewakili jumlah kubus, maka fungsi mengembalikan -1. Bukan masalah besar.

Ia berkesan. Saya tidak tahu sama ada saya-dalam-6-bulan akan memahami apa-apa sekalipun.

Jaga diri. Minum air ???.

Sebelumnya

Atas ialah kandungan terperinci Codewars - Bina timbunan Kiub. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn