5 hawlaha wareysiga JavaScript caadiga ah: falanqaynta iyo xalalka

5 hawlaha wareysiga JavaScript caadiga ah: falanqaynta iyo xalalka

Ka yimid turjubaanka: maqaal kuu daabacay Maria Antonietta Perna, oo ka hadlaysa hawlaha JavaScript ee caadiga ah, inta badan waxaa la siiyaa codsadaha horumariya inta lagu jiro waraysiyada. Maqaalku wuxuu noqon doonaa mid faa'iido leh, marka ugu horeysa, barnaamijyada cusub.

Wareysiyada shirkadaha teknolojiyadda ayaa muddo dheer ahaa hadal heynta magaalada. Tani waa inaysan noqon wax la yaab leh - gudbinta wareysiga si guul leh waxay ku siinaysaa fursad aad ku hesho shaqo wanaagsan. Laakiin tani maaha mid sahlan, maadaama dhibaatooyinka adag inta badan loo baahan yahay in la xalliyo.

Intaa waxaa dheer, inta badan, inta badan hawlahan kuma xirna shaqada uu codsaduhu qaban doono, laakiin weli waxay u baahan yihiin in la xalliyo. Mararka qaarkood waa inaad ku sameysaa sabuuradda, adigoon ka hubin Google ama ilo kale. Haa, xaaladdu si tartiib tartiib ah ayey isu beddeshaa, shirkadaha qaarna way iska dhaafaan waraysiyadaas, laakiin loo-shaqeeyayaal badan ayaa weli ku dheggan dhaqankan. Maqaalkani wuxuu u go'ay falanqaynta hawlaha caadiga ah ee JavaScript ee inta badan loo isticmaalo hawlo shaqo-doon ah.

Waxaan xusuusineynaa: dhammaan akhristayaasha "Habr" - qiimo dhimis ah 10 rubles marka la qorayo koorso kasta oo Skillbox ah iyadoo la adeegsanayo koodhka xayeysiinta "Habr".

Skillbox waxay ku talinaysaa: Koorso wax ku ool ah "Developer Mobile PRO".

Waxa ugu muhiimsan waa inaad si fiican ugu diyaargarowdo waraysigaaga.

Haa, ka hor inta aynaan bilaabin eegida hawlaha, aynu eegno qaar ka mid ah talooyinka diyaarinta waraysiga guud.

Waxa ugu muhiimsan waa in la sii diyaariyo. Tijaabi sida wanaagsan ee aad u xasuusato algorithms-ka iyo qaab-dhismeedka xogta, oo wanaaji aqoontaada meelaha aanad aqoon u lahayn. Waxaa jira goobo badan oo online ah oo kaa caawin kara inaad u diyaargarowdo waraysiyada. Waxaan ku talinaynaa geeksforgeeks, Baratanka, Wareysiga.io и Koodhka Signal.

Waxaa habboon in la barto in go'aanka kor loogu qaado. Waxaa lagugula talinayaa inaad u sheegto codsadayaasha waxaad samaynayso, oo kaliya ha ku qorin sabuuradda (ama ku qor koodhka kumbuyuutarka, sidoo kale aamusnaan). Sidan, haddii aad qalad ku sameyso koodhka, laakiin xalku guud ahaan waa sax, waxaad kordhin kartaa fursadahaaga guusha.

Waxaad u baahan tahay inaad fahanto dhibaatada ka hor inta aanad bilaabin inaad xalliso. Xaaladaha qaarkood, waxaa laga yaabaa inaad si hoose u fahanto hawsha oo aad waddo khaldan u marto. Waxa laga yaabaa inay mudan tahay in dhawr su'aalood oo caddaynaya la weydiiyo waraysiga.

Waxa aad u baahan tahay in aad gacanta ku barato koodka qoraalka, ee ma aha in aad ku tababarato kombayutarka. Waxay dhacdaa in inta lagu jiro waraysiyada codsadaha la siiyo calaamade iyo sabuur cad, halkaas oo aysan jirin tilmaamo ama qaab toos ah. Markaad xal raadinayso, waxaa habboon in koodkaaga ku qor warqad ama si toos ah sabuuradda. Haddii aad wax walba ku hayso madaxaaga, waxaa laga yaabaa inaad illowdo wax muhiim ah.

Hawlaha qaabaynta ee JavaScript

Qaar ka mid ah hawlahan waxay u badan tahay inay horeba kuu yaqaaneen. Waxaad la yeelatay waraysiyo ay ahayd inaad xalliso wax la mid ah, ama aad ku dhaqantay iyaga markaad baranaysay JavaScript. Hagaag, hadda waa waqtigii lagu xallin lahaa mar kale, iyo sharraxaad faahfaahsan oo ku saabsan habka.

Palindrome

Palindrome waa kelmad, jumlad ama isku xigxiga jilayaasha kuwaas oo loo akhriyo isla isla jihada caadiga ah iyo jihada ka soo horjeeda labadaba. Tusaale ahaan, "Anna" waa palindrome, laakiin "miiska" iyo "John" maaha.

Diyaarinta

La siiyay xadhig; waxaad u baahan tahay inaad qorto hawl kuu ogolaanaysa inaad runta ku soo noqoto haddii xadhiggu yahay palindrome, iyo been haddii kale. Xaaladdan, waxaad u baahan tahay inaad tixgeliso meelaha bannaan iyo calaamadaha xarakaynta.

palindrome ('racecar') === run
palindrome ('miiska') === been ah

Aynu falanqeyno hawsha

Fikradda ugu weyn ee halkan waa in la beddelo xadhigga. Haddii xadhigga "reverse" uu si buuxda ula mid yahay kii asalka ahaa, markaa waxaan helnay palindrome oo shaqadu waa inay noqotaa mid run ah. Haddii kale, been.

go'aanka

Waa kan koodka xaliya palindrome-ka.

const palindrome = str => {
  // turn the string to lowercase
  str = str.toLowerCase()
  // reverse input string and return the result of the
  // comparisong
  return str === str.split('').reverse().join('')
}

Tallaabada ugu horreysa waa in loo beddelo jilayaasha xargaha gelinta oo loo beddelo kiis hoose. Tani waa dammaanad qaadka in barnaamijku is barbar dhigi doono jilayaasha laftooda, ee ma aha kiis ama wax kale.

Talaabada labaad waa in la rogo xariiqda. Tani ma aha mid adag in la sameeyo: waxaad u baahan tahay inaad u beddesho array adigoo isticmaalaya habka .split() (Library String). Kadibna arrayga ayaanu dib u celinaynaa anagoo adeegsanayna .reverse() (Array Library). Talaabada ugu danbeysa waa in loo rogo array-ga danbe ee xadhig adoo isticmaalaya .join() (Library Array).

Hadda waxa kaliya ee aad u baahan tahay inaad sameyso waa inaad barbardhigto xargaha "rogadka" iyo xarriiqda asalka ah, soo celinta natiijada run ama been.

FizzBuzz

Mid ka mid ah hawlaha ugu caansan wareysiyada.

Diyaarinta

Waxaad u baahan tahay inaad qorto hawl daabacaysa nambarada 1 ilaa n ilaa console-ka, halkaas oo n ay tahay halbeeg ay shaqadu u qaadanayso halbeeg ahaan, oo leh shuruudaha soo socda:

  • wax soo saarka fizz beddelka 3 dhufashada;
  • Wax-soo-saarka beddelka tirooyinka kuwaas oo ah tiro 5 ah;
  • wax soo saarka fizzbuzz halkii laga isticmaali lahaa tirooyin dhufasho ah oo ah 3 iyo 5 labadaba.

Tusaale:

Fizzbuzz (5)

natiijada

// 1
// 2
// fiz
// 4
//Buzz

Aynu falanqeyno hawsha

Waxa ugu muhiimsan halkan waa hab lagu helo tiro badan iyadoo la adeegsanayo JavaScript. Waxaa lagu hirgelin karaa iyadoo la isticmaalayo hawlwadeenka modules-ka ama inta soo hartay - %, taas oo kuu ogolaanaysa inaad muujiso inta soo hartay markaad qaybinayso laba lambar. Haddii inta soo hartay ay tahay 0, waxay la macno tahay in lambarka koowaad uu yahay isku dhufashada labaad.

12% 5 // 2 -> 12 ma aha isku dhufashada 5
12% 3 // 0 -> 12 waa dhufashada 3

Haddaba, haddii aad 12 u qaybiso 5, waxa aad helaysaa 2 ka soo hadhay 2. Haddii aad u qaybiso 12 3, waxa aad helaysaa 4 oo ka hadhay 0. Marka hore, 12 ma aha isku dhufasho 5 ah, ta labaad. , 12 waa isku dhufashada 3.

go'aanka

Xalka ugu fiican ayaa noqon doona code soo socda:

const fizzBuzz = num => {
  for(let i = 1; i <= num; i++) {
    // check if the number is a multiple of 3 and 5
    if(i % 3 === 0 && i % 5 === 0) {
      console.log('fizzbuzz')
    } // check if the number is a multiple of 3
      else if(i % 3 === 0) {
      console.log('fizz')
    } // check if the number is a multiple of 5
      else if(i % 5 === 0) {
      console.log('buzz')
    } else {
      console.log(i)
    }
  }
}

Shaqadu waxay fulisaa hubinta lagama maarmaanka ah iyadoo la adeegsanayo odhaaho shuruudaysan waxayna soo saartaa natiijada loo baahan yahay isticmaaluhu. Dhibaatada, waxaa habboon in fiiro gaar ah loo yeesho sida ay u kala horreeyaan haddii ... odhaahyada kale: ku bilow xaalad labanlaab ah (&&) oo ku dhammee kiis aan tirooyin badan laga helin. Natiijo ahaan, waxaan daboolnaa dhammaan xulashooyinka.

Anagram

Kani waa magaca ereyga ka kooban dhammaan xarfaha kelmad kale oo isku tiro ah, laakiin u kala horreeyaan.

Diyaarinta

Waxaan u baahanahay inaan qorno hawl hubinaysa in laba xadhig yihiin anagrams, kiiskuna waxba maaha. Jilayaasha kaliya ayaa la tiriyaa; boosaska ama calaamadaha xarakaynta xisaabta laguma darin.

anagram ('finder', 'Saaxiib') -> run
anagram('hello', 'bye') —> been ah

Aynu falanqeyno hawsha

Waxa muhiimka ah ee la tixgelinayo halkan waa inaad u baahan tahay inaad hubiso xaraf kasta oo ku jira labada xariiq ee wax-gelinta iyo lambarkooda sadar kasta.

raadiye —> f: 1 saaxiib —> f: 1
i: 1r: 1
n: 1 i: 1
d: 1 e: 1
e: 1 n:1
r: 1d: 1

Si aad u kaydiso xogta anagram-ka, waa inaad doorataa qaab dhismeed sida shayga JavaScript oo sax ah. Furaha kiiskan waa dabeecadda xarafka, qiimuhu waa tirada ku celiskeeda ee xariiqda hadda.

Waxaa jira shuruudo kale:

  • Waxaad u baahan tahay inaad hubiso in kiiska xarfaha aan xisaabta lagu darin marka la barbar dhigo. Waxaan si fudud labada xadhig ugu beddelnaa kiis hoose ama sare.
  • Waxaan ka saaraynaa dhammaan kuwa aan jilayaasha ahayn isbarbardhigga. Sida ugu fiican in lala shaqeeyo tibaaxaha joogtada ah.

go'aanka

// helper function that builds the
// object to store the data
const buildCharObject = str => {
  const charObj = {}
  for(let char of str.replace(/[^w]/g).toLowerCase()) {
    // if the object has already a key value pair
    // equal to the value being looped over,
    // increase the value by 1, otherwise add
    // the letter being looped over as key and 1 as its value
    charObj[char] = charObj[char] + 1 || 1
  }
  return charObj
}
 
// main function
const anagram = (strA, strB) => {
  // build the object that holds strA data
  const aCharObject = buildCharObject(strA)
  // build the object that holds strB data
  const bCharObject = buildCharObject(strB)
 
  // compare number of keys in the two objects
  // (anagrams must have the same number of letters)
  if(Object.keys(aCharObject).length !== Object.keys(bCharObject).length) {
    return false
  }
  // if both objects have the same number of keys
  // we can be sure that at least both strings
  // have the same number of characters
  // now we can compare the two objects to see if both
  // have the same letters in the same amount
  for(let char in aCharObject) {
    if(aCharObject[char] !== bCharObject[char]) {
      return false
    }
  }
  // if both the above checks succeed,
  // you have an anagram: return true
  return true
}

U fiirso adeegsiga Object.furaha() qaybta sare ee jeex. Habkani waxa uu soo celinayaa array ka kooban magacyo ama furayaal si la mid ah sida ay ugu muuqdaan shayga. Xaaladdan oo kale, diyaarintu waxay noqon doontaa sidatan:

['f', 'i', 'n', 'd', 'e', ​​'r']

Sidan ayaanu ku helnaa sifooyinka shayga anagoon samaynin loop bulk ah. Dhibaatada, waxaad isticmaali kartaa habkan leh hantida dhererka si aad u hubiso in labada xargo ay leeyihiin tiro isku mid ah oo jilayaal ah - tani waa muuqaal muhiim ah oo anagrams ah.

Raadi shaqallada

Hawl fudud oo inta badan ku soo baxda waraysiyada.

Diyaarinta

Waxaad u baahan tahay inaad qorto hawl u qaadanaysa xadhig dood ahaan soona celinaysa tirada shaqallada ku jira xadhigga.
Shaqaaluhu waa "a", "e", "i", "o", "u".

Tusaale:

Find Vowels('hello') // —> 2
raadi shaqallada ('sababta') // —> 0

go'aanka

Waa kan ikhtiyaarka ugu fudud:

const findVowels = str => {
  let count = 0
  const vowels = ['a', 'e', 'i', 'o', 'u']
  for(let char of str.toLowerCase()) {
    if(vowels.includes(char)) {
      count++
    }
  }
  return count
}

Waa muhiim in fiiro gaar ah loo yeesho isticmaalka habka .ku jiro () Waxay diyaar u tahay labada xadhig iyo arrays. Waa in la isticmaalo si loo go'aamiyo in array ka kooban yahay qiimo gaar ah. Habkani waxa uu soo noqdaa run haddii shaxdu ka kooban tahay qiimaha la cayimay, iyo been haddi aanay ahayn.

Waxaa jira xal gaaban oo dhibaatada:

const findVowels = str => {
  const matched = str.match(/[aeiou]/gi)
  return matched ? matches.length : 0
}

Tani waxay isticmaashaa habka .match (), kaas oo kuu ogolaanaya inaad hirgeliso raadinta hufan. Haddii odhaah joogto ah oo hab dood ahaan ah laga helo gudaha xadhigga la cayimay, markaa qiimaha soo laabashadu waa jaantusyo xarfo is-waafaqaya. Hagaag, haddii aysan jirin tabarro, markaas .match() ayaa soo noqda waxba.

fibonacci

Hawl caadi ah oo laga heli karo waraysiyo heerar kala duwan leh. Waxaa xusid mudan in taxanaha Fibonacci uu yahay tirooyin taxane ah oo mid kasta oo soo socda uu yahay wadarta labadii hore. Haddaba, tobanka lambar ee hore waxay u egyihiin sidan: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.

Diyaarinta

Waxaad u baahan tahay inaad qorto hawl soo celinaysa rikoodhka nth si taxane ah, iyadoo n uu yahay lambarka loo gudbiyo dood ahaan shaqada.

fibonacci(3) // —> 2

Hawshan waxa ay ku lug leedahay in lagu dhex maro wareeg ah tirada jeer ee lagu cayimay doodda, soo celinta qiimaha meesha ku habboon. Habkan dhibaatada loo soo bandhigo wuxuu u baahan yahay isticmaalka wareegyada. Haddii aad isticmaashid soo noqnoqoshada bedelkeeda, waxaa laga yaabaa inay ka farxiso wareysiga oo ay ku siiso dhowr dhibcood oo dheeri ah.

go'aanka

const fibonacci = num => {
  // store the Fibonacci sequence you're going
  // to generate inside an array and
  // initialize the array with the first two
  // numbers of the sequence
  const result = [0, 1]
 
  for(let i = 2; i <= num; i++) {
    // push the sum of the two numbers
    // preceding the position of i in the result array
    // at the end of the result array
    const prevNum1 = result[i - 1]
    const prevNum2 = result[i - 2]
    result.push(prevNum1 + prevNum2)
  }
  // return the last value in the result array
  return result[num]
}

Qaabka natiijada, labada lambar ee ugu horreeya waxay ku jiraan taxanaha sababtoo ah gelitaan kasta oo isku xigta waa wadarta labadii lambar ee hore. Bilowga hore ma jiraan laba lambar oo loo qaadan karo si loo helo lambarka soo socda, markaa loop-ku si toos ah uma soo saari karo. Laakiin, sida aan ognahay, labada lambar ee ugu horreeya had iyo jeer waa 0 iyo 1. Sidaa darteed, waxaad u bilaabi kartaa habaynta natiijooyinka gacanta.

Dhanka soo noqoshada, wax walba waa ka fudud yihiin oo aad bay u dhib badan yihiin isku mar:

const fibonacci = num => {
  // if num is either 0 or 1 return num
  if(num < 2) {
    return num
  }
  // recursion here
  return fibonacci(num - 1) + fibonacci(num - 2)
}

Waxaan sii wadnaa wacitaanka fibonacci(), anagoo u gudbinayna nambaro yaryar iyo kuwo yaryar sidii dood ahaan. Waxaan joojineynaa marka dooda la dhaafo ay tahay 0 ama 1.

gunaanad

Waxay u badan tahay, inaad hore ula kulantay mid ka mid ah hawlahan haddii lagugu waraystay shaqada hore ama JavaScript ee horumarinta (gaar ahaan haddii ay tahay heerka hoose). Laakiin haddii aadan la kulmin iyaga, waxaa laga yaabaa inay faa'iido u yeelan karaan mustaqbalka - ugu yaraan horumarinta guud.

Skillbox waxay ku talinaysaa:

Source: www.habr.com

Add a comment