翻蚳è
ãã: ããªãã®ããã«èšäºãå
¬éããŸãã
ãã¯ãããžãŒäŒæ¥ã®é¢æ¥ã¯é·ãé話é¡ã«ãªã£ãŠããã ããã¯é©ãã¹ãããšã§ã¯ãããŸãããé¢æ¥ã«åæ Œãããšãè¯ãä»äºã«å°±ãæ©äŒãåŸãããŸãã ããããå€ãã®å Žåãè€éãªåé¡ã解決ããå¿ èŠããããããããã¯ããã»ã©åçŽã§ã¯ãããŸããã
ããã«ãã»ãšãã©ã®å Žåããããã®ã¿ã¹ã¯ã®ã»ãšãã©ã¯å¿åè
ãå®è¡ããäœæ¥ãšã¯é¢é£ããŠããŸããããããã§ã解決ããå¿
èŠããããŸãã å Žåã«ãã£ãŠã¯ãGoogle ããã®ä»ã®æ
å ±æºã«ç¢ºèªããã«ãããŒãäžã§ãããå®è¡ããªããã°ãªããªãå ŽåããããŸãã ã¯ããç¶æ³ã¯åŸã
ã«å€åããŠãããäžéšã®äŒæ¥ã¯ãã®ãããªé¢æ¥ãæŸæ£ããŠããŸãããå€ãã®éçšäž»ã¯äŸç¶ãšããŠãã®äŒçµ±ãå®ã£ãŠããŸãã ãã®èšäºã§ã¯ãæ±è·è
ã®ã¿ã¹ã¯ãšããŠãã䜿çšãããå
žåç㪠JavaScript ã¿ã¹ã¯ã®åæã«å°å¿µããŸãã
ãªãã€ã³ããŒïŒ ãHabrãã®ãã¹ãŠã®èªè ã察象 - ãHabrãããã¢ãŒã·ã§ã³ ã³ãŒãã䜿çšããŠã¹ãã«ããã¯ã¹ ã³ãŒã¹ã«ç»é²ãããš 10 ã«ãŒãã«ã®å²åŒã
ã¹ãã«ããã¯ã¹ã¯æ¬¡ã®ããšãæšå¥šããŸãã å®è·µã³ãŒã¹
ãã¢ãã€ã«ããããããŒPROã .
éèŠãªã®ã¯ãé¢æ¥ã®æºåããã£ãããšè¡ãããšã§ãã
ã¯ããã¿ã¹ã¯ã®èª¬æãå§ããåã«ãé¢æ¥æºåã®äžè¬çãªãã³ããããã€ãèŠãŠã¿ãŸãããã
äž»ãªããšã¯äºåã®æºåã§ãã ã¢ã«ãŽãªãºã ãšããŒã¿æ§é ãã©ãã ãèŠããŠãããããã¹ãããããŸã詳ãããªãåéã®ç¥èãåäžãããŸãã é¢æ¥ã®æºåã«åœ¹ç«ã€ãªã³ã©ã€ã³ ãã©ãããã©ãŒã ã¯æ°å€ããããŸãã ç§ãã¡ã¯ã¢ããã€ã¹ããŸã
決å®ã声ã«åºããŠèšãããšãåŠã¶äŸ¡å€ããããŸãã åã«æ¿æžããïŒãŸãã¯é»ã£ãŠã³ã³ãã¥ãŒã¿ã«ã³ãŒããå ¥åããïŒã ãã§ãªããèªåãäœãããŠããã®ããå¿åè ã«äŒããããšããå§ãããŸãã ããããããšã§ãã³ãŒãã«ééãããã£ãŠãã解決çã¯éåžžã¯æ£ããå Žåã«ãæåã®å¯èœæ§ãé«ããããšãã§ããŸãã
åé¡ã解決ãå§ããåã«ãåé¡ãç解ããå¿ èŠããããŸãã å Žåã«ãã£ãŠã¯ãã¿ã¹ã¯ãè¡šé¢çã«ç解ããŠãããééã£ãéãé²ãå¯èœæ§ããããŸãã é¢æ¥å®ã«æ確ãªè³ªåãããã€ããã䟡å€ããããããããŸããã
PC ã§ã¯ãªããæã§ã³ãŒããæžãç·Žç¿ãããå¿ èŠããããŸãã é¢æ¥äžã«å¿åè ã«ããŒã«ãŒãšãã¯ã€ãããŒããäžããããŸããããã³ããèªåãã©ãŒãããã¯ãããŸããã 解決çãæ¢ããšãã¯ãã³ãŒããçŽã«æžãããããŒãã«çŽæ¥æžãçãã䟡å€ããããŸãã ãã¹ãŠãé ã®äžã«çããŠãããšãéèŠãªããšãå¿ããŠããŸãå¯èœæ§ããããŸãã
JavaScript ã®ãã³ãã¬ãŒã ã¿ã¹ã¯
ãããã®ã¿ã¹ã¯ã®äžã«ã¯ããããããã§ã«ããç¥ãããŠãããã®ããããŸãã é¢æ¥ã§äŒŒããããªåé¡ã解決ããªããã°ãªããªãã£ãããŸã㯠JavaScript ãåŠç¿ããªããé¢æ¥ã®ç·Žç¿ãããããšãããã§ãããã ããŠãä»åºŠã¯ããã»ã¹ã詳ãã説æããªãããããäžåºŠåé¡ã解決ããŠã¿ãŸãããã
åæ
åæãšã¯ãéåžžã®æ¹åã§ããéã®æ¹åã§ããŸã£ããåãããã«èªãŸããåèªãæããŸãã¯äžé£ã®æåã§ãã ããšãã°ããAnnaãã¯åæã§ããããtableããšãJohnãã¯åæã§ã¯ãããŸããã
ã¹ããŒãžã³ã°
æååãæå®ãããšã æååãåæã®å Žå㯠true ãè¿ããããã§ãªãå Žå㯠false ãè¿ãé¢æ°ãäœæããå¿ èŠããããŸãã ãã®å Žåãã¹ããŒã¹ãšå¥èªç¹ãèæ ®ããå¿ èŠããããŸãã
åæ('ã¬ãŒã¹ã«ãŒ') === true
åæ('ããŒãã«') === false
ã¿ã¹ã¯ãåæããŸããã
ããã§ã®äž»ãªã¢ã€ãã¢ã¯ãæååãéã«ããããšã§ãã ãéãæååãå ã®æååãšå®å šã«åäžã§ããå Žåãåæãåä¿¡ããããšã«ãªããé¢æ°ã¯ true ãè¿ãã¯ãã§ãã ããã§ãªãå Žåã¯åœã§ãã
ãœãªã¥ãŒã·ã§ã³
ãããåæã解ãã³ãŒãã§ãã
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('')
}
æåã®ã¹ãããã¯ãå ¥åæååå ã®æåãå°æåã«å€æããããšã§ãã ããã¯ãããã°ã©ã ã倧æåå°æåãªã©ãæ¯èŒããã®ã§ã¯ãªããæåèªäœãæ¯èŒããããšãä¿èšŒããŸãã
XNUMX çªç®ã®ã¹ãããã¯ãã©ã€ã³ãå転ããããšã§ãã ããã¯é£ããããšã§ã¯ãããŸããã.split() ã¡ãœãã (String ã©ã€ãã©ãª) ã䜿çšããŠé åã«å€æããå¿ èŠããããŸãã 次ã«ã.reverse() (é åã©ã€ãã©ãª) ã䜿çšããŠé åãå転ããŸãã æåŸã®ã¹ãããã¯ã.join() (é åã©ã€ãã©ãª) ã䜿çšããŠéé åãæååã«å€æããããšã§ãã
ããšã¯ããéãæååãå ã®æååãšæ¯èŒããŠãçµæã® true ãŸã㯠false ãè¿ãã ãã§ãã
ãã£ãºããº
é¢æ¥ã§æã人æ°ã®ããã¿ã¹ã¯ã® XNUMX ã€ã
ã¹ããŒãžã³ã°
次ã®æ¡ä»¶ã§ã1 ãã n ãŸã§ã®æ°å€ãã³ã³ãœãŒã«ã«åºåããé¢æ°ãäœæããå¿ èŠããããŸããn ã¯é¢æ°ããã©ã¡ãŒã¿ãŒãšããŠåãåãæŽæ°ã§ãã
- 3 ã®åæ°ã®ä»£ããã« fizz ãåºåããŸãã
- 5 ã®åæ°ã®æ°å€ã®ä»£ããã«ããºãåºåããŸãã
- fizzbuzz ã¯ã3 ãš 5 ã®åæ°ã®æ°å€ã®ä»£ããã«åºåããŸãã
äŸ
ãã£ãºããº(5)
çµæ
/ / 1
/ / 2
// ã·ã¥ã¯ã·ã¥ã¯
/ / 4
//ããº
ã¿ã¹ã¯ãåæããŸããã
ããã§éèŠãªã®ã¯ãJavaScript ã䜿çšããŠåæ°ãèŠã€ããæ¹æ³ã§ãã ããã¯ãå°äœæŒç®åãŸãã¯å°äœ - % ã䜿çšããŠå®è£ ã§ããŸããããã«ããã0 ã€ã®æ°å€ãé€ç®ãããšãã«å°äœã衚瀺ã§ããŸãã äœãã XNUMX ã®å Žåãæåã®æ°å€ã XNUMX çªç®ã®æ°å€ã®åæ°ã§ããããšãæå³ããŸãã
12% 5 // 2 -> 12 㯠5 ã®åæ°ã§ã¯ãããŸãã
12% 3 // 0 -> 12 㯠3 ã®åæ°ã§ã
ãããã£ãŠã12 ã 5 ã§å²ããš 2 ã«ãªããäœã㯠2 ã«ãªããŸãã12 ã 3 ã§å²ããšã4 ã«ãªããäœã㯠0 ã«ãªããŸããæåã®ã±ãŒã¹ã§ã¯ã12 㯠5 ã®åæ°ã§ã¯ãããŸãããã12 çªç®ã®ã±ãŒã¹ã§ã¯ã3 㯠XNUMX ã®åæ°ã§ã¯ãããŸããã , XNUMXã¯XNUMXã®åæ°ã§ãã
ãœãªã¥ãŒã·ã§ã³
æé©ãªè§£æ±ºçã¯æ¬¡ã®ã³ãŒãã«ãªããŸãã
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...else ã¹ããŒãã¡ã³ãã®é åºã«æ³šæããå¿ èŠããããŸããäºéæ¡ä»¶ (&&) ã§å§ãŸããè€æ°ã®æ°å€ãèŠã€ãããªãã£ãå Žåã§çµãããŸãã ãã®çµæããã¹ãŠã®ãªãã·ã§ã³ãã«ããŒããŸãã
ã¢ãã°ã©ã
ããã¯ãå¥ã®åèªã®ãã¹ãŠã®æåãåãçªå·ã§ãç°ãªãé åºã§å«ãŸããŠããåèªã®ååã§ãã
ã¹ããŒãžã³ã°
XNUMX ã€ã®æååãã¢ãã°ã©ã ã§ãããã©ããããã§ãã¯ããé¢æ°ãäœæããå¿ èŠããããŸãã倧æåãšå°æåã¯é¢ä¿ãããŸããã æåã®ã¿ãã«ãŠã³ããããŸãã ã¹ããŒã¹ãå¥èªç¹ã¯èæ ®ãããŸããã
ã¢ãã°ã©ã ('ãã¡ã€ã³ããŒ', 'åé') â> true
ã¢ãã°ã©ã ('ããã«ã¡ã¯', 'ããããªã') â> false
ã¿ã¹ã¯ãåæããŸããã
ããã§èæ ®ãã¹ãéèŠãªããšã¯ãXNUMX ã€ã®å ¥åè¡ã®åæåãšåè¡ã®ãããã®çªå·ã確èªããå¿ èŠããããšããããšã§ãã
ãã¡ã€ã³ã㌠â> f: 1 ãã¬ã³ã â> f: 1
i:1 r:1
n:1 i:1
d:1 e:1
e:1 n:1
r:1 d:1
ã¢ãã°ã©ã ããŒã¿ãä¿åããã«ã¯ãJavaScript ãªããžã§ã¯ã ãªãã©ã«ãªã©ã®æ§é ãéžæããå¿ èŠããããŸãã ãã®å Žåã®ããŒã¯æåã®æåã§ãããå€ã¯çŸåšã®è¡å ã§ã®ãã®æåã®ç¹°ãè¿ãåæ°ã§ãã
ä»ã«ã次ã®ãããªæ¡ä»¶ããããŸãã
- æ¯èŒãããšãã«å€§æåãšå°æåãèæ ®ãããŠããªãããšã確èªããå¿ èŠããããŸãã äž¡æ¹ã®æååãå°æåãŸãã¯å€§æåã«å€æããã ãã§ãã
- æå以å€ã®æåã¯ãã¹ãŠæ¯èŒããé€å€ããŸãã äžç·ã«åãã®ã«æé©
æ£èŠè¡šçŸ .
ãœãªã¥ãŒã·ã§ã³
// 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']
ãã®ããã«ããŠãäžæ¬ã«ãŒããå®è¡ããã«ãªããžã§ã¯ãã®ããããã£ãååŸããŸãã åé¡ãããå Žåã¯ããã®ã¡ãœããã .length ããããã£ãšãšãã«äœ¿çšããŠãäž¡æ¹ã®æååã®æåæ°ãåããã©ããã確èªã§ããŸããããã¯ã¢ãã°ã©ã ã®éèŠãªæ©èœã§ãã
æ¯é³ãæ€çŽ¢ãã
é¢æ¥ã§ãããåºãŠããããšãŠãåçŽãªä»äºã§ãã
ã¹ããŒãžã³ã°
æååãåŒæ°ãšããŠåãåãããã®æååã«å«ãŸããæ¯é³ã®æ°ãè¿ãé¢æ°ãäœæããå¿
èŠããããŸãã
æ¯é³ã¯ãaãããeãããiãããoãããuãã§ãã
äŸïŒ
findVowels('hello') // â> 2
findVowels('why') // â> 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() ã¡ãœããã®äœ¿çšã«æ³šæããããšãéèŠã§ãã æååãšé åã®äž¡æ¹ã§äœ¿çšã§ããŸãã ããã¯ãé åã«ç¹å®ã®å€ãå«ãŸããŠãããã©ãããå€æããããã«äœ¿çšããå¿ èŠããããŸãã ãã®ã¡ãœããã¯ãé åã«æå®ãããå€ãå«ãŸããŠããå Žå㯠true ãè¿ããå«ãŸããŠããªãå Žå㯠false ãè¿ããŸãã
ãã®åé¡ã«ã¯ãã£ãšçã解決çããããŸãã
const findVowels = str => {
const matched = str.match(/[aeiou]/gi)
return matched ? matches.length : 0
}
ãã㯠.match() ã¡ãœããã䜿çšããŠãããå¹ççãªæ€çŽ¢ãå®è£ ã§ããŸãã ã¡ãœããåŒæ°ãšããŠã®æ£èŠè¡šçŸãæå®ãããæååå ã§èŠã€ãã£ãå Žåãæ»ãå€ã¯äžèŽããæåã®é åã§ãã äžèŽãããã®ããªãå Žåã.match() 㯠null ãè¿ããŸãã
ãã£ãããã
ããŸããŸãªã¬ãã«ã®é¢æ¥ã§èŠãããå€å žçãªã¿ã¹ã¯ã§ãã ãã£ããããæ°åã¯äžé£ã®æ°å€ã§ãããåŸç¶ã®åæ°å€ã¯åã® 0 ã€ã®æ°å€ã®åèšã§ããããšãæãåºããŠãã ããã ãããã£ãŠãæåã® 1 åã®æ°åã¯æ¬¡ã®ããã«ãªããŸã: 1ã2ã3ã5ã8ã13ã21ã34ãXNUMXãXNUMXã
ã¹ããŒãžã³ã°
ç¹å®ã®é åºã§ n çªç®ã®ã¬ã³ãŒããè¿ãé¢æ°ãäœæããå¿ èŠããããŸãã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 ã€ã®æ°å€ãå«ãŸããŸãã æåã¯ã次ã®æ°å€ãååŸããããã«ååŸã§ãã XNUMX ã€ã®æ°å€ã¯ååšããªããããã«ãŒãã¯ããããèªåçã«çæã§ããŸããã ãã ãããåç¥ã®ãšãããæåã® XNUMX ã€ã®æ°å€ã¯åžžã« XNUMX ãš XNUMX ã§ãããããã£ãŠãçµæã®é åãæåã§åæåã§ããŸãã
ååž°ã«é¢ããŠã¯ããã¹ãŠãããåçŽã§ãããšåæã«ããè€éã«ãªããŸãã
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)
}
fibonacci() ãåŒã³åºãç¶ããåŒæ°ãšããŠãŸããŸãå°ããæ°å€ãæž¡ããŸãã æž¡ãããåŒæ°ã 0 ãŸã㯠1 ã®å Žåã«åæ¢ããŸãã
åºå
ããã³ããšã³ããŸã㯠JavaScript éçºè ã®ä»äºã®é¢æ¥ãåããããšãããå Žå (ç¹ã«ããããžã¥ã㢠ã¬ãã«ã®å Žå)ãããããããããã®ã¿ã¹ã¯ã®ããããã«ãã§ã«ééããããšãããã§ãããã ãããããŸã ãããã«åºäŒã£ãŠããªãå Žåã§ããå°æ¥çã«ã¯ãå°ãªããšãäžè¬çãªéçºã«ã¯åœ¹ç«ã€ãããããŸããã
ã¹ãã«ããã¯ã¹ã¯æ¬¡ã®ããšãæšå¥šããŸãã
- ãªã³ã©ã€ã³ã³ãŒã¹ã®ç³ã蟌ã¿
ãPythonããŒã¿ã¢ããªã¹ãã .- ãªã³ã©ã€ã³ã³ãŒã¹
ãè·æ¥ããã³ããšã³ãéçºè ã .- å®è·µäžå¹Žã³ãŒã¹
ã0ããPROãŸã§ã®PHPéçºè ã .
åºæïŒ habr.com