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

https://github.com/JustinPaoletta