├── Easy Difficulty ├── abcheck.js ├── alphabetsoup.js ├── arithGeo.js ├── arrayAdditionI.js ├── arrayAdditionI2.js ├── arrayAdditionI3.js ├── checknums.js ├── countingMinutesI.js ├── dashInsert.js ├── divisionStringified.js ├── exoh.js ├── firstfactorial.js ├── firstreverse.com.js ├── letterCountI.js ├── lettercapitalize.js ├── lettercapitalize2.js ├── lettercapitalize3.js ├── letterchanges.js ├── longestWord2.js ├── longestword.js ├── meanMode.js ├── numberAddition.js ├── palindrome.js ├── powersOfTwo.js ├── secondGreatLow.js ├── simpleadding.js ├── simplesymbols.js ├── swapCase.js ├── thirdGreatest.js ├── timeconvert.js ├── vowelcount.js ├── wordcount.js └── wordcount1.js ├── Hard Difficulty ├── knightJumps.js └── noughtsDeterminer.js ├── Medium Difficulty ├── arithGeoII.js ├── arithGeoII2.js ├── arrayAddition.js ├── arrayAddition2.js ├── binaryConverter.js ├── binaryConverter2.js ├── bracketMatcher.js ├── bracketMatcher2.js ├── caesarCipher.js ├── caesarCipher2.js ├── consecutive.js ├── consecutive2.js ├── consecutive3.js ├── countingMinutes.js ├── dashInsertII.js ├── division.js ├── division2.js ├── fibonacciChecker.js ├── formattedDivision.js ├── letterCount.js ├── letterCount2.js ├── multipleBrackets.js ├── multipleBrackets2.js ├── numberSearch.js ├── palindromeTwo.js ├── palindromeTwo2.js ├── permutationStep.js ├── permutationStep2.js ├── primeChecker.js ├── primeMover.js ├── primeMover2.js ├── primeTime.js ├── primechecker2.js ├── runLength.js ├── simpleMode.js ├── simpleMode2.js ├── simpleMode3.js ├── stringReduction.js ├── stringReduction2.js ├── stringScramble.js ├── stringScramble2.js ├── swapII.js ├── swapII2.js ├── threeFiveMultiples.js ├── threeFiveMultiples2.js └── tripleDouble.js ├── Problems broken down into steps └── coderbyte.js ├── README.md ├── Ruby Solutions └── Easy │ ├── AB_check.rb │ └── alphabet_soup.rb └── convertKPHMPH.js /Easy Difficulty/abcheck.js: -------------------------------------------------------------------------------- 1 | // Coderbyte AB Check solution 2 | // (C) 2014 splashinn 3 | 4 | function abcheck(str) { 5 | var results = []; 6 | for (var i = 0; i < str.length; i += 1) { 7 | if (str[i] === "a") { 8 | str[i + 4] === "b" ? results.push('true'):results.push('false'); 9 | } 10 | } 11 | return results.toString().match(/t/) ? true : false; 12 | } 13 | -------------------------------------------------------------------------------- /Easy Difficulty/alphabetsoup.js: -------------------------------------------------------------------------------- 1 | // Coderbyte Alphabet Soup solution 2 | // (C) 2014 splashinn 3 | 4 | function AlphabetSoup(str) { 5 | var strSplit = str.split(""); 6 | var lettersSorted = strSplit.sort(function(a, b) { 7 | return a < b ? - 1 : 1; 8 | }); 9 | return lettersSorted.join(""); 10 | } 11 | -------------------------------------------------------------------------------- /Easy Difficulty/arithGeo.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution Arith Geo 2 | // (C) 2014 splashinn 3 | 4 | function ArithGeo(arr) { 5 | if (arr.length < 3) { 6 | return true; 7 | } 8 | var r = arr[1] - arr[0]; 9 | for (var i = 2; i < arr.length; i++) { 10 | if (arr[i] - arr[i - 1] !== r) { 11 | break; 12 | } 13 | } 14 | if (i === arr.length) { 15 | return 'Arithmetic'; 16 | } 17 | var q = arr[1] / arr[0]; 18 | for (var i = 2; i < arr.length; i++) { 19 | if (arr[i] / arr[i - 1] !== q) { 20 | break; 21 | } 22 | } 23 | if (i === arr.length) { 24 | return 'Geometric'; 25 | } 26 | return -1; 27 | } 28 | -------------------------------------------------------------------------------- /Easy Difficulty/arrayAdditionI.js: -------------------------------------------------------------------------------- 1 | // Coderybyte solution for Array Addition 1 2 | // (C) 2014 splashinn 3 | 4 | function ArrayAdditionI(arr) { 5 | if (arr.length <= 1) { 6 | return false; 7 | } else { 8 | var max = Math.max.apply(null, arr), 9 | remaining = arr.filter(function (val) { 10 | return val !== max; 11 | }); 12 | 13 | function addToNum(totalSoFar, remainingArray, max) { 14 | if (totalSoFar === max) { 15 | return true; 16 | } else if (totalSoFar > max) { 17 | return false; 18 | } else if (remainingArray.length === 0) { 19 | return false; 20 | } else { 21 | for (var i = 0; i < remainingArray.length; i += 1) { 22 | if (addToNum(totalSoFar + remainingArray[i], remainingArray.slice(0, i).concat(remainingArray.slice(i + 1)), max)) { 23 | return true; 24 | } 25 | } 26 | return false; 27 | } 28 | }; 29 | 30 | return addToNum(0, remaining, max); 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /Easy Difficulty/arrayAdditionI2.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution Array Addition I (second example) 2 | // (C) 2014 splashinn 3 | 4 | function ArrayAdditionI(arr) { 5 | var arrSort = arr.sort(function(a,b){return a-b}); 6 | //sorts all numbers in the array from smallest to largest 7 | var popSort = arrSort.pop(); 8 | //pops out the last number, realized that there could possibly be duplicate numbers 9 | 10 | var arrNotGreatest = function(arr) { 11 | return arr != popSort; 12 | } 13 | 14 | var filter = arr.filter(arrNotGreatest); 15 | //created an array that does not contain all occurrences of the largest number 16 | //and named this array under the variable filter 17 | 18 | var sumArr = filter.reduce(function(a,b){return a+b}); 19 | //added up all the elements in this array 20 | 21 | return sumArr == popSort; 22 | //compared the sum to the highest number 23 | }; 24 | -------------------------------------------------------------------------------- /Easy Difficulty/arrayAdditionI3.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution 3 to Array Addition I 2 | // (C) 2014 splashinn 3 | 4 | function getCombinations(chars) { 5 | var result = []; 6 | var f = function(prefix, chars) { 7 | for (var i = 0; i < chars.length; i++) { 8 | result.push(prefix.concat(chars[i])); 9 | f(prefix.concat(chars[i]), chars.slice(i + 1)); 10 | } 11 | } 12 | f([], chars); 13 | return result; 14 | } 15 | 16 | function sum(arr) { 17 | var v = 0; 18 | for (var i = 0; i < arr.length; i++) { 19 | v += arr[i]; 20 | } 21 | return v; 22 | } 23 | 24 | function ArrayAdditionI(arr) { 25 | arr.sort(function (a, b) { 26 | return a - b; 27 | }); 28 | var largest = arr.pop(); 29 | var c = getCombinations(arr); 30 | for (var i = 0; i < c.length; i++) { 31 | if (sum(c[i]) === largest) { 32 | return true; 33 | } 34 | } 35 | return false; 36 | } 37 | -------------------------------------------------------------------------------- /Easy Difficulty/checknums.js: -------------------------------------------------------------------------------- 1 | // Coderbyte Check Nums solution 2 | // (C) 2014 splashinn 3 | 4 | function CheckNums(num1, num2) { 5 | if (num2 > num1) { 6 | return true; 7 | } else if (num2 === num1) { 8 | return "-1"; 9 | } else { 10 | return false; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Easy Difficulty/countingMinutesI.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Counting Minutes I 2 | // (C) 2014 splashinn 3 | 4 | function CountingMinutesI(str) { 5 | var m = str.match(/\d+|am|pm/gi); 6 | 7 | var h0 = parseInt(m[0]); 8 | var m0 = parseInt(m[1]); 9 | if (h0 !== 12 && m[2] === 'am') { 10 | h0 += 12; 11 | } else if (h0 === 12 && m[2] === 'pm') { 12 | h0 = 0; 13 | } 14 | 15 | var h1 = parseInt(m[3]); 16 | var m1 = parseInt(m[4]); 17 | if (h1 !== 12 && m[5] === 'am') { 18 | h1 += 12; 19 | } else if (h1 === 12 && m[5] === 'pm') { 20 | h1 = 0; 21 | } 22 | 23 | return ((h1 - h0) * 60 + m1 - m0 + 1440) % 1440; 24 | } 25 | -------------------------------------------------------------------------------- /Easy Difficulty/dashInsert.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Dash Insert 2 | // (C) 2014 splashinn 3 | 4 | function DashInsert(num) { 5 | var arr = (num + '').split(''); 6 | var output = []; 7 | for (var i = 0; i < arr.length - 1; i++) { 8 | output.push(arr[i]); 9 | if (/[13579]/g.test(arr[i]) && /[13579]/g.test(arr[i + 1])) { 10 | output.push('-'); 11 | } 12 | } 13 | output.push(arr[arr.length - 1]); 14 | return output.join(''); 15 | } 16 | -------------------------------------------------------------------------------- /Easy Difficulty/divisionStringified.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Division Stringified 2 | // (C) 2014 splashinn 3 | 4 | function DivisionStringified(num1,num2) { 5 | 6 | // code goes here 7 | return (Math.round(num1 / num2) + '').split('') 8 | .map(function(d, i, a){return i != 0 && (a.length - i) % 3 == 0 ? ',' + d : d;}) 9 | .join(''); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /Easy Difficulty/exoh.js: -------------------------------------------------------------------------------- 1 | // Coderbyte Ex Oh solution 2 | // (C) 2014 splashinn 3 | 4 | function ExOh(str) { 5 | var xes = ""; 6 | var os = ""; 7 | var strChars = str.split(""); 8 | for (var i = 0; i < strChars.length; i += 1) { 9 | strChars[i] === "x" ? xes += strChars[i] : os += strChars[i]; 10 | } 11 | return xes.length === os.length ? "true" : "false"; 12 | } 13 | -------------------------------------------------------------------------------- /Easy Difficulty/firstfactorial.js: -------------------------------------------------------------------------------- 1 | // firstfactorial.js 2 | // (C) 2014 splashinn 3 | 4 | function FirstFactorial(num) { 5 | if( num === 1 ) { 6 | return 1; 7 | } 8 | return num * FirstFactorial(num-1); 9 | } 10 | FirstFactorial(); -------------------------------------------------------------------------------- /Easy Difficulty/firstreverse.com.js: -------------------------------------------------------------------------------- 1 | // firstreverse.js 2 | // (C) 2014 splashinn 3 | 4 | function FirstReverse(str) { 5 | return str.split("").reverse().join(""); 6 | } -------------------------------------------------------------------------------- /Easy Difficulty/letterCountI.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Letter Count I 2 | // (C) 2014 splashinn 3 | 4 | function LetterCountI(str) { 5 | var words = str.split(' '); 6 | var maxCount = 0; 7 | for(var i=0;imaxCount){ 11 | maxCount = hi.length; 12 | var maxWord = words[i]; 13 | } 14 | } 15 | } 16 | return maxWord || -1; 17 | } 18 | -------------------------------------------------------------------------------- /Easy Difficulty/lettercapitalize.js: -------------------------------------------------------------------------------- 1 | // lettercapitalize.js 2 | // (C) 2014 splashinn 3 | 4 | function letterCapitalize(str) { 5 | var words = str.split(""); 6 | for (var i = 0; i freq) { 11 | mode = arr[i]; 12 | freq = f; 13 | } 14 | mean += arr[i]; 15 | } 16 | mean /= arr.length; 17 | return mode === mean ? 1 : 0; 18 | } 19 | -------------------------------------------------------------------------------- /Easy Difficulty/numberAddition.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Number Addition 2 | // (C) 2014 splashinn 3 | 4 | function NumberAddition(str) { 5 | 6 | var nums = str.match(/\d+/gi); 7 | 8 | var sum = 0; 9 | for (var i = 0; i < nums.length; i++) { 10 | sum += nums[i] * 1; 11 | } 12 | // code goes here 13 | return sum; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /Easy Difficulty/palindrome.js: -------------------------------------------------------------------------------- 1 | // Coderbyte Palindrome solution 2 | // (C) 2014 splashinn 3 | 4 | function Palindrome(str){ 5 | var backwards = ""; 6 | for (var i = (str.length - 1); i > -1 ; i -= 1) { 7 | if (str[i] != " ") { 8 | backwards += str[i]; 9 | } 10 | } 11 | var newStr = str.replace(/\s+/g, ""); 12 | return newStr === backwards ? true : false; 13 | } 14 | -------------------------------------------------------------------------------- /Easy Difficulty/powersOfTwo.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Powers of Two 2 | // (C) 2014 splashinn 3 | 4 | function PowersofTwo(num) { 5 | do { 6 | num = num / 2; 7 | } while (num >= 2); 8 | // code goes here 9 | return (num == 1); 10 | 11 | } 12 | 13 | -------------------------------------------------------------------------------- /Easy Difficulty/secondGreatLow.js: -------------------------------------------------------------------------------- 1 | // Coderbyte Second Great Low solution 2 | // (C) 2014 splashinn 3 | 4 | function SecondGreatLow(arr) { 5 | var arrSorted = arr.sort(function(a, b) { 6 | return a < b ? -1 : 1 7 | }); 8 | if (arrSorted.length > 3) { 9 | return arrSorted[1] + " " + arrSorted[arrSorted.length - 2]; 10 | } else { 11 | return arrSorted[0] + " " + arrSorted[1]; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Easy Difficulty/simpleadding.js: -------------------------------------------------------------------------------- 1 | // Coderbyte Simple Adding solution 2 | // (C) 2014 splashinn 3 | 4 | function SimpleAdding(num) { 5 | return (num * num + num)/2; 6 | } -------------------------------------------------------------------------------- /Easy Difficulty/simplesymbols.js: -------------------------------------------------------------------------------- 1 | // Coderbyte Simple Symbols solution 2 | // (C) 2014 splashinn 3 | 4 | function SimpleSymbols(str){ 5 | var results = []; 6 | for(var i = 0; i < str.length; i +=1){ 7 | if (str[i].match(/[a-z,A-Z]/)) { 8 | if (str[i + 1] === "+" && str[i - 1] === "+"){ 9 | results.push('true'); 10 | } 11 | else {results.push('false');} 12 | } 13 | } 14 | var resultsStr = results.join(" "); 15 | if (resultsStr.match(/false/)) {return "false";} 16 | else {return "true";} 17 | } 18 | -------------------------------------------------------------------------------- /Easy Difficulty/swapCase.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Swap Case 2 | // (C) 2014 splashinn 3 | 4 | function SwapCase(str) { 5 | var arr = str.split(''); 6 | for (var i = 0; i < arr.length; i++) { 7 | arr[i] = arr[i].charCodeAt() < 97 ? arr[i].toLowerCase() : arr[i].toUpperCase(); 8 | } 9 | return arr.join(''); 10 | } 11 | -------------------------------------------------------------------------------- /Easy Difficulty/thirdGreatest.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Third Greatest 2 | // (C) 2014 splashinn 3 | 4 | function ThirdGreatest(arr) { 5 | arr.sort(function (a, b) { 6 | if (a.length === b.length) { 7 | if (a === b) { 8 | return 0; 9 | } 10 | return a < b ? -1 : 1; 11 | } 12 | return b.length - a.length; 13 | }); 14 | return arr[2]; 15 | } 16 | -------------------------------------------------------------------------------- /Easy Difficulty/timeconvert.js: -------------------------------------------------------------------------------- 1 | // Coderbyte Time Convert solution 2 | // (C) 2014 splashinn 3 | 4 | function TimeConvert(num) { 5 | var hours = Math.floor(num / 60); 6 | var minutes = num % 60; 7 | var theTime = hours + ":" + minutes; 8 | return theTime; 9 | } 10 | -------------------------------------------------------------------------------- /Easy Difficulty/vowelcount.js: -------------------------------------------------------------------------------- 1 | // Coderbyte Vowel Count solution 2 | // (C) 2014 splashinn 3 | 4 | function VowelCount(str){ 5 | var vowels = ""; 6 | for (var i = 0; i < str.length; i += 1) { 7 | if (str[i].match(/[aeiou]/)){ 8 | vowels += str[i]; 9 | } 10 | } 11 | return vowels.length; 12 | } 13 | -------------------------------------------------------------------------------- /Easy Difficulty/wordcount.js: -------------------------------------------------------------------------------- 1 | // wordcount.js solution for Coderbyte 2 | // (C) 2014 splashinn 3 | 4 | function WordCount(str) { 5 | return str.split(" ").length; 6 | }; 7 | -------------------------------------------------------------------------------- /Easy Difficulty/wordcount1.js: -------------------------------------------------------------------------------- 1 | // Coderbyte Word Count solution 2 | // (C) 2014 splashinn 3 | 4 | function WordCount(str) { 5 | var strSplit = str.split(" "); 6 | var wordCount = strSplit.length; 7 | return wordCount; 8 | } 9 | -------------------------------------------------------------------------------- /Hard Difficulty/knightJumps.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Knight Jumps 2 | // splashinn 3 | 4 | function knightJumps(str) { 5 | var str = str.match(/\w/g); 6 | var x = parseInt(str[0]); 7 | var y = parseInt(str[1]); 8 | 9 | var count = 0; 10 | if (x + 1 <= 8 && y + 2 <= 8) count++; 11 | if (x + 2 <= 8 && y + 1 <= 8) count++; 12 | if (x + 2 <= 8 && y - 1 >= 1) count++; 13 | if (x + 1 <= 8 && y - 2 >= 1) count++; 14 | if (x - 1 >= 1 && y - 2 >= 1) count++; 15 | if (x - 2 >= 1 && y - 1 >= 1) count++; 16 | if (x - 2 >= 1 && y + 1 <= 8) count++; 17 | if (x - 1 >= 1 && y + 2 <= 8) count++; 18 | 19 | return count; 20 | } 21 | -------------------------------------------------------------------------------- /Hard Difficulty/noughtsDeterminer.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Noughts Determiner 2 | // splashinn 3 | 4 | var positions = [ 5 | [0, 1, 2], 6 | [4, 5, 6], 7 | [8, 9, 10], 8 | [0, 4, 8], 9 | [1, 5, 9], 10 | [2, 6, 10], 11 | [0, 5, 10], 12 | [2, 5, 8] 13 | ]; 14 | 15 | function wins(matrix) { 16 | for (var i = 0; i < positions.length; i++) { 17 | var p = positions[i]; 18 | if (matrix[p[0]] !== '-' 19 | && matrix[p[0]] === matrix[p[1]] 20 | && matrix[p[0]] === matrix[p[2]]){ 21 | return true; 22 | } 23 | } 24 | return false; 25 | } 26 | 27 | function noughtsDeterminer(m) { 28 | for (var i = 0; i < m.length; i++) { 29 | if (m[i] === '-') { 30 | var m1 = m.slice(0, i); 31 | var m2 = m.slice(i + 1); 32 | if (wins([].concat(m1, 'O', m2)) || wins([].concat(m1, 'X', m2))) { 33 | return i; 34 | } 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Medium Difficulty/arithGeoII.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Arith Geo II 2 | // (C) splashinn 3 | 4 | function ArithGeo(arr) { 5 | if (arr.length < 3) { 6 | return true; 7 | } 8 | var r = arr[1] - arr[0]; 9 | for (var i = 2; i < arr.length; i++) { 10 | if (arr[i] - arr[i - 1] !== r) { 11 | break; 12 | } 13 | } 14 | if (i === arr.length) { 15 | return 'Arithmetic'; 16 | } 17 | var q = arr[1] / arr[0]; 18 | for (var i = 2; i < arr.length; i++) { 19 | if (arr[i] / arr[i - 1] !== q) { 20 | break; 21 | } 22 | } 23 | if (i === arr.length) { 24 | return 'Geometric'; 25 | } 26 | return -1; 27 | } 28 | -------------------------------------------------------------------------------- /Medium Difficulty/arithGeoII2.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Arith Geo II 2 | // (C) 2014 splashinn 3 | 4 | function ArithGeoII(arr) { 5 | var arith=true; 6 | var geo=true; 7 | var dif = arr[1]-arr[0]; 8 | var div = (arr[2]-arr[1])/(arr[1]-arr[0]) 9 | for (var i=0;i lastArr[lastArr.length - 1]) { 30 | lastArr.push(arr[j]); 31 | lastResult.push(lastArr); 32 | } 33 | 34 | } 35 | } 36 | return lastResult; 37 | } 38 | 39 | 40 | 41 | 42 | 43 | function arrayAddition(arr) { 44 | var arr = arr.sort(function(a,b){return a-b}); 45 | var theBiggest = parseInt(arr[arr.length - 1]); 46 | arr.pop(); 47 | 48 | var aarr = makeAarr(arr); 49 | var result = new Array(); 50 | 51 | for (var i = 0; i < aarr.length; i++) { 52 | var newAr = new Array(); 53 | for (var k = 0; k < aarr[i].length; k++) { 54 | newAr.push(aarr[i][k]); 55 | } 56 | for (var j = 0; j < arr.length; j++) { 57 | var lastArr = new Array(); 58 | for (var l = 0; l < newAr.length; l++) { 59 | lastArr.push(newAr[l]); 60 | } 61 | if (arr[j] > lastArr[lastArr.length - 1]) { 62 | lastArr.push(arr[j]); 63 | result.push(lastArr); 64 | } 65 | 66 | } 67 | } 68 | for (var n = 0; n < result.length; n++) { 69 | var suma = 0; 70 | for (var p = 0; p < result[n].length; p++) { 71 | suma = suma + result[n][p]; 72 | } 73 | if (suma === theBiggest) { 74 | return "true"; 75 | } 76 | } 77 | 78 | for (var m = 0; m < arr.length - 2; m++) { 79 | var last = largerArray(result, arr); 80 | result = last; 81 | for (var n = 0; n < result.length; n++) { 82 | var suma = 0; 83 | for (var p = 0; p < result[n].length; p++) { 84 | suma = suma + result[n][p]; 85 | } 86 | if (suma === theBiggest) { 87 | return "true"; 88 | } 89 | } 90 | 91 | } 92 | return "false"; 93 | } 94 | -------------------------------------------------------------------------------- /Medium Difficulty/arrayAddition2.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Array Addition 2 | // (C) 2014 splashinn 3 | 4 | function arrayAddition(arr) { 5 | arr.sort(function(a, b){return b-a}); 6 | var max = arr.shift(); 7 | 8 | for (var i = 0; i < Math.pow(2, arr.length); i++) { 9 | var flag = (i).toString(2).split(''); 10 | var sum = 0; 11 | for (var j = 0; j < flag.length; j++) { 12 | if (flag[j] == '1') sum += arr[j]; 13 | } 14 | if (sum == max) return "true"; 15 | } 16 | return "false"; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /Medium Difficulty/binaryConverter.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for binary converter 2 | // splashinn 3 | 4 | function BinaryConverter(str){ 5 | result = 0; 6 | for (var i = str.length -1; i >= 0; i--){ 7 | result += str[i] * Math.pow(2,str.length - 1 - i) 8 | } 9 | return result; 10 | } 11 | -------------------------------------------------------------------------------- /Medium Difficulty/binaryConverter2.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for binary converter 2 | // splashinn 3 | 4 | function BinaryConverter(str) { 5 | return parseInt(str, 2); 6 | } 7 | -------------------------------------------------------------------------------- /Medium Difficulty/bracketMatcher.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for bracket matcher 2 | // splashinn 3 | 4 | function toBracket(str) { 5 | var result = new Array(); 6 | for (var i = 0; i < str.length; i++) { 7 | if ("()".indexOf(str[i]) !== -1) { 8 | result.push(str[i]); 9 | } 10 | } 11 | return result.join(""); 12 | } 13 | 14 | 15 | 16 | function bracketMatcher(str) { 17 | var str = toBracket(str); 18 | var openBrackets = 0; 19 | for (var i = 0; i < str.length; i++) { 20 | if (str[i] === "(") { 21 | openBrackets = openBrackets + 1; 22 | } else if (openBrackets === 0) { 23 | return 0; 24 | } else { 25 | openBrackets = openBrackets - 1; 26 | } 27 | } 28 | if (openBrackets !== 0) { 29 | return 0; 30 | } else { 31 | return 1; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Medium Difficulty/bracketMatcher2.js: -------------------------------------------------------------------------------- 1 | function BracketMatcher(str) { 2 | 3 | str.split(""); 4 | var total1 = [], total2 = [], total3 = [], total4 = []; 5 | for(var i = 0; i < str.length; i++) { 6 | if(str[i] === "(") { 7 | total1.push(i); 8 | } 9 | if(str[i] === ")") { 10 | total2.push(i); 11 | } 12 | if(str[i] === "]") { 13 | total3.push(i); 14 | } 15 | 16 | if(str[i] === "[") { 17 | total4.push(i); 18 | 19 | } 20 | } 21 | var num = total1.length +total3.length; 22 | if(total1.length != total2.length || total3.length != total4.length ) { 23 | return 0; 24 | } 25 | else { 26 | return 1; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /Medium Difficulty/caesarCipher.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for caesar cipher 2 | // splashinn 3 | 4 | function caesarCipher(str, num) { 5 | var result = new Array(str.length); 6 | for (var i = 0; i < str.length; i++) { 7 | if ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".indexOf(str[i]) !== -1) { 8 | var code = str[i].charCodeAt(0) + num; 9 | result[i] = String.fromCharCode(code); 10 | } else { 11 | result[i] = str[i]; 12 | } 13 | } 14 | return result.join(""); 15 | } 16 | -------------------------------------------------------------------------------- /Medium Difficulty/caesarCipher2.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for caesar cipher 2 | // splashinn 3 | 4 | function CaesarCipher(str, num) { 5 | return str.replace(/./g, function (l) { 6 | var c = l.charCodeAt(); 7 | if (c >= 65 && c <= 90) { 8 | c += num; 9 | return String.fromCharCode(c > 90 ? 65 + c - 91 : c); 10 | } 11 | if (c >= 97 && c <= 122) { 12 | c += num; 13 | return String.fromCharCode(c > 122 ? 97 + c - 123 : c); 14 | } 15 | return l; 16 | }); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /Medium Difficulty/consecutive.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Consecutive 2 | // splashinn 3 | 4 | function Consecutive(arr) { 5 | var arr = arr.sort(function (a, b) { 6 | return a-b; 7 | }); 8 | var results = []; 9 | var number = 0; 10 | 11 | for (var i = 0; i < arr.length - 1; i++) { 12 | var current = arr[i]; 13 | var next = arr[i + 1]; 14 | var diff = next - current; 15 | console.log(diff); 16 | var correct = diff - 1; 17 | results.push(correct); 18 | } 19 | for (var x = 0; x < results.length; x++) { 20 | number += results[x] 21 | } 22 | return number; 23 | } 24 | -------------------------------------------------------------------------------- /Medium Difficulty/consecutive2.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Consecutive 2 | // splashinn 3 | 4 | function Consecutive(arr) { 5 | 6 | var arr = arr.sort(function (a, b) {return a - b;}); 7 | var fill = 0; 8 | var next = 0; 9 | for (var i = arr[0]; i <= arr[arr.length -1]; i++) { 10 | if (i == arr[next]){ 11 | next++; 12 | } else { 13 | fill++; 14 | } 15 | } 16 | return fill; 17 | } 18 | -------------------------------------------------------------------------------- /Medium Difficulty/consecutive3.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Consecutive 2 | // splashinn 3 | 4 | function Consecutive(arr) { 5 | arr.sort(function(a,b) { 6 | return a-b; 7 | }); 8 | return arr[arr.length - 1] - arr[0] + 1 - arr.length; 9 | } 10 | -------------------------------------------------------------------------------- /Medium Difficulty/countingMinutes.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for counting minutes 2 | // splashinn 3 | 4 | function lateOrNot(str) { 5 | for (var i = 0; i < str.length; i++) { 6 | if (str[i] === "p" || str[i] === "P") { 7 | return "p"; 8 | } else if (str[i] === "a" || str[i] === "A") { 9 | return "a"; 10 | } 11 | } 12 | } 13 | 14 | 15 | 16 | 17 | function toMinutes(time) { 18 | var arr = time.split(":"); 19 | if (arr[0] === "12") { 20 | arr[0] = "00"; 21 | } 22 | var min = parseInt(arr[1], 10); 23 | var hours = parseInt(arr[0], 10) * 60; 24 | if (lateOrNot(time) === "p") { 25 | hours += 12*60; 26 | } 27 | return hours + min; 28 | } 29 | 30 | 31 | 32 | 33 | function countingMinutes(str) { 34 | var array = str.split("-"); 35 | var time1 = toMinutes(array[0]); 36 | var time2 = toMinutes(array[1]); 37 | if (time2 < time1) { 38 | return time2 + (24*60 - time1); 39 | } else { 40 | return time2 - time1; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Medium Difficulty/dashInsertII.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for dash insert II 2 | // splashinn 3 | 4 | function dashInsertII(num) { 5 | var str = "" + num; 6 | var result = new Array(str.length); 7 | for (var i = 0; i < str.length; i++) { 8 | var digit = parseInt(str[i]); 9 | if ((str[i + 1] !== undefined) && digit % 2 !== 0 && parseInt(str[i + 1]) % 2 !== 0) { 10 | result[i] = str[i] + "-"; 11 | } else if ((str[i + 1] !== undefined) && digit % 2 === 0 && parseInt(str[i + 1]) % 2 === 0 && 12 | digit !== 0 && parseInt(str[i + 1]) !== 0) { 13 | result[i] = str[i] + "*"; 14 | } else { 15 | result[i] = str[i]; 16 | } 17 | } 18 | return result.join(""); 19 | } 20 | -------------------------------------------------------------------------------- /Medium Difficulty/division.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Division 2 | // (C) 2014 splashinn 3 | 4 | function Division(num1, num2) { 5 | if (num1 > num2) { 6 | var big = num1; 7 | var small = num2; 8 | } else { 9 | var big = num2; 10 | var small = num1; 11 | } 12 | var max = 1; 13 | for (var i = 1; i < big; i ++) { 14 | if (Math.round(big/i) == (big/i)) { 15 | if (Math.round(small/i) == (small/i)) { 16 | max = i; 17 | } 18 | } 19 | } 20 | return max; 21 | } 22 | -------------------------------------------------------------------------------- /Medium Difficulty/division2.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Division 2 | // (C) 2014 splashinn 3 | 4 | function Division(num1,num2) { 5 | var div = 1; 6 | for (var i = 0; i <= num1 && i <= num2; i++) { 7 | if (num1 % i === 0 && num2 % i === 0) { 8 | div = i; 9 | } 10 | } 11 | return div; 12 | 13 | } 14 | -------------------------------------------------------------------------------- /Medium Difficulty/fibonacciChecker.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for fibonacci checker 2 | // splashinn 3 | 4 | function FibonacciChecker(num) { 5 | if (num == 0) { 6 | return 'yes'; 7 | } 8 | var lastNumber = 0; 9 | var currentNumber = 1; 10 | while (currentNumber <= num) { 11 | var nextNumber = lastNumber + currentNumber; 12 | if (nextNumber == num) { 13 | return 'yes'; 14 | } 15 | lastNumber = currentNumber; 16 | currentNumber = nextNumber; 17 | } 18 | return 'no'; 19 | } 20 | -------------------------------------------------------------------------------- /Medium Difficulty/formattedDivision.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for formatted division 2 | // splashinn 3 | 4 | function DivisionStringified(num1, num2) { 5 | var div = num1 / num2; 6 | div = ((Math.round(div * 10000) / 10000) + '').split('.'); 7 | var int = div[0]; 8 | var dec = div[1] || ''; 9 | var r = int.length % 3; 10 | return int.slice(0, r) + int.slice(r).replace(/.{3}/g, function (m) { 11 | return ',' + m; 12 | }) + '.' + dec + '0000'.slice(dec.length, 4); 13 | } 14 | -------------------------------------------------------------------------------- /Medium Difficulty/letterCount.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Letter Count 2 | // 2014 splashinn 3 | 4 | function toArr(str) { 5 | var result = new Array(str.length); 6 | for (var i = 0; i < str.length; i++) { 7 | result[i] = str[i]; 8 | } 9 | return result; 10 | } 11 | 12 | function splitArray(str) { 13 | if (str.length === 0) { 14 | return []; 15 | } 16 | var result = new Array(); 17 | var first = str[0]; 18 | var begin = 0; 19 | for (var i = 0; i < str.length; i++) { 20 | if (first !== str[i]) { 21 | result.push(str.slice(begin, i)); 22 | begin = i; 23 | first = str[i]; 24 | } 25 | } 26 | result.push(str.slice(begin, str.length)); 27 | return result; 28 | } 29 | 30 | function runLength(str) { 31 | var arr = toArr(str).sort().join(""); 32 | arr = splitToArray(arr); 33 | var result = new Array(); 34 | for (var i = 0; i < arr.length; i++) { 35 | result.push(arr[i].length); 36 | } 37 | return result.join(""); 38 | } 39 | 40 | function removeSplit(str) { 41 | var noSymbols = []; 42 | for (var i = 0; i < str.length; i++) { 43 | if ("abcdefghijklmnopqrstuvwxyz ".indexOf(str[i].toLowerCase()) !== -1) { 44 | noSymbols.push(str[i]); 45 | } 46 | } 47 | return noSymbols.join("").split(" "); 48 | }; 49 | 50 | function returnNum(str) { 51 | var max = 0; 52 | for (var i = 0; i < str.length; i++) { 53 | if (str[i] > max) { 54 | max = str[i]; 55 | } 56 | } 57 | return parseInt(max); 58 | } 59 | 60 | function letterCount(str) { 61 | var stringFirst = removeSplit(str); 62 | var str = str.toLowerCase(); 63 | arr = removeSplit(str); 64 | var arr2 = new Array(arr.length); 65 | for (var i = 0; i < arr.length; i++) { 66 | arr2[i] = runLength(arr[i]); 67 | } 68 | var arr3 = new Array(); 69 | for (var i = 0; i < arr2.length; i++) { 70 | arr3.push(returnNum(arr2[i])); 71 | } 72 | var finalMax = returnNum(arr3.join("")); 73 | if (finalMax === 1) { 74 | return -1; 75 | } 76 | for (var i = 0; i < arr3.length; i++) { 77 | if (arr3[i] === finalMax) { 78 | return stringFirst[i]; 79 | } 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /Medium Difficulty/letterCount2.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Letter Count 2 | // splashinn 3 | 4 | function getRepLetters(word) { 5 | var letters = {}; 6 | for (var i = 0; i < word.length; i++) { 7 | if (!letters[word[i]]) { 8 | letters[word[i]] = 0; 9 | } 10 | letters[word[i]]++; 11 | } 12 | var count = 0; 13 | for (var l in letters) { 14 | if (letters[l] > count) { 15 | count = letters[l]; 16 | } 17 | } 18 | return count; 19 | } 20 | function letterCount(str) { 21 | var words = str.match(/[^\s]+/g); 22 | words.sort(function (a, b) { 23 | var ca = getRepLetters(a); 24 | var cb = getRepLetters(b); 25 | return cb - ca; 26 | }); 27 | return getRepLetters(words[0]) === 1 ? -1 : words[0]; 28 | } 29 | -------------------------------------------------------------------------------- /Medium Difficulty/multipleBrackets.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for multiple brackets 2 | // splashinn 3 | 4 | function MultipleBrackets(str) { 5 | var openP = 0; 6 | var closeP = 0; 7 | var openB = 0; 8 | var closeB = 0; 9 | var counter = 0; 10 | for (var i = 0; i < str.length; i++){ 11 | if (str[i] == '('){ 12 | openP += 1; 13 | counter += 1; 14 | } 15 | if (str[i] == ')'){ 16 | closeP += 1; 17 | } 18 | if (str[i] == '['){ 19 | openB += 1; 20 | counter += 1; 21 | } 22 | if (str[i] == ']'){ 23 | closeB += 1; 24 | } 25 | } 26 | if (openP == closeP && openB == closeB){ 27 | return 1 + ' ' + counter; 28 | } else { 29 | return 0; 30 | } 31 | }} 32 | -------------------------------------------------------------------------------- /Medium Difficulty/multipleBrackets2.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for multiple brackets 2 | // splashinn 3 | 4 | function MultipleBrackets(str) { 5 | var stack = []; 6 | var count = 0; 7 | for (var i = 0; i < str.length; i++) { 8 | if (str[i] === '(' || str[i] === '[') { 9 | stack.push(str[i]); 10 | count++; 11 | } else if (str[i] === ')' || str[i] === ']') { 12 | if ((str[i] === ')' && stack[stack.length - 1] === '(') || 13 | (str[i] === ']' && stack[stack.length - 1] === '[')) { 14 | stack.pop(); 15 | } else { 16 | return '0'; 17 | } 18 | } 19 | } 20 | return stack.length === 0 ? '1 ' + count : '0'; 21 | } 22 | -------------------------------------------------------------------------------- /Medium Difficulty/numberSearch.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for number search 2 | // splashinn 3 | 4 | function numberSearch(str) { 5 | var sum=0; 6 | var lets=0; 7 | for(var i=0;i= 65 && c <= 90) || (c >= 97 && c <= 122)) 10 | lets++; 11 | if(c>=48 && c<=57) 12 | sum += c - 48; 13 | } 14 | return Math.round(sum/lets); 15 | } 16 | -------------------------------------------------------------------------------- /Medium Difficulty/palindromeTwo.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Palindrome II 2 | // (C) 2014 splashinn 3 | 4 | function remove(str) { 5 | var str = str.toLowerCase(); 6 | var noSymbols = new Array(str.length); 7 | for (var i = 0; i < str.length; i++) { 8 | if ("abcdefghijklmnopqrstuvwxyz".indexOf(str[i]) !== -1) { 9 | noSymbols[i]; 10 | } else { 11 | noSymbols[i] == undefined; 12 | } 13 | } 14 | return noSymbols.join(""); 15 | } 16 | 17 | function reverse(str) { 18 | var result = new Array(str.length); 19 | for (var i = 0; i < str.length; i++) { 20 | result[i] = str[str.length - 1 - i]; 21 | } 22 | return result.join(""); 23 | } 24 | 25 | function palindromeTwo(str) { 26 | var str1 = remove(str); 27 | var str2 = reverse(str1); 28 | if (str1 === str2) { 29 | return "true"; 30 | } else { 31 | return "false"; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Medium Difficulty/palindromeTwo2.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Palindrome II 2 | // (C) 2014 splashinn 3 | 4 | function PalindromeTwo(str) { 5 | var regExp = /[A-Z]/gi; 6 | var strFront = str.match(regExp).join("").toLocaleLowerCase(); 7 | var strReverse = str.match(regExp).reverse().join("").toLocaleLowerCase(); 8 | if (strFront == strReverse) { 9 | return true; 10 | } else { 11 | return false; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Medium Difficulty/permutationStep.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for permutation step 2 | // splashinn 3 | 4 | function permutationStep(num) { 5 | var result = []; 6 | var perm = function(current, set){ 7 | if (set.length == 0){ 8 | result.push(parseInt(current)); 9 | return; 10 | } 11 | for (var i = 0; i < set.length; i++){ 12 | 13 | var pivot = set[i]; 14 | set.splice(i, 1); 15 | perm(current + pivot, set); 16 | set.splice(i, 0, pivot); 17 | } 18 | } 19 | 20 | perm('', num.toString().split('')); 21 | 22 | result.sort(); 23 | 24 | for (var i = 0; i < result.length; i++){ 25 | if (result[i] > num){ 26 | return result[i]; 27 | } 28 | } 29 | return -1; 30 | } 31 | -------------------------------------------------------------------------------- /Medium Difficulty/permutationStep2.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for permutation step 2 | // splashinn 3 | 4 | function permutationStep(num) { 5 | 6 | var concat = function (arr) { 7 | var s = ''; 8 | for (var i = 0; i < arr.length; i++) { 9 | s += arr[i]; 10 | } 11 | 12 | return s; 13 | }; 14 | 15 | var equalPerm = function (a, b) { 16 | a = (a + '').split(''); 17 | b = (b + '').split(''); 18 | a.sort(); 19 | b.sort(); 20 | return concat(a) == concat(b); 21 | }; 22 | 23 | var f = (num + '').split(''); 24 | f.sort(function (a, b) { return a < b; }); 25 | 26 | if (concat(f) == num) { 27 | return -1; 28 | } 29 | 30 | for (var i = num + 1; ; i++) { 31 | if (equalPerm(num, i)) { 32 | return i; 33 | } 34 | } 35 | return equalPerm(123, 321); 36 | } 37 | -------------------------------------------------------------------------------- /Medium Difficulty/primeChecker.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for prime checker 2 | // splashinn 3 | 4 | function primeChecker(num) { 5 | var result = []; 6 | var perm = function(current, set){ 7 | if (set.length == 0){ 8 | result.push(parseInt(current)); 9 | return; 10 | } 11 | for (var i = 0; i < set.length; i++){ 12 | var pivot = set[i]; 13 | set.splice(i, 1); 14 | perm(current + pivot, set); 15 | set.splice(i, 0, pivot); 16 | } 17 | } 18 | 19 | perm('', num.toString().split('')); 20 | 21 | var primeTime = function(numero){ 22 | if (numero == 1){ 23 | return false; 24 | } else{ 25 | for (var j = 2; j < numero/2; j++){ 26 | if (numero % 2 === 0){ 27 | return false; 28 | } 29 | } 30 | return true; 31 | } 32 | } 33 | 34 | for (var k = 0; k < result.length; k++){ 35 | if (primeTime(result[k]) === true){ 36 | return 1; 37 | } 38 | } 39 | return 0; 40 | 41 | } 42 | -------------------------------------------------------------------------------- /Medium Difficulty/primeMover.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Prime Mover 2 | // (C) 2014 splashinn 3 | 4 | function PrimeMover(num) { 5 | 6 | var i = 1, count = 0; 7 | 8 | while (num !== count) { 9 | i++; 10 | if (PrimeTime(i)) { 11 | count++; 12 | } 13 | } 14 | return i; 15 | } 16 | 17 | 18 | function PrimeTime(num) { 19 | 20 | for (var i = 2; i < num; i++) { 21 | if (num === (1 || 2)) { 22 | return true; 23 | } else if (num%i === 0) { 24 | return false; 25 | } 26 | } 27 | return true; 28 | } 29 | -------------------------------------------------------------------------------- /Medium Difficulty/primeMover2.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Prime Mover 2 | // (C) 2014 splashinn 3 | 4 | function PrimeMover(num) { 5 | var primes = []; 6 | for(var i=2;i<10000;i++){ 7 | for(var j=2;j= str.length) 20 | return buffer; 21 | for (var i = index; i < str.length; i++) 22 | buffer.push(ToggleLetters(str, index, i)); 23 | return FindAllPermutations(str, index + 1, buffer); 24 | } 25 | 26 | function ToggleLetters(str, index1, index2) { 27 | if (index1 != index2) { 28 | var temp = str[index1]; 29 | str[index1] = str[index2]; 30 | str[index2] = temp; 31 | } 32 | return str.join(""); 33 | } 34 | function PrimeChecker(num) { 35 | var nums = FindAllPermutations(num + ''); 36 | for (var i = 0; i < nums.length; i++) { 37 | if (isPrime(parseInt(nums[i]))) { 38 | return 1; 39 | } 40 | } 41 | return 0; 42 | } 43 | -------------------------------------------------------------------------------- /Medium Difficulty/runLength.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Run Length 2 | // (C) 2014 splashinn 3 | 4 | function RunLength(str) { 5 | var result = ''; 6 | var count = 1; 7 | 8 | for (i = 1; i < str.length; i++) { 9 | if (str[i] === str[i - 1]) { 10 | count++; 11 | } else { 12 | result += count + str[i - 1]; 13 | count = 1; 14 | } 15 | } 16 | result += count + str[i - 1]; 17 | return result; 18 | } 19 | -------------------------------------------------------------------------------- /Medium Difficulty/simpleMode.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Simple Mode 2 | // 2014 splashinn 3 | 4 | function SimpleMode(arr) { 5 | 6 | var mc = 0, 7 | m = -1; 8 | 9 | for (var i = 0; i < arr.length; i++) { 10 | var c = 0; 11 | for (var j = 0; j < arr.length; j++) { 12 | if (arr[i] == arr[j]) { 13 | c++; 14 | } 15 | } 16 | 17 | if (c > 1 && c > mc) { 18 | mc = c; 19 | m = arr[i]; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Medium Difficulty/simpleMode2.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution Simple Mode 2 | // (C) 2014 splashinn 3 | 4 | function SimpleMode(arr) { 5 | var mode={}, max=1, pos=arr.length, maxi=-1; 6 | for (var i=0;imax) max=mode["k"+arr[i]].value 11 | } 12 | if (max==1) return -1; 13 | for (var k in mode) 14 | { 15 | if (mode[k].value==max && mode[k].order max) { 24 | max = value; 25 | mode = key; 26 | } 27 | } 28 | return parseInt(mode); 29 | } 30 | 31 | function SimpleMode(arr) { 32 | var obj = countFrequency(arr); 33 | var mode = finalMaximum(obj); 34 | return mode; 35 | } 36 | -------------------------------------------------------------------------------- /Medium Difficulty/stringReduction.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for string reduction 2 | // splashinn 3 | 4 | function StringReduction(str) { 5 | var lastLength; 6 | 7 | do { 8 | lastLength = str.length; 9 | str = str.replace(/ab|ba/, "c"); 10 | str = str.replace(/bc|cb/, "a"); 11 | str = str.replace(/ac|ca/, "b"); 12 | } 13 | while (lastLength > str.length) 14 | return str.length; 15 | } 16 | -------------------------------------------------------------------------------- /Medium Difficulty/stringReduction2.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for string reduction 2 | // splashinn 3 | 4 | function reduce(str){ 5 | str = str.replace(/ab/, "c") 6 | .replace(/ba/, "c") 7 | .replace(/ac/, "b") 8 | .replace(/ca/, "b") 9 | .replace(/bc/, "a") 10 | .replace(/cb/, "a"); 11 | return str; 12 | } 13 | 14 | function irreducible(str) { 15 | var str = str.split(""); 16 | for (var i = 1; i < str.length; i++) { 17 | if (str[i] != str[i-1]) return false; 18 | } 19 | return true; 20 | } 21 | 22 | function StringReduction(str) { 23 | do { 24 | str = reduce(str); 25 | } while (str != reduce(str)); 26 | 27 | return str.length; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /Medium Difficulty/stringScramble.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for String Scramble 2 | // (C) 2014 splashinn 3 | 4 | function StringScramble(str1,str2) { 5 | 6 | for (var i = 0; i < str2.length; i++) { 7 | if (str1.indexOf(str2[i]) == -1) { 8 | return false; 9 | } 10 | } 11 | return true; 12 | } 13 | -------------------------------------------------------------------------------- /Medium Difficulty/stringScramble2.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for String Scramble 2 | // (C) 2014 splashinn 3 | 4 | function StringScramble(str1, str2) { 5 | for (var i = 0; i < str2.length; i++) { 6 | var l1 = (str1.match(new RegExp(str2[i], 'g')) || []).length; 7 | var l2 = (str2.match(new RegExp(str2[i], 'g')) || []).length; 8 | if (l1 < l2) { 9 | return false; 10 | } 11 | } 12 | return true; 13 | } 14 | -------------------------------------------------------------------------------- /Medium Difficulty/swapII.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for swap II 2 | // splashinn 3 | 4 | function IsLetter(char) { 5 | return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(char) !== -1; 6 | } 7 | 8 | function IsDigit(char) { 9 | return "0123456789".indexOf(char) !== -1; 10 | } 11 | 12 | function splitToArray(str) { 13 | if (str.length === 0) { 14 | return []; 15 | } 16 | var result = new Array(); 17 | var inDigits = IsDigit(str[0]); 18 | var begin = 0; 19 | for (var i = 1; i < str.length; i++) { 20 | var digit = IsDigit(str[i]); 21 | if (digit !== inDigits) { 22 | result.push(str.slice(begin, i)); 23 | begin = i; 24 | inDigits = digit; 25 | } 26 | } 27 | result.push(str.slice(begin, str.length)); 28 | return result; 29 | } 30 | 31 | function isNumber(str) { 32 | for (var i = 0; i < str.length; i++) { 33 | if (IsDigit(str[i]) !== true) { 34 | return false; 35 | } 36 | } 37 | return true; 38 | } 39 | 40 | function isWord(str) { 41 | for (var i = 0; i < str.length; i++) { 42 | if (IsLetter(str[i]) !== true) { 43 | return false; 44 | } 45 | } 46 | return true; 47 | } 48 | 49 | 50 | function SwapII(str) { 51 | var result = new Array(str.length); 52 | for (var i = 0; i < str.length; i++) { 53 | if ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(str[i]) !== -1) { 54 | if (str[i].toUpperCase() !== str[i]) { 55 | result[i] = str[i].toUpperCase(); 56 | } else { 57 | result[i] = str[i].toLowerCase(); 58 | } 59 | } else { 60 | result[i] = str[i]; 61 | } 62 | } 63 | 64 | var splitted = splitToArray(result.join("")); 65 | for (var i = 1; i + 1 < splitted.length; i++) { 66 | if (isWord(splitted[i]) && isNumber(splitted[i - 1]) && isNumber(splitted[i + 1])) { 67 | var temp = splitted[i - 1]; 68 | splitted[i - 1] = splitted[i + 1]; 69 | splitted[i + 1] = temp; 70 | } 71 | } 72 | 73 | return splitted.join(""); 74 | } 75 | -------------------------------------------------------------------------------- /Medium Difficulty/swapII2.js: -------------------------------------------------------------------------------- 1 | // coderbyte solution for swap II 2 | // splashinn 3 | 4 | function swapCase(str) { 5 | var str = str.split(""); 6 | str = str.map(function(char){ 7 | var code = char.charCodeAt(0); 8 | if (code >= 97 && code <= 122) return char.toUpperCase(); 9 | if (code >= 65 && code <= 90) return char.toLowerCase(); 10 | return char; 11 | }); 12 | return str.join(""); 13 | } 14 | 15 | function SwapII(str) { 16 | var str = swapCase(str); 17 | 18 | var prevDigit = -1; 19 | var prevPos = -1; 20 | var newStr = []; 21 | 22 | for (var i = 0; i < str.length; i++) { 23 | var c = str.charCodeAt(i); 24 | if (c >= 48 && c <= 57) { 25 | if (prevDigit >= 0) { 26 | newStr[prevPos] = str.charAt(i); 27 | newStr[i] = prevDigit; 28 | prevDigit = -1; 29 | prevPos = -1; 30 | } else { 31 | newStr[i] = str.charAt(i); 32 | prevDigit = str.charAt(i); 33 | prevPos = i; 34 | } 35 | } else if(c >= 97 && c <= 122 || c >= 65 && c <= 90) { 36 | newStr[i] = str.charAt(i); 37 | } else { 38 | newStr[i] = str.charAt(i); 39 | prevDigit = -1; 40 | prevPos = -1; 41 | } 42 | } 43 | return newStr.join(""); 44 | } 45 | -------------------------------------------------------------------------------- /Medium Difficulty/threeFiveMultiples.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution for Three Five Multiples 2 | // splashinn 3 | 4 | function ThreeFiveMultiples(num) { 5 | var multiples = {}; 6 | for (var i = 3; i < num; i += 3) { 7 | multiples[i] = true; 8 | } 9 | for (var i = 5; i < num; i += 5) { 10 | multiples[i] = true; 11 | } 12 | var sum = 0; 13 | for (var i in multiples) { 14 | sum += multiples[i] ? parseInt(i) : 0; 15 | } 16 | return sum; 17 | } 18 | -------------------------------------------------------------------------------- /Medium Difficulty/threeFiveMultiples2.js: -------------------------------------------------------------------------------- 1 | // Coderbyte solution to Three Five Multiples 2 | // splashinn 3 | 4 | function ThreeFiveMultiples(num) { 5 | var sum=0; 6 | for (var i=3;i(num - 1) 4 ->(num - 1) 3 ->(num - 1) 2 ->(num === 1) 1 === 120 21 | */ 22 | 23 | function FirstFactorial(num) { 24 | if (num <= 1) { 25 | return 1; 26 | } 27 | return num * FirstFactorial(num - 1); 28 | } 29 | 30 | // Steps located to the right of code. 31 | 32 | function LongestWord(sen) { 33 | var words = sen.split(' '); // Split the user-inputted sentence into words 34 | var counter = 0; // Create a counter to keep track of the # of letters in a word 35 | var poleposcount = 0; // Create a pole position counter to keep track of the # of letters the longest word has 36 | var poleposword = ''; // Create an empty string to store the longest word 37 | for (var i = 0; i < words.length; i++){ // Create a FOR LOOP to run thru each word in the sentence. FOR EACH word... 38 | var sideword = words[i]; // Store the current word in a side variable for later use 39 | for (var j = 0; j < sideword.length; j++){ // Create another FOR LOOP to run thru each character in the current side word. FOR EACH character... 40 | if (sideword[j] >= 'a' && sideword[j] <= 'z'){ // So long as the character is a letter... 41 | counter += 1; // -> Add 1 to the counter (this counts the # of letters in the current side word) 42 | } 43 | if (counter > poleposcount){ // After running thru each letter, if the counter (# of letters in the current word) is greater than the pole position counter (# of letters in the longest word)... 44 | poleposcount = counter; // -> Assign the counter as the new pole position counter (the current value for the counter becomes the value of the pole position counter) 45 | poleposword = sideword; // -> Assign the current side word as the pole position word aka the current word becomes the current longest word (so far at least) 46 | } 47 | } 48 | counter = 0; // Reset the counter at the end of the 1st FOR-LOOP 49 | } 50 | return poleposword; // Return the longest word 51 | } 52 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## coderbyte 2 | - JavaScript solutions to Coderbyte problems. 3 | - Almost all solutions are posted here for the JavaScript problems. 4 | 5 | ## Contributing 6 | - Feel free to fork and add your own solutions! 7 | -------------------------------------------------------------------------------- /Ruby Solutions/Easy/AB_check.rb: -------------------------------------------------------------------------------- 1 | # AB_check.rb 2 | # splashinn 3 | 4 | #Determine if two characters are separated a specific way in the string - return true if characters a and b are separated by exactly 3 places. 5 | def abCheck(str) 6 | return false if(str.include?('a') == false || str.include?('b') == false || str.rindex('b') < str.rindex('a')) 7 | return str.rindex('b') - str.rindex('a') == 4 8 | 9 | end 10 | 11 | p abCheck("bzzza") #false 12 | p abCheck("after badly") #false 13 | p abCheck("Laura sobs") #true 14 | p abCheck("aaaaddddd") #false -------------------------------------------------------------------------------- /Ruby Solutions/Easy/alphabet_soup.rb: -------------------------------------------------------------------------------- 1 | # alphabet_soup.rb 2 | # splashinn 3 | 4 | #sort characters in a string 5 | def alphabetSoup(str) 6 | return str.split('').sort().join('') 7 | end 8 | 9 | p alphabetSoup("coderbyte") -------------------------------------------------------------------------------- /convertKPHMPH.js: -------------------------------------------------------------------------------- 1 | // kph to mph 2 | 3 | function convert(speed) { 4 | return speed/1.609344; 5 | } 6 | console.log(convert()); 7 | 8 | // mph to kph 9 | 10 | function convert2(speed) { 11 | return speed * 1.609344; 12 | } 13 | console.log(convert()); 14 | --------------------------------------------------------------------------------