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.
Seterusnya dalam siri ini ialah "You're a Square!". Lihat, ketagihan LEGO anda semakin tidak terkawal dan anda kini mengekodkan sebagai ubat gantian.
Nah, awak sihat ?. Dan tugas anda seterusnya melibatkan segi empat sama. Jadi masalahnya cuba menjawab "Adakah nombor ini segi empat sama?". Jadi, bagaimana kita menangani perkara ini? Walau bagaimanapun kita inginkan. Seperti mana-mana masalah pengekodan.
Pertama, selesaikan. Kemudian, selesaikan dengan betul. Kemudian, selesaikan dengan betul dan cepat.
Firasat pertama saya membawa saya kepada ini:
var isSquare = function(n){ let nIsSquare = false; if (n>=0) { nIsSquare = ( n ** 2 ) == 2 * ( (n - 1) ** 2 ) - ( (n-2) ** 2 ) + 2; } return nIsSquare; }
Ini salah. Saya pergi dengan
n2 =2(n−1) 2−(n−2)2 2
Terima kasih Wikipedia. Tetapi ini adalah formula untuk mengesahkan n^2. Saya memerlukan formula untuk mengesahkan n.
Pada artikel wikipedia yang lain terdapat cara ringkas dan kemas untuk mengira punca kuasa dua: Identiti eksponen.
Jadi kami betulkan kod kami yang terdahulu:
var isSquare = function(n){ let nIsSquare = false; if (n>=0) { let sqrt = Math.E ** ( Math.log(n) / 2 ); nIsSquare = Number.isInteger(sqrt); } return nIsSquare; }
Annnnnnnnnnnd:
Oh, ayuh. Mengapa ia gagal? Oh. JavaScript melakukan perkara pelik dengan nombor titik terapung. Jadi, ia bukan kesalahan kod. Betul ke? Rasanya kita tidak akan pernah tahu. Walaupun begitu, saya sayang awak JS. Dasar pelik.
Hanya gunakan Math.sqrt():
var isSquare = function(n){ let nIsSquare = false; if (n>=0) { nIsSquare = Number.isInteger(Math.sqrt(n)); } return nIsSquare; }
Bukan yang terbaik, tetapi penyelesaian yang paling mudah. Melakukan kerja.
Selamat tinggal. Minum air ???.
Sebelumnya
Atas ialah kandungan terperinci Codewars - Anda adalah segi empat sama!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!