Rumah >hujung hadapan web >tutorial js >Codewars - Bina timbunan Kiub
Salam.
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!