ášá áµá°ááááá¡- áá¥ááµá á ááµ áœáá á á³á°á
á áŽáááá á©á£áá«áᜠááµá¥ ášá°á°ášá áááá ááᜠášášá°áá áááááªá« ááá ááá°ááᢠáá ášáá«áµááá á áá°áá - ášáá áá áá á á°á³á« ááá³ áá ááá á¥á© á¥á« áááááµ á«áµáœáá. áá áá á á£á ááá á áá°áá, áááá«á±á á¥ááá áá ááµá¥áµá¥ áœáá®áœá ááá³áµ á áµááá áá.
ášáá
á á áá á á¥áááá áá á¥ááá
á°áá£á«áµ á ááá«á¹ ášáá«ášáááá á¥á« áá ášá°ááá á áá°áá, ááá áá á ááá ááá³áµ á áá£ážá. á áá³ááµ áá áš Google ááá ášáá ááá áá á³á«ášááá¡ á áŠáá± áá ááµášá á áá¥ááµ. á áá, ááá³á ââááµ á ááµ á¥ášá°ááá áá, á¥á á á áá³ááµ á©á£áá«áᜠááµá¥ á¥áá°áá
á áááµ áááá áááœá á ááá áá, ááá áá á¥á áá£áªáᜠá ááá áá
áá áá á á¥á¥áá áááá. áá
áœáá á¥ááá áá áá ááá«áŸáœ á¥áá° á°áá£á ášáá«áááá ášá°ááá± ášáá« áµááªááµ á°áá£á«áµá ááá°áá°á á«á°á®áš ááá¢
á¥á á¥ááµá³ááµáá³áá- áááá áš "áá¥á" á áá£á¢áᜠ- áš "Habr" ášááµá°áááá« á®áµá á áá áá á ááááá áš Skillbox á®ááµ ááµá¥ á²áááá¡ áš 10 á©á¥ááµ á ááœ.
Skillbox áááá«áá¡ á°áá£á«á á®ááµ
"áá£áá ááᢠPRO" .
ááá ááá ááá áá áá á á á¥ááá áááááµ áá.
á áᣠá°áá£á«á¶á¹á ááášáµ ášáááá«áœá á ááµá£ ááá áá áá ááááááµ á áá³ááµ á á ááá ááá®áœá á¥áááášáµá¢
ááá ááá á áµááµáá áááááµ áá. áµáá° ááá®áœá á¥á ášááᥠá áááá®áœá áá á«á
á á¥áá°áá«áµá³áá± á«ášááá¡ á¥á á¥ááµá á á°áᥠá áá«ááážá á á«á£á¢áᜠá¥áááµáá á«á»áœáᢠááá áá áá
ááááááµ ášáá«ááááµ á¥á ášááµáá áá ááµášá®áœ á áᢠá¥áááá«ááá¢
áá³ááá á®á á¥á áááá ááá á áá áá. áá á¥ášá°á© á¥áá°áá áá ááá«áŸáœ áááá á°áᢠááᣠá¥á á áŠáá± áá áá»á á¥á» á³ááá (ááá á á®ááá©á°á áá á®áµ áá°áᡠᣠá¥áá²áá á áá¥á³)ᢠáµááá , á á®á± ááµá¥ áµá á°áµ ášá°á©, ááá áá áááµáá á á á ááá áµááá ášáá, ášáµá¬áµ á¥áµááœá ášá ááµášá ááœáá.
áááµáá ášáááá© á ááµ áœáá©á áášá³áµ á«áµáááá. á á áá³ááµ ááá³áᜠáµá«áá á ááá áµ á°ášáµá°á áá° á°á³á³á° ááááµ áááµ ááœááᢠáá á«áá á¥ááµ ááᜠá¥á«áááœá áá ášá á áá ááá ááœááá¢
á áá² áá á³ááá á á¥á áá»á áááááµ á«áµááááá³á. á áá-áá ááᜠáá á ááá«á¹ ááá ááá®áœ ááá á áá¶áá²á á áážá¶áœ ášááá áµ ááááµ ááµášáá« á¥á á°áá³ á²á°á£ážá áášá°á³áᢠáááµá á ááááá áµ áá, á®áµáá á áášááµ áá ááá á áµááá á áŠáá± áá ááá. áááá ááá á ááá áá± ááµá¥ á«áµááá¡, á ááµ á áµááá ááá ááá³áµ ááœáá.
á áá«áµááªááµ ááµá¥ ášá á¥ááµ á°áá£á«áµ
ášá¥ááá á°áá£á«áµ ááµá¥ á áá³áá¶á¹á á áµááµáá á«áá ááááᢠá°áá³á³á ášáá ááá ááá³áµ á«áá¥ááµ áááá áááœá ááµá°áá ááá áá« áµááªááµ á¥ášá°áá© á á¥áá± áá á°áááá±á¢ á°á á, á áá á¥áá±á á¥áá°áá áááá³áµ ááá á áá áá, á¥á áµá áá°á± áááá áá¥á«áªá«.
ááááµášá
ááááµášá áááµ á á°ááá°á á á á£á« á¥á á á°áá«á á á á£á« ášááá ᥠááᣠáášáá° ááá ááá ášááááᜠá á°á á°ášá°á ááᢠááá³á "á á" ááááµá®á áá, áá "á ášáŽá" á¥á "á®áááµ" á áá°áá.
ááášá
á ááµ áá¥ášááá á°á°á¥á·á; áá¥ášáááá palindrome ášáá á¥áááµá á¥ááµáµáááµ ášááá áµáá á á°áá£á ááá á áá¥á ᣠá«ááá á°áá áá°áµá¢ á áá ááá³, ááá°á¶áœ á¥á áµááá°-áá¥á¥ áááá¶áœ áááµ ááµá¥ ááá£áµ á áá£ážá.
palindrome ('racecar') === á¥áááµ
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('')
}
ášááááªá«á á¥ááá ášáá€áµ áá¥ášááá áááááœá áá° áµáᜠáá°á áááᥠááᢠáá ááááá¥á© á áµááá ááž-á£á áªá«á±á á¥á«á³ážá áááááá ááµáµá áá, á¥á áá«á£ ááá áá ááá á áá°áá.
ááá°áá á¥ááá ášááµáá© á°ááá¢áŠáœ ááᢠáá á áááµášá ááá ááá¡ .Split() method (ášáá¥ášááá á€á°-ááœáááµ) á áá áá áá° áµááµá ááášá á«áµááááá³áᢠášáá«á áµááµáá .reverse() (Array Library) á áá áá á¥áááá á£ááᢠášáášášá»á á¥ááá .join() (ášá á°á«á°á á€á°-ááœáááµá) á áá áá ášá°ááá¢áŠá¹á áµááµá áá° áá¥ášááá ááášá ááá¢
á áá ášáá«áµáááá áá "ášá°ááá¢áŠáœ" áá¥ášáááá ášááááªá«á áá ááá³á°á áá, áá€á±á á¥áááµ ááá áá°áµ á ááááµ.
fizzbuzz
á á£á á³áá ášáá ášáµá« áá áá ááᜠá áá±á¢
ááášá
áš 1 á¥áµáš n áá¥á®áœá áá° á®áá¶á ááá³ášáµ á°áá£á áááá á«áµáááá ᣠn á°áá£á© á¥áá° áááªá« ášáááµá°á á¢áá²áá á²áá ášáášá°ááµ ááá³áᜠááá¢
- áš 3 á¥áá¶áœ ááá ášáá€áµ fizz;
- áš 5 á¥áá¶áœ ááá áš buzz áá ááµ;
- ášááá±á 3 á¥á 5 á¥áá¶áœ ááá fizzbuzz áá ááµá¢
ááá³á:
ááá¡á(5)
áá€áµ
// 1 á¥.á€.á .
// 2 á¥.á€.á .
// fizz
// 4 á¥.á€.á .
// buzz
á°áá£á©á áá°áá°á
á¥áá á«áá ááá ááá áá« áµááªááµá á áá áá á¥áá¶áœá áááááµ ášáá»áá áµ ááááµ áá. áááá áŠáá¬á°á ááá ááªáá -% á áá áá áá°áá á ááœáá, áá á áááµ áá¥á®áœá á²ášááá ááªáá ááá³ášáµ á«áµáœááá³á. ááªá 0 ášáá, ášááááªá«á áá¥á ášááá°áá á¥ááµ áá áááµ áá.
12% 5 // 2 -> 12 áš 5 á¥ááµ á áá°ááá¢
12% 3 // 0 -> 12 áš 3 á¥ááµ ááá¢
áµááá 12 á 5 á¥áášáá 2 ášááªá 2 áá á¥áááááá¢12 á 3 á¥áášáá 4 ášááªá 0 áá á¥áááááá¢á ááááªá«á 12 áš 5 á¥ááµ á áá°ááᣠá ááá°áᣠ12 áš3 á¥ááµ ááá¢
áá³á
á á£á á¥á©á áááµá ášáášá°áá á®áµ áááá.
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)
}
}
}
á°áá£á© ááá³á áááá«ááœá á áá áá á áµááááá áŒá®áœ á«ášáááá á¥á á á°á ááá ášáááááá áá€áµ á«áµááá. á á°áá£á© ááµá¥, áš if ... ááᜠáááá«áᜠá á°á á°ášá°á áµá©ášáµ ááµá áµ á°áᢠáá: á áµáᥠááá³ (&&) á áááá á¥á á¥á áá¥á®áœ ááá á áááœáá áµ áá á áá³á© á«á áá. á áá€á±á, áááá á áá«á®áœ á¥áážáááá.
á ááá«á
áá ášáá áá áá°ááµá á áá á á°áá³á³á áá¥á ášá«á áá áµá áá, áá á á°ááš á á°á á°ášá°á.
ááášá
áááµ áá¥ášááááᜠá ááá«áᜠáááážáá ášáááµáœ á°áá£á ááá á áá¥áᣠá¥á ášáá°áᜠáá³á ááá á áá°ááᢠááááᜠá¥á» ááá á«á; ááá°á¶áœ ááá áµááá°-áá¥á¥ áááá¶áœ áááµ ááµá¥ á ááá¡á.
á ááá«á ('ááá'ᣠ'áá°á') --> á¥áááµ
á ááá«á ('áá'ᣠ'á£á') --> áážáµ
á°áá£á©á áá°áá°á
á¥áá á¥á«áá³áá±á áá°á á áááµ ášáá¥ááµ ááµáá®áœ á¥á á á¥á«áá³áá± ááµáá áá¥á«ážáá áášááᥠá áµááá áááá áááµ ááµá¥ ááµáá£áµ á áµááá áá.
ááá -> ášá¡ 1 áá°á -> ášá¡ 1
á¥áá¡ 1áá¡ 1
ná¡ 1 á¥áá¡ 1
áá¡ 1 á á¡ 1
á á¡ 1 ná¡ 1
á áá¡1 á°á¡1
ášá ááá«á áášáá ááášáážáµ á¥áá° áá«áµááªááµ ááá á á¥á¬á á«á ááá á ááášá¥ á áá¥ááµá¢ á áá áá³á áá ááá ášá°á¥á³á€á á£á ᪠áá, á¥áŽá± á áá á£áá ááµáá ááµá¥ á«áá áµáááᜠá¥ááµ áá.
ááᜠááá³ááœá á áá¡-
- á ááááá áá ášá°á¥á³á€áᜠáá³á áááµ ááµá¥ ášáááᣠáááá áášááᥠá áá¥ááµ. ááá±áá áá¥ášááááᜠáá° áµáᜠááá áµáá áá áááá¡á¢
- áááá ááž-á£á
áªá«áµ ášáá
á
á á¥ááá£áá. áá áááµá«áµ ááá¥
áá°á á áááá«áᜠ.
áá³á
// 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
}
áá á ááá áµá©ášáµ ááµá¡
['f', 'i', 'n', 'd', 'e','r']
á áá ááááµ áµáá áá°áµ á³á«á°áá ášááá©á á£á áªá«áµ á¥ááááá. á á ááµ á°áá£á ááµá¥ ᣠáá áá áᎠᚠ.ááááµ áá¥ášáµ áá áá áá ááœáá - ááá±á áá¥ášááááᜠá°áá³á³á ášááááᜠá¥ááµ á¥áá³áážá ááášááᥠ- áá ášá ááá«áᜠá áµááá á£á ᪠ááá¢
á áá£á¢ ááá
á áá áá áá ááµá¥ á¥á áá ášááᣠááá ááá á°áá£áá¢
ááášá
áá¥ášáááá á¥áá° áááá ášáááµáµ á¥á áá¥ášáááá ášá«ááá ášá áá£á¢áᜠá¥ááµ ášááááµ á°áá£á ááá á«áµááááá³áá¢
á áá£á¢áá¹ "a", "e", "i", "o", "u" áážá.
ááá³á:
FindVowels('áá') // --> 2
á áá£á¢ááœá á áá ('ááá') // --> 0
áá³á
á á£á ááá á áá«á áážáá:
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
}
áš .includes () ááŽá á á ááá áµá©ášáµ ááµá áµ á áµááá áá. áááá±á áá¥ášááááᜠá¥á áµááµá®áœ ááááᢠá ááµ áµááµá ášá°áá°á á¥áŽáµ á¥áá³áá áááá á¥á á áá ááá á áá áµá¢ á á°á«á°á© ášá°ááážáá á¥áŽáµ ášá«á áá áᎠá¥áááµ áá ášáááá°á á¥á á«ááá áážáµ ááá¢
á¥áá²áá ááœáá© á áá áááµá á á-
const findVowels = str => {
const matched = str.match(/[aeiou]/gi)
return matched ? matches.length : 0
}
áš.áá«áá» () áᎠá¥áá á¥á á áá áááá, áá á ááá£á áááá á°áá£á«á áááµášá á«áµáœáá. ášáá°á á á áááᜠá¥áá° áµááµ áá᪠á¥áŽáµ á á°á áá°á áá¥ášááá ááµá¥ ášá°ááᣠášáááá» ááá ášááááµ ášááááᜠáµááµá ááᢠá°á áᣠá°áááᜠášááᣠ.á°ááá () á£á¶ áááá³áá¢
áááŠááº
á á°áá«á© á°ášááᜠáá-áá ááᜠáá ááá ášááœá ášá³áá á°áá£áᢠᚠFibonacci á á°á á°ášá°á á°ášá³á³á áá¥á®áœ áááá ááµá³ááµ á áá áá, á¥á«áá³áá± á°ášá³á ášáá°ááµ áááµ áµáá áá. áµááá ášááááªá«áá¹ á áµá áá¥á®áœ áá á áááµááá¡- 0ᣠ1ᣠ1ᣠ2ᣠ3, 5, 8, 13, 21, 34.
ááášá
áš nth áááá¥á á á°áá°á á á°á á°ášá°á ášááááµ á°áá£á ááá á«áµááááá³á ᣠá¥á n áá°áá£á© á¥áá° áááá ášá°ááá áá¥á ááá¢
ááŠáẠ(3) // --> 2
áá á°áá£á á áááá© ááµá¥ á á°ááá¹áµ ááá«áµ á¥ááµ áááá á«á«áµá³á, á¥áŽá±á á á°áá¢á áŠá³ áááá°áá. áœáá©á áááµá°á«ášá á áá ááááµ áá áá ááá áá áááᢠá ááµá© á°á°áááááµ ášá°á ááᣠá á«áá ááá°á á¥á á¥ááµ á°ášá᪠áá¥áŠáœá áá°á¥ ááœááá¢
áá³á
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]
}
á áá€á± áµááµá ááµá¥ ášááááªá«áá¹ áááµ áá¥á®áœ á á ááµ ášáµá ááµá¥ áááá áááá«á±á á á á°á á°ášá°á ááµá¥ á«áá á¥á«áá³áá± áá€áµ ášáá°ááµ áááµ áá¥á®áœ áµááá á«á«áµá³á. ááááªá« áá áá£á©á áá¥á áááááµ ááá°á± ášááœá áááµ áá¥á®áœ ášááᣠáµááá áá á á«áµ á°á áá«ááá«ážá á ááœááᢠáá á¥áá°ááááá, ášááááªá«áá¹ áááµ áá¥á®áœ áááá 0 á¥á 1 áážá. áµááá , ášáá€á±á áµááµá á¥á«áµá ááµááá ááœáá.
áµá á°á°ááááᵠᣠááá ááá ááá á¥á á á°áá³á³á áá ášá°áá³á°á áá-
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)
}
á¥á ááŠáẠ() áá°ááá á¥ááá¥ááá ᣠá áµáᜠá¥á á áµáᜠáá¥á®áœ á¥áá° áááá á¥ááµá°áááááᢠá«ááá áááá 0 ááá 1 á²áá á¥áááááá¢
áá°áá°áá«
áááá£áµ ášááµ áááµ ááá ááá« áµááªááµ ááᢠáµá« (á á°ááá ááášá á°ášá ášáá) áá áá áá á¥ášá°á¡ ášáá ášá¥ááá á°áá£á«áµ ááµá¥ á áá³ážááá á áá¥ááááµ ááááᢠáá á«ááá áážá ᣠááá°áá± á áá ááá ááœáá - á¢á«ááµ áá á ááá áááµá¢
Skillbox áááá«áá¡
- á ááµáá áá á®ááµ á°á°áá¥á¯á
"Python ááᥠá°áá³á" .- ášááµáá áá á®ááµ
"ášáá« ááá£á ááá¢" .- á°áá£á«á áááµ á®ááµ
"PHP ááᢠᚠ0 áá° PRO" .
ááá: hab.com