{ "name": "Basic Algorithm Scripting", "order": 0.006, "challenges": [ { "id": "bd7139d8c441eddfaeb5bdef", "name": "Waypoint: Pair Program on Bonfires", "dashedName": "waypoint-pair-program-on-bonfires", "difficulty": 0.44, "challengeSeed": [ "119657641" ], "description": [ "Please note that the video for this challenge is a little outdated, and doesn't perfectly match these steps. We plan to record a new video soon.", "OK, we're finally ready to start pair programming!", "Pair Programming is where two people code together on the same computer. It is an efficient way to collaborate, and widely practiced at software companies. Pair Programming is one of the core concepts of \"Agile\" Software Development, which you will hear more about later.", "Many people use Skype or Google Hangouts to pair program, but if you talk with professional software engineers, they will tell you that it's not really pair programming unless both people have the ability to use the keyboard and mouse.", "The most popular tool for pair programming is Screenhero. You can download Screenhero for Mac or Windows. Create your new user account from within the app.", "We have a special chat room for people ready to pair program. Go to our LetsPair chatroom on Gitter and type \"Hello Pair Programmers!\"", "If someone is available, they will be your \"pair\" - the person you pair programming with.", "If no one gets back to you in the first few minutes, don't worry. There will be lots of opportunities to pair program in the future.", "If someone does get back to you, private message them and ask for the email address they used to register Screenhero.", "Add them as a new contact in Screenhero, then click the monitor-looking button to attempt to share your screen with them.", "Once the Screenhero session starts, your screen's margins will glow orange. You are now sharing your screen.", "Your pair will have their own cursor, and will be able to type text on his or her keyboard.", "Now it's time to tackle our Bonfires. You can begin them by advancing to the next challenge.", "Once you you finish pair programming, end the session in Screenhero session.", "Congratulations! You have completed your first pair programming session.", "Pair program as much as possible with different campers until you've completed all the Bonfire challenges. This is a big time investment, but the JavaScript practice you get will be well worth it!", "Mark this Waypoint complete and move on." ], "challengeType": 2, "tests": [], "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "ad7123c8c441eddfaeb5bdef", "name": "Bonfire: Meet Bonfire", "dashedName": "bonfire-meet-bonfire", "difficulty": "0", "description": [ "Your goal is to fix the failing test.", "First, run all the tests by clicking \"Run code\" or by pressing Control + Enter.", "The failing test is in red. Fix the code so that all tests pass. Then you can move on to the next Bonfire.", "Make this function return true no matter what." ], "tests": [ "expect(meetBonfire()).to.be.a(\"boolean\");", "expect(meetBonfire()).to.be.true;" ], "challengeSeed": [ "function meetBonfire(argument) {", " // Good luck!", " console.log(\"you can read this function's argument in the developer tools\", argument);", "", " return false;", "}", "", "", "", "meetBonfire(\"You can do this!\");" ], "challengeType": 5, "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "a202eed8fc186c8434cb6d61", "name": "Bonfire: Reverse a String", "dashedName": "bonfire-reverse-a-string", "difficulty": "1.01", "tests": [ "expect(reverseString('hello')).to.be.a('String');", "expect(reverseString('hello')).to.equal('olleh');", "expect(reverseString('Howdy')).to.equal('ydwoH');", "expect(reverseString('Greetings from Earth')).to.equal('htraE morf sgniteerG');" ], "description": [ "Reverse the provided string.", "You may need to turn the string into an array before you can reverse it.", "Your result must be a string.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], "challengeSeed": [ "function reverseString(str) {", " return str;", "}", "", "reverseString('hello');" ], "MDNlinks": [ "Global String Object", "String.split()", "Array.reverse()", "Array.join()" ], "challengeType": 5, "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "a302f7aae1aa3152a5b413bc", "name": "Bonfire: Factorialize a Number", "dashedName": "bonfire-factorialize-a-number", "tests": [ "expect(factorialize(5)).to.be.a(\"Number\");", "expect(factorialize(5)).to.equal(120);", "expect(factorialize(10)).to.equal(3628800);", "expect(factorialize(20)).to.equal(2432902008176640000);" ], "difficulty": "1.02", "description": [ "Return the factorial of the provided integer.", "If the integer is represented with the letter n, a factorial is the product of all positive integers less than or equal to n.", "Factorials are often represented with the shorthand notation n!", "For example: 5! = 1 * 2 * 3 * 4 * 5 = 120f", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], "challengeSeed": [ "function factorialize(num) {", " return num;", "}", "", "factorialize(5);" ], "MDNlinks": [ "Arithmetic Operators" ], "challengeType": 5, "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "aaa48de84e1ecc7c742e1124", "name": "Bonfire: Check for Palindromes", "dashedName": "bonfire-check-for-palindromes", "difficulty": "1.03", "description": [ "Return true if the given string is a palindrome. Otherwise, return false.", "A palindrome is a word or sentence that's spelled the same way both forward and backward, ignoring punctuation, case, and spacing.", "You'll need to remove punctuation and turn everything lower case in order to check for palindromes.", "We'll pass strings with varying formats, such as \"racecar\", \"RaceCar\", and \"race CAR\" among others.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], "tests": [ "expect(palindrome(\"eye\")).to.be.a(\"boolean\");", "assert.deepEqual(palindrome(\"eye\"), true);", "assert.deepEqual(palindrome(\"race car\"), true);", "assert.deepEqual(palindrome(\"not a palindrome\"), false);", "assert.deepEqual(palindrome(\"A man, a plan, a canal. Panama\"), true);", "assert.deepEqual(palindrome(\"never odd or even\"), true);", "assert.deepEqual(palindrome(\"nope\"), false);", "assert.deepEqual(palindrome(\"almostomla\"), false);" ], "challengeSeed": [ "function palindrome(str) {", " // Good luck!", " return true;", "}", "", "", "", "palindrome(\"eye\");" ], "MDNlinks": [ "String.replace()", "String.toLowerCase()" ], "challengeType": 5, "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "a26cbbe9ad8655a977e1ceb5", "name": "Bonfire: Find the Longest Word in a String", "dashedName": "bonfire-find-the-longest-word-in-a-string", "difficulty": "1.04", "description": [ "Return the length of the longest word in the provided sentence.", "Your response should be a number.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], "challengeSeed": [ "function findLongestWord(str) {", " return str.length;", "}", "", "findLongestWord('The quick brown fox jumped over the lazy dog');" ], "tests": [ "expect(findLongestWord('The quick brown fox jumped over the lazy dog')).to.be.a('Number');", "expect(findLongestWord('The quick brown fox jumped over the lazy dog')).to.equal(6);", "expect(findLongestWord('May the force be with you')).to.equal(5);", "expect(findLongestWord('Google do a barrel roll')).to.equal(6);", "expect(findLongestWord('What is the average airspeed velocity of an unladen swallow')).to.equal(8);" ], "MDNlinks": [ "String.split()", "String.length" ], "challengeType": 5, "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "ab6137d4e35944e21037b769", "name": "Bonfire: Title Case a Sentence", "dashedName": "bonfire-title-case-a-sentence", "difficulty": "1.05", "description": [ "Return the provided string with the first letter of each word capitalized.", "For the purpose of this exercise, you should also capitalize connecting words like 'the' and 'of'.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], "challengeSeed": [ "function titleCase(str) {", " return str;", "}", "", "titleCase(\"I'm a little tea pot\");" ], "tests": [ "expect(titleCase(\"I'm a little tea pot\")).to.be.a('String');", "expect(titleCase(\"I'm a little tea pot\")).to.equal(\"I'm A Little Tea Pot\");", "expect(titleCase(\"sHoRt AnD sToUt\")).to.equal(\"Short And Stout\");", "expect(titleCase(\"HERE IS MY HANDLE HERE IS MY SPOUT\")).to.equal(\"Here Is My Handle Here Is My Spout\");" ], "MDNlinks": [ "String.charAt()" ], "challengeType": 5, "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "a789b3483989747d63b0e427", "name": "Bonfire: Return Largest Numbers in Arrays", "dashedName": "bonfire-return-largest-numbers-in-arrays", "difficulty": "1.06", "description": [ "Return an array consisting of the largest number from each provided sub-array. For simplicity, the provided array will contain exactly 4 sub-arrays.", "Remember, you can iterate through an array with a simple for loop, and access each member with array syntax arr[i] .", "If you are writing your own Chai.js tests, be sure to use a deep equal statement instead of an equal statement when comparing arrays.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], "challengeSeed": [ "function largestOfFour(arr) {", " // You can do this!", " return arr;", "}", "", "largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);" ], "tests": [ "expect(largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]])).to.be.a('array');", "(largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]])).should.eql([27,5,39,1001]);", "assert(largestOfFour([[4, 9, 1, 3], [13, 35, 18, 26], [32, 35, 97, 39], [1000000, 1001, 857, 1]]).should.eql([9,35,97,1000000]));" ], "MDNlinks": [ "Comparison Operators" ], "challengeType": 5, "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "acda2fb1324d9b0fa741e6b5", "name": "Bonfire: Confirm the Ending", "dashedName": "bonfire-confirm-the-ending", "difficulty": "1.07", "description": [ "Check if a string (first argument) ends with the given target string (second argument).", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], "challengeSeed": [ "function end(str, target) {", " // \"Never give up and good luck will find you.\"", " // -- Falcor", " return str;", "}", "", "end('Bastian', 'n');" ], "tests": [ "assert.strictEqual(end('Bastian', 'n'), true, 'should equal true if target equals end of string');", "assert.strictEqual(end('Connor', 'n'), false, 'should equal false if target does not equal end of string');", "assert.strictEqual(end('Walking on water and developing software from a specification are easy if both are frozen.', 'specification'), false, 'should equal false if target does not equal end of string');", "assert.strictEqual(end('He has to give me a new name', 'name'), true, 'should equal true if target equals end of string');", "assert.strictEqual(end('If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing', 'mountain'), false, 'should equal false if target does not equal end of string');" ], "MDNlinks": [ "String.substr()" ], "challengeType": 5, "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "afcc8d540bea9ea2669306b6", "name": "Bonfire: Repeat a string repeat a string", "dashedName": "bonfire-repeat-a-string-repeat-a-string", "difficulty": "1.08", "description": [ "Repeat a given string (first argument) n times (second argument). Return an empty string if n is a negative number.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], "challengeSeed": [ "function repeat(str, num) {", " // repeat after me", " return str;", "}", "", "repeat('abc', 3);" ], "tests": [ "assert.strictEqual(repeat('*', 3), '***', 'should repeat a string n times');", "assert.strictEqual(repeat('abc', 3), 'abcabcabc', 'should repeat a string n times');", "assert.strictEqual(repeat('abc', -2), '', 'should return an empty string for negative numbers');" ], "MDNlinks": [ "Global String Object" ], "challengeType": 5, "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "ac6993d51946422351508a41", "name": "Bonfire: Truncate a string", "dashedName": "bonfire-truncate-a-string", "difficulty": "1.09", "description": [ "Truncate a string (first argument) if it is longer than the given maximum string length (second argument). Return the truncated string with a '...' ending.", "Note that the three dots at the end add to the string length.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], "challengeSeed": [ "function truncate(str, num) {", " // Clear out that junk in your trunk", " return str;", "}", "", "truncate('A-tisket a-tasket A green and yellow basket', 11);" ], "tests": [ "expect(truncate('A-tisket a-tasket A green and yellow basket', 11)).to.eqls('A-tisket...');", "expect(truncate('Peter Piper picked a peck of pickled peppers', 14)).to.eqls('Peter Piper...');", "assert(truncate('A-tisket a-tasket A green and yellow basket', 'A-tisket a-tasket A green and yellow basket'.length) === 'A-tisket a-tasket A green and yellow basket', 'should not truncate if string is = length');", "assert.strictEqual(truncate('A-tisket a-tasket A green and yellow basket', 'A-tisket a-tasket A green and yellow basket'.length + 2), 'A-tisket a-tasket A green and yellow basket', 'should not truncate if string is < length');" ], "MDNlinks": [ "String.slice()" ], "challengeType": 5, "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "a9bd25c716030ec90084d8a1", "name": "Bonfire: Chunky Monkey", "dashedName": "bonfire-chunky-monkey", "difficulty": "1.10", "description": [ "Write a function that splits an array (first argument) into groups the length of size (second argument) and returns them as a multidimensional array.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], "challengeSeed": [ "function chunk(arr, size) {", " // Break it up.", " return arr;", "}", "", "chunk(['a', 'b', 'c', 'd'], 2);" ], "tests": [ "assert.deepEqual(chunk(['a', 'b', 'c', 'd'], 2), [['a', 'b'], ['c', 'd']], 'should return chunked arrays');", "assert.deepEqual(chunk([0, 1, 2, 3, 4, 5], 3), [[0, 1, 2], [3, 4, 5]], 'should return chunked arrays');", "assert.deepEqual(chunk([0, 1, 2, 3, 4, 5], 2), [[0, 1], [2, 3], [4, 5]], 'should return chunked arrays');", "assert.deepEqual(chunk([0, 1, 2, 3, 4, 5], 4), [[0, 1, 2, 3], [4, 5]], 'should return the last chunk as remaining elements');" ], "MDNlinks": [ "Array.push()" ], "challengeType": 5, "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "ab31c21b530c0dafa9e241ee", "name": "Bonfire: Slasher Flick", "dashedName": "bonfire-slasher-flick", "difficulty": "1.11", "description": [ "Return the remaining elements of an array after chopping off n elements from the head.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], "challengeSeed": [ "function slasher(arr, howMany) {", " // it doesn't always pay to be first", " return arr;", "}", "", "slasher([1, 2, 3], 2);" ], "tests": [ "assert.deepEqual(slasher([1, 2, 3], 2), [3], 'should drop the first two elements');", "assert.deepEqual(slasher([1, 2, 3], 0), [1, 2, 3], 'should return all elements when n < 1');", "assert.deepEqual(slasher([1, 2, 3], 9), [], 'should return an empty array when n >= array.length');" ], "MDNlinks": [ "Array.slice()", "Array.splice()" ], "challengeType": 5, "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "af2170cad53daa0770fabdea", "name": "Bonfire: Mutations", "dashedName": "bonfire-mutations", "difficulty": "1.12", "description": [ "Return true if the string in the first element of the array contains all of the letters of the string in the second element of the array.", "For example, ['hello', 'Hello'], should return true because all of the letters in the second string are present in the first, ignoring case.", "The arguments ['hello', 'hey'] should return false because the string 'hello' does not contain a 'y'.", "Lastly, ['Alien', 'line'], should return true because all of the letters in 'line' are present in 'Alien'.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], "challengeSeed": [ "function mutation(arr) {", " return arr;", "}", "", "mutation(['hello', 'hey']);" ], "tests": [ "expect(mutation(['hello', 'hey'])).to.be.false;", "expect(mutation(['hello', 'Hello'])).to.be.true;", "expect(mutation(['zyxwvutsrqponmlkjihgfedcba', 'qrstu'])).to.be.true;", "expect(mutation(['Mary', 'Army'])).to.be.true;", "expect(mutation(['Mary', 'Aarmy'])).to.be.true;", "expect(mutation(['Alien', 'line'])).to.be.true;", "expect(mutation(['floor', 'for'])).to.be.true;" ], "MDNlinks": [ "Array.indexOf()" ], "challengeType": 5, "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "adf08ec01beb4f99fc7a68f2", "name": "Bonfire: Falsey Bouncer", "dashedName": "bonfire-falsey-bouncer", "difficulty": "1.50", "description": [ "Remove all falsey values from an array.", "Falsey values in javascript are false, null, 0, \"\", undefined, and NaN.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], "challengeSeed": [ "function bouncer(arr) {", " // Don't show a false ID to this bouncer.", " return arr;", "}", "", "bouncer([7, 'ate', '', false, 9]);" ], "tests": [ "assert.deepEqual(bouncer([7, 'ate', '', false, 9]), [7, 'ate', 9], 'should remove falsey values');", "assert.deepEqual(bouncer(['a', 'b', 'c']), ['a', 'b', 'c'], 'should return full array if no falsey elements');", "assert.deepEqual(bouncer([false, null, 0]), [], 'should return empty array if all elements are falsey');" ], "MDNlinks": [ "Boolean Objects", "Array.filter()" ], "challengeType": 5, "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "a8e512fbe388ac2f9198f0fa", "name": "Bonfire: Where art thou", "dashedName": "bonfire-where-art-thou", "difficulty": "1.55", "description": [ "Make a function that looks through an array (first argument) and returns an array of all objects that have equivalent property values (second argument).", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], "challengeSeed": [ "function where(collection, source) {", " var arr = [];", " // What's in a name?", " return arr;", "}", "", "where([{ first: 'Romeo', last: 'Montague' }, { first: 'Mercutio', last: null }, { first: 'Tybalt', last: 'Capulet' }], { last: 'Capulet' });" ], "tests": [ "assert.deepEqual(where([{ first: 'Romeo', last: 'Montague' }, { first: 'Mercutio', last: null }, { first: 'Tybalt', last: 'Capulet' }], { last: 'Capulet' }), [{ first: 'Tybalt', last: 'Capulet' }], 'should return an array of objects');", "assert.deepEqual(where([{ 'a': 1 }, { 'a': 1 }, { 'a': 1, 'b': 2 }], { 'a': 1 }), [{ 'a': 1 }, { 'a': 1 }, { 'a': 1, 'b': 2 }], 'should return with multiples');" ], "MDNlinks": [ "Global Object", "Object.hasOwnProperty()", "Object.keys()" ], "challengeType": 5, "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "a39963a4c10bc8b4d4f06d7e", "name": "Bonfire: Seek and Destroy", "dashedName": "bonfire-seek-and-destroy", "difficulty": "1.60", "description": [ "You will be provided with an initial array (the first argument in the destroyer function), followed by one or more arguments. Remove all elements from the initial array that are of the same value as these arguments.", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], "challengeSeed": [ "function destroyer(arr) {", " // Remove all the values", " return arr;", "}", "", "destroyer([1, 2, 3, 1, 2, 3], 2, 3);" ], "tests": [ "assert.deepEqual(destroyer([1, 2, 3, 1, 2, 3], 2, 3), [1, 1], 'should remove correct values from an array');", "assert.deepEqual(destroyer([1, 2, 3, 5, 1, 2, 3], 2, 3), [1, 5, 1], 'should remove correct values from an array');", "assert.deepEqual(destroyer([3, 5, 1, 2, 2], 2, 3, 5), [1], 'should accept more than two additional arguments');", "assert.deepEqual(destroyer([2, 3, 2, 3], 2, 3), [], 'should remove correct values from an array');", "assert.deepEqual(destroyer(['tree', 'hamburger', 53], 'tree', 53), ['hamburger'], 'should handle NaN-elements');" ], "MDNlinks": [ "Arguments object", "Array.filter()" ], "challengeType": 5, "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] }, { "id": "a24c1a4622e3c05097f71d67", "name": "Bonfire: Where do I belong", "dashedName": "bonfire-where-do-i-belong", "difficulty": "1.61", "description": [ "Return the lowest index at which a value (second argument) should be inserted into a sorted array (first argument).", "For example, where([1,2,3,4], 1.5) should return 1 because it is greater than 1 (0th index), but less than 2 (1st index).", "Remember to use RSAP if you get stuck. Try to pair program. Write your own code." ], "challengeSeed": [ "function where(arr, num) {", " // Find my place in this sorted array.", " return num;", "}", "", "where([40, 60], 50);" ], "MDNlinks": [ "Array.sort()" ], "tests": [ "expect(where([10, 20, 30, 40, 50], 35)).to.equal(3);", "expect(where([10, 20, 30, 40, 50], 30)).to.equal(2);" ], "challengeType": 5, "nameCn": "", "descriptionCn": [], "nameFr": "", "descriptionFr": [], "nameRu": "", "descriptionRu": [], "nameEs": "", "descriptionEs": [], "namePt": "", "descriptionPt": [] } ] }