Zgjidhet me javascript
SFIDA (Numri i kundërt)
Ju duhet të shkruani një funksion që:
- Merr një numër të plotë pozitiv dhe kthen shifrat e tij në rend të kundërt, pa konvertuar asgjë në një varg. Përdorni VETËM matematikën!
Shembuj
reverseNumber(7856) returns 6587 ===================== reverseNumber(43589) returns 98534
Kutitë e skajeve
Asnjë për t'u shqetësuar. Ne punojmë vetëm me numra të plotë pozitivë.
Kodi
Gjëja e parë që duhet të bëjmë brenda funksionit tonë është të krijojmë një variabël që do të ruajë numrin tonë të kundërt. Ne do ta inicializojmë atë në zero.
function reverseNumber(number){ let reversedNumber = 0;}
Matematika që do të bëjmë do të jetë vetëm ndërsa numri ynë është më i madh se 0. Pra, pjesa tjetër e logjikës për këtë problem mund të trajtohet vetëm nga një cikli while.
// while our number is greater than ZERO while (number > 0) { // set reversedNumber to itself * 10. This adds a tens place // to the reversedNumber each iteration except the first. reversedNumber *= 10; // set reversedNumber to itself + the remainder of the input // number / 10 .. this gets us the last digit of the number // we started the loop with reversedNumber += number % 10; // Here we subtract that remainder (last digit) from the number number -= number % 10; // then we divide the number by 10 number /= 10; }
Pra, çdo herë përmes ciklit while ne presim shifrën e fundit të numrit të hyrjes. Pra, nëse fillojmë me 7856, pas përsëritjes së parë kemi…
numër = 785
Numri i kundërt = 6
Pastaj, herën e dytë, si dhe çdo herë pas kësaj, shtojmë një vend dhjetëshe në numrin e kundërt përmes shumëzimit, presim shifrën e fundit të numrit të hyrjes dhe e shtojmë atë në numrin e kundërt.
Pra… reversedNumber bëhet shkurtimisht 60 pastaj 65.
pas herës së dytë përmes ciklit kemi…
numri = 78
Numri i kundërt = 65
Hera e tretë përmes reversedNumber bëhet shkurtimisht 650 pastaj 658.
Më pas kemi…
numri = 7
Numri i kundërt = 658
Pastaj përsëritja e fundit reversedNumber bëhet shkurtimisht 6580 pastaj 6587.
Liku ynë i while ndalon këtu sepse…
... 7 - 7 = 0 Meaning the next input number (0) is no longer greater than zero! This condition keeps us from getting stuck in an infinite loop! number -= number % 10;
Pastaj ne kthejmë vetëm numrin e kundërt!
return reversedNumber;
Këtu është versioni i plotë i kodit:
function reverseNumber(number){ let reversedNumber = 0; while (number > 0) { reversedNumber *= 10; reversedNumber += number % 10; number -= number % 10; number /= 10; } return reversedNumber; }
Këtë problem mund ta provoni vetë KETU
Kjo është vetëm një nga shumë zgjidhjet e mundshme, shpresoj se ju ka ndihmuar të kuptoni më mirë se si t'i qaseni këtij problemi. Faleminderit që lexuat, dhe nëse e keni gjetur të dobishme, ju lutem më lini një duartrokitje!
Më gjeni në GitHub