5 galuega fa'atalanoaga masani a JavaScript: au'ili'ili ma fofo

5 galuega fa'atalanoaga masani a JavaScript: au'ili'ili ma fofo

Mai le faaliliu: lomia se tala mo oe Maria Antonietta Perna, o loʻo talanoa e uiga i galuega masani a JavaScript, e masani ona ofoina atu i tagata e fa'atupuina talosaga i taimi o faatalanoaga. O le tusiga o le a aoga, muamua lava, i tagata fai polokalame fou.

O fa'atalanoaga i kamupani fa'atekonolosi ua leva ona fai ma tala a le taulaga. E le o se mea e ofo ai - o le pasia lelei o se faatalanoaga e te maua ai le avanoa e maua ai se galuega lelei. Ae e le faigofie tele lenei mea, talu ai o faafitauli faigata e masani ona manaʻomia ona foia.

E le gata i lea, o le tele o taimi, o le tele o nei galuega e le o fesoʻotaʻi ma le galuega o le a faia e le tagata talosaga, ae e manaʻomia lava ona foia. O nisi taimi e tatau ona e faia i luga o le laupapa, e aunoa ma le siakiina o Google poʻo soʻo se isi punaoa. Ioe, o le tulaga o loʻo faasolosolo malie lava ona suia, ma o nisi kamupani o loʻo lafoaia ia faʻatalatalanoaga, ae o le tele o tagata e ana galuega o loʻo tausisia pea lenei tu masani. O lenei tusiga e tuuto atu i le auiliiliga o galuega masani a JavaScript e masani ona faʻaaogaina e fai ma galuega mo tagata saili galuega.

Matou te faʻamanatu atu ia te oe: mo tagata faitau uma o le "Habr" - o se faʻaitiitiga o 10 rubles pe a lesitala i soʻo se vasega Skillbox e faʻaaoga ai le code promotional "Habr".

Ua fautuaina e Skillbox: Kosi fa'ata'ita'i "Mobile Developer PRO".

O le mea autu o le sauniuni lelei mo lau faʻatalanoaga.

Ioe, ae tatou te leʻi amata vaʻavaʻai i galuega, seʻi o tatou vaʻavaʻai i nisi o faʻamatalaga masani sauniuni faʻatalanoaga.

O le mea autu o le sauniuni muamua. Fa'ata'ita'i po'o le a lou manatua lelei o algorithms ma fa'amaumauga o fa'amaumauga, ma fa'aleleia lou malamalama i vaega e te le masani ai. E tele fa'asalalauga i luga ole laiga e mafai ona fesoasoani ia te oe e sauniuni ai mo fa'atalanoaga. Matou te fautua atu geeksforgeeks, Pramp, Interviewing.io и Faʻailoga.

E aoga le aʻoaʻoina e fai leotele le filifiliga. E fautuaina e taʻu atu i tagata talosaga mea e te faia, ae le naʻo le tusi i luga o le laupapa (pe faʻapipiʻi le code i totonu o le komepiuta, faʻapea foi le leoa). I lenei auala, afai e te faia se mea sese i le code, ae o le fofo e masani lava ona saʻo, e mafai ona e faʻateleina ou avanoa e manuia ai.

E tatau ona e malamalama i le faafitauli ae e te leʻi amata foia. I nisi tulaga, atonu e te malamalama i se galuega papa'u ona alu ai lea i lalo i le ala sese. Atonu e aoga le tuʻuina atu o ni nai fesili faʻamalamalama i le tagata faʻatalanoa.

E mana'omia lou fa'ata'ita'i tusitusi fa'ailoga i le lima, ae le o luga ole PC. E tupu i le taimi o faʻatalanoaga e tuʻuina atu i le tagata talosaga se maka ma se laupapa paepae, lea e leai ni faʻamatalaga poʻo se faʻasologa otometi. A su'e se fofo, e aoga le tusi i lalo o lau code i luga o se fasipepa pe tuusa'o i luga o le laupapa. Afai e te teuina mea uma i lou ulu, atonu e te galo se mea taua.

Galuega fa'ata'ita'i ile JavaScript

O nisi o nei galuega atonu ua e masani ai. Na e faia fa'atalanoaga e tatau ona e fo'ia ai se mea fa'apena, pe fa'ata'ita'i a'o e a'oa'oina le Javascript. Ia, o le taimi nei e toe foia ai, ma faʻatasi ai ma se faʻamatalaga auiliili o le faagasologa.

Palindrome

O le palindrome o se upu, fuaiupu poʻo se faʻasologa o mataitusi e faitau tutusa uma i le itu masani ma i le itu faʻafeagai. Mo se faʻataʻitaʻiga, "Anna" o se palindrome, ae o le "table" ma le "John" e leai.

Faʻavaeina

Tuuina atu se manoa; e tatau ona e tusia se galuega e mafai ai ona e toe faafoi moni pe afai o le manoa o se palindrome, ma sese pe a leai. I lenei tulaga, e tatau ona e amanaia avanoa ma faailoga.

palindrome('ta'avale ta'avale') === moni
palindrome('table') === sese

Sei o tatou iloiloina le galuega

O le manatu autu iinei o le fesuiai o le manoa. Afai o le manoa "tuai" e tutusa lelei ma le mea muamua, ona matou mauaina lea o se palindrome ma o le galuega e tatau ona toe foi moni. Afai e leai, sese.

faaiuga

O le code lea e foia ai le palindrome.

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('')
}

O le la'asaga muamua o le fa'aliliuina lea o mata'itusi i le manoa fa'aofi i mata'itusi laiti. O se faʻamaoniga lea o le polokalame o le a faʻatusatusaina tagata lava ia, ae le o se mataupu poʻo se isi lava mea.

O le laasaga lona lua o le fesuiaʻi o le laina. E le faigata le faia o lenei mea: e te manaʻomia le faʻaliliuina i totonu o se laina e faʻaaoga ai le .split() method (String library). Ona tatou fesuiai lea o le laina e faaaoga ai le .reverse() (Array library). O le la'asaga mulimuli o le fa'aliliuina lea o le laina fa'asolo i se manoa e fa'aaoga ai le .join() (Array library).

O le taimi nei na pau lava le mea e tatau ona e faia o le faʻatusatusaina o le manoa "tuai" ma le manoa muamua, toe faʻafoʻi le iʻuga saʻo pe sese.

FizzBuzz

O se tasi o galuega sili ona lauiloa i faatalanoaga.

Faʻavaeina

E te manaʻomia le tusiaina o se galuega e lolomi ai numera mai le 1 i le n i le faʻamafanafanaga, lea o le n o se integer e ave e le galuega e fai ma parakalafa, ma tulaga nei:

  • fa'atosina fa'asili nai lo fa'atele o le 3;
  • fa'aliga fa'aola nai lo numera e fa'atele i le 5;
  • fizzbuzz gaioiga nai lo numera e fa'atele i le 3 ma le 5.

Faataitaiga:

Fizzbuzz(5)

iʻuga

// 1
// 2
// fizz
// 4
//faiga

Sei o tatou iloiloina le galuega

O le mea autu iinei o se auala e maua ai le tele e faʻaaoga ai le JavaScript. E mafai ona faʻatinoina e faʻaaoga ai le modulus operator poʻo le toega -%, lea e mafai ai ona e faʻaalia le toega pe a vaevaeina numera lua. Afai o le vaega o totoe o le 0, o lona uiga o le numera muamua o se numera tele o le lona lua.

12% 5 // 2 -> 12 e le o se fa'atele o le 5
12% 3 // 0 -> 12 ole faatele ole 3

O lea la, afai e te vaevae le 12 i le 5, e te maua le 2 ma le totoe o le 2. Afai e te vaevae le 12 i le 3, e te maua le 4 ma le totoe o le 0. I le tulaga muamua, o le 12 e le o se numera o le 5, i le lona lua. , 12 o se fa'atele o le 3.

faaiuga

O le fofo sili ona lelei o le code lea:

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)
    }
  }
}

O le galuega e faʻatino siaki talafeagai e faʻaaoga ai faʻamatalaga tuutuuga ma maua ai le iʻuga e manaʻomia e le tagata faʻaoga. I le faʻafitauli, e taua le gauai atu i le faʻatonuga o faʻamatalaga pe afai ... isi: amata i se tulaga faʻalua (&&) ma faʻaiʻu i le mataupu e le mafai ona maua le tele o numera. O se taunuuga, matou te ufiufi uma filifiliga.

Anagram

O le igoa lea o se upu e iai mataitusi uma o se isi upu i le numera lava e tasi, ae i se faasologa ese.

Faʻavaeina

Matou te manaʻomia le tusia o se galuega e siaki pe lua manoa o anagrams, ma e le afaina le mataupu. Na o mataitusi e faitaulia; e le o amanaia avanoa po o faailoga.

anagram('finder', 'Friend') -> moni
anagram('talofa', 'tofa') -> sese

Sei o tatou iloiloina le galuega

O le mea taua e mafaufau i ai iinei e tatau ona e siaki mataitusi taʻitasi i laina faʻaoga e lua ma a latou numera i laina taʻitasi.

su'e -> f: 1 uo -> f: 1
i:1r:1
n: 1 i: 1
d: 1 e: 1
e:1n:1
r: 1 d: 1

Ina ia teuina faʻamatalaga anagram, e tatau ona e filifilia se fausaga e pei o se mea moni JavaScript. O le ki i lenei tulaga o le uiga o le tusi, o le tau o le numera o ana toe fai i le laina o loʻo i ai nei.

E iai isi tulaga:

  • E tatau ona e faʻamautinoa e le o amanaia le tulaga o tusi pe a faʻatusatusa. Na'o le fa'aliliuina o manoa uma e lua i le mata'itusi la'ititi po'o le mataitusi pito i luga.
  • Matou te le aofia uma e le o ni uiga mai le faʻatusatusaga. Sili e galulue faatasi fa'aaliga masani.

faaiuga

// 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
}

Faalogo ile faʻaaogaina Object.keys() i le snippet i luga. O lenei metotia e toe faʻafoʻi ai se faʻasologa o loʻo i ai igoa poʻo ki i le faʻasologa tutusa e foliga mai i totonu o le mea. I lenei tulaga, o le array o le a pei o lenei:

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

O le auala lea tatou te maua ai meatotino o le mea faitino e aunoa ma le faia o se matasele tele. I se faʻafitauli, e mafai ona e faʻaogaina lenei metotia ma le .length meatotino e siaki ai pe tutusa uma le numera o mataitusi o manoa e lua - o se vaega taua lea o anagrams.

Saili mo vaueli

O se galuega faigofie e masani ona sau i faatalanoaga.

Faʻavaeina

E tatau ona e tusia se galuega e ave ai se manoa e fai ma finauga ma toe faafoi le numera o vaueli o loʻo i totonu o le manoa.
O vaueli “a”, “e”, “i”, “o”, “u”.

Faataitaiga:

findVowels('Talofa') // —> 2
findVowels('aisea') // —> 0

faaiuga

O le filifiliga sili ona faigofie:

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
}

E taua le gauai atu i le faʻaogaina o le .includes() method. E avanoa mo manoa ma fa'asologa. E tatau ona fa'aoga e iloa ai pe o iai i se laina se tau fa'apitoa. O lenei metotia e toe foʻi moni pe afai o loʻo i ai i le array le tau faʻamaonia, ma le sese pe a leai.

E i ai se fofo puupuu i le faafitauli:

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

E fa'aogaina ai le .match() metotia, lea e mafai ai ona e fa'atinoina se su'esu'ega lelei. Afai e maua se fa'amatalaga masani e avea o se fa'aupuga fa'atatau i totonu o le manoa fa'apitoa, o le tau fa'afo'i o se fa'asologa o mataitusi tutusa. Ia, afai e leai ni fa'atusa, ona toe fo'i mai lea o le .match() null.

fibonacci

O se galuega masani e mafai ona maua i faatalanoaga i tulaga eseese. E taua le manatuaina o le Fibonacci sequence o se faasologa o numera lea o loʻo mulimuli mai o le aofaʻi o le lua muamua. O lea la, o numera muamua e sefulu e pei o lenei: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34.

Faʻavaeina

E te manaʻomia le tusia o se galuega e toe faʻafoʻi ai le nth faʻamaumauga i se faasologa patino, ma le n o le numera na pasia e fai ma finauga i le galuega.

fibonacci(3) // —> 2

O lenei galuega e aofia ai le savali i totonu o se matasele i le numera o taimi o loʻo faʻamaonia i le finauga, toe faʻafoʻi le tau i le tulaga talafeagai. O lenei auala e faʻaalia ai le faʻafitauli e manaʻomia ai le faʻaogaina o matasele. Afai e te faʻaaogaina le recursion nai lo lena, e mafai ona faʻamalieina le tagata fai faatalanoaga ma avatu ia te oe ni nai manatu faaopoopo.

faaiuga

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]
}

I le fa'asologa o fa'ai'uga, o numera muamua e lua o lo'o iai i le fa'asologa ona o fa'amaumauga ta'itasi i le fa'asologa o le aofa'i lea o numera muamua e lua. I le amataga lava e leai ni numera se lua e mafai ona ave e maua ai le isi numera, o lea e le mafai ai e le matasele ona gaosia otometi. Ae, e pei ona tatou iloa, o numera muamua e lua e masani lava 0 ma le 1. O le mea lea, e mafai ona e amataina ma le lima le faasologa o taunuuga.

Ae mo le toe faʻafoʻi, o mea uma e sili atu ona faigofie ma sili atu ona faigata i le taimi e tasi:

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)
}

Matou te faʻaigoaina le fibonacci(), pasi atu numera laiti ma laiti e fai ma finauga. Matou te taofi pe a 0 pe 1 le finauga ua pasia.

iʻuga

E foliga mai, ua uma ona e feagai ma soʻo se tasi o nei galuega pe afai na faʻatalanoaina oe mo se pito i luma poʻo le JavaScript developer galuega (aemaise lava pe afai o loʻo i le tulaga laʻititi). Ae afai e te leʻi mauaina, atonu e aoga i le lumanaʻi - a itiiti mai mo le atinaʻe lautele.

Ua fautuaina e Skillbox:

puna: www.habr.com

Faaopoopo i ai se faamatalaga