"
- ],
- "answer": 2,
- "explanation": "The map function takes a callback function as it's first parameter and applies that function against every value inside the array. In this example, our callback function is the Math.floor function which will truncate the decimal points of all the numbers and convert them to integers."
- },
- {
- "subtitle": "Custom Map Functions",
- "question": "What will the following code print out?\n
"
- ],
- "answer": 0,
- "explanation": "The map function will return a new array with each element equal to the old element ran through a callback function. Our callback function takes our original element, changes it to a upper case, and then wraps it in an array; thus, leaving us with [['A'], ['B'], ['C']]"
- },
- {
- "subtitle": "Maps on Maps",
- "question": "What will the following code print out?\n
"
- ],
- "answer": 3,
- "explanation": "This answer can be explained by first looking at the example of what happens with the first element in our array, [4, 1]. Our first map callback will run a mod 2 map function over [4, 1] leaving us with a new array of [0, 1]. The second map call which is inside our callback will subtract 1 from every element, leaving us with [3, 0]. Last, we take element at index 0, 0, and add it to element of index 1 from our second map function, 0, leaving us with 0; thus, after the first iteration of the top level map function, we are left with an array that looks like so: [1, [2, 0], [3, 3]]. We simply keep doing that logic for the other elements until we finish: [1, -1, [3, 3]], and [1, -1, 3]"
- },
- {
- "subtitle": "Words Containing 'a'",
- "question": "What will the following code print out?\n
"
- ],
- "answer": 1,
- "explanation": "This map example will return an array where each elements of the new array is either the original array index when the element contains the character 'a'; otherwise, an element of null for any words that do not have the character 'a'."
- },
- {
- "subtitle": "Accessing the Original Array Elements",
- "question": "What will the following code print out?\n
"
- ],
- "answer": 3,
- "explanation": "This map example will add the value of the first element in the original array to all the other elements in the array."
- },
- {
- "subtitle": "More Map Hacking",
- "question": "What will the following code print out?\n
const results = [8, 5, 3]\n .map((a, i, o) => o[o.length - i - 1])\nconsole.log(results);
",
- "choices": [
- "
[3, 5, 8]
",
- "
[5, 3, 8]
",
- "
[8, 5, 3]
",
- "
[3, 8, 5]
"
- ],
- "answer": 0,
- "explanation": "This map example will reverse the array. The third argument to the map callback function is the original array; therefore, we can use the current index in the map function, and work our way backwards from the end of the array using the o.length."
- },
- {
- "subtitle": "Custom Scoping",
- "question": "What will the following code print out?\n
"
- ],
- "answer": 1,
- "explanation": "This map example will reverse the array. The third argument to the map callback function is the original array; therefore, we can use the current index in the map function, and work our way backwards from the end of the array using the o.length."
- },
- {
- "subtitle": "Reversing in Map, Just Because",
- "question": "What will the following code print out?\n
"
- ],
- "answer": 3,
- "explanation": "This map example will reverse the array. The third argument to the map callback function is the original array; therefore, we can use the current index in the map function, and work our way backwards from the end of the array using the o.length."
- }
- ],
- "tests": [],
- "challengeType": 8
- },
- {
- "id": "5a916843a9178457a6f1281f",
- "title": "General questions",
- "description": [
- {
- "subtitle": "Data structure stack",
- "question": "A stack data structure obeys the principles of Last in First Out (LIFO)? True or false.",
- "choices": [
- "
true
",
- "
false
"
- ],
- "answer": 0,
- "explanation": "true"
- },
- {
- "subtitle": "Sorting algorithm",
- "question": "Which of the following is not a common sorting algorithm?",
- "choices": [
- "
Bubble Sort
",
- "
QuickSort
",
- "
HeapSort
",
- "
Branch Sort
"
- ],
- "answer": 3,
- "explanation": "Branch sort is not a sorting algorithm"
- },
- {
- "subtitle": "Persistent storage",
- "question": "CRUD operation stand for ?",
- "choices": [
- "
Create, Read, Update, Delete
",
- "
Copy, Reduce, Update, Define
",
- "
Create, Rich, Unique, Document
",
- "
Cancel, Reduce, Unify, Dispose
"
- ],
- "answer": 0,
- "explanation": "CRUD stands for Create - Read - Update and Delete and are the four basic operations of persistent storage"
- },
- {
- "subtitle": "Numeric types",
- "question": "Match the correct numeric types to their correct size.",
- "choices": [
- "
Byte - 8 bits, long - 64 bits,int - 32 bits, short - 16 bits.
",
- "
Byte - 8 bits, long - 32 bits ,int - 64 bits, short - 16 bits.
",
- "
Byte - 8 bits, long - 16 bits ,int - 32 bits, short - 64 bits.
",
- "
Byte - 32 bits, long - 8 bits ,int - 64 bits, short - 16 bits.
"
- ],
- "answer": 0,
- "explanation": "byte 8 bits, short 16 bits, int 32 bits, long 64 bits."
- },
- {
- "subtitle": "Software architecture pattern",
- "question": "The MVC software architectural pattern stands for ?",
- "choices": [
- "
MeanStack - View - Class
",
- "
Modal - Vector - Control
",
- "
Model - View - Controller
",
- "
Mapped - Volume - Content
"
- ],
- "answer": 2,
- "explanation": "The MVC pattern is used to keep separate three main components of an application, the idea being for example the data or 'Model' does not need to know what the 'View' or presentation of that data is doing and vice versa, with the 'Controller' handling any logic or input from the user to manipulate the 'Model'."
- },
- {
- "subtitle": "XPath navigation",
- "question": "The XPath syntax is used to traverse data stored in which format?",
- "choices": [
- "
XML
",
- "
JSON
",
- "
Xtend
",
- "
Text
"
- ],
- "answer": 0,
- "explanation": "is used to navigate nodes and attributes within an XML document and stands for XML Path Language."
- },
- {
- "subtitle": "Functions and side effects",
- "question": "If a function is said to have side-effects it is expected to ?",
- "choices": [
- "
Only return after an enclosed inner function has returned
",
- "
Contain 'Blocking' code which can affect the stability of the program
",
- "
Modify some kind of state outside of its own scope such as a global variable or change the value of its own arguments.
",
- "
Have high algorithm complexity.
"
- ],
- "answer": 2,
- "explanation": "Other charateristics of side-effects would be writing data to the log, interacting with users or systems on the same network and calling other functions with side-effects."
- },
- {
- "subtitle": "Time-Complexity",
- "question": "The term 'Time-Complexity' relates to ?",
- "choices": [
- "
HTTP requests
",
- "
Algorithms
",
- "
Inheritance
",
- "
Consuming API's
"
- ],
- "answer": 1,
- "explanation": "Algorithm Time-Complexity is the total amount of time needed for an algorithm to run till full completion and is more often expressed with 'big-O-notation'."
- },
- {
- "subtitle": "Find the odd",
- "question": "Which of the following programming languages is the odd one out ?",
- "choices": [
- "
C#
",
- "
Java
",
- "
Cobol
",
- "
PHP
"
- ],
- "answer": 3,
- "explanation": "PHP is generally referred to as an interpreted language where as the other three are considered languages generally processed by compilers."
- },
- {
- "subtitle": "Find the odd, again",
- "question": "Which in the following list is the odd one out ?",
- "choices": [
- "
Boolean
",
- "
Character
",
- "
Array
",
- "
Null
"
- ],
- "answer": 2,
- "explanation": "An array in most languages is considered an object where as the other three are primitive data types."
- },
- {
- "subtitle": "Programming language paradigms",
- "question": "Object-oriented and Functional are said to be programming language paradigms. Which of the following isn't a language paradigm?"
- "choices": [
- "
Procedural
",
- "
Imperative
",
- "
Declarative
",
- "
Instance
"
- ],
- "answer": 3,
- "explanation": "Instance is not a recognized programming paradigm."
- },
- {
- "subtitle": "UML",
- "question": "UML or Universal Modeling Language is a language created for ?",
- "choices": [
- "
Creating database schemas.
",
- "
Software visualization using diagrams.
",
- "
Simplifying multi language software applications.
",
- "
Integration of cross-platform systems on one network.
"
- ],
- "answer": 1,
- "explanation": "UML is used for software modeling in diagram form including Class diagrams, Object diagrams and Use case diagrams among others."
- }
- ],
- "tests": [],
- "challengeType": 8
- },
- {
- "id": "5a91690fa9178457a6f12820",
- "title": "CSS questions part 1",
- "description": [
- {
- "subtitle": "Element properties",
- "question": "Which properties do inline elements not possess under normal document flow?",
- "choices": [
- "
overflow, left or right margins
",
- "
border-radius, z-index
",
- "
font-size, animation
",
- "
width, top or bottom margins
"
- ],
- "answer": 3,
- "explanation": "An inline element will only take up the width of the inner content."
- },
- {
- "subtitle": "CSS rules",
- "question": "What will the following css rule select?\n
.test > div {\n...\n}
",
- "choices": [
- "
Selects all divs within elements with the class of test.
",
- "
Selects all divs outside of elements with the class of test.
",
- "
Selects only divs that are immediate children of elements with the class of test.
\n\nWould target only the elements with a class of 'box' as these are the direct children of 'test'."
- },
- {
- "subtitle": "Overriding properties",
- "question": "Which keyword would you add to the end of a style rule to override another Css style for a specific element ?",
- "choices": [
- "
*override
",
- "
*overrideAll
",
- "
!vital
",
- "
!important
"
- ],
- "answer": 3,
- "explanation": "For example if you wanted all the paragraph tags in a specific class to have the colour blue instead of black\n
.myClass p {\ncolor: blue !important\n}
"
- },
- {
- "subtitle": "Preprocessor CSS",
- "question": "Which is not considered a CSS preprocessor?",
- "choices": [
- "
Less
",
- "
Sass
",
- "
Stylus
",
- "
Express
"
- ],
- "answer": 3,
- "explanation": "Express is an application framework for Node.js"
- },
- {
- "subtitle": "CSS Box Model",
- "question": "Which is not a property of the CSS 'Box Model'?",
- "choices": [
- "
Border
",
- "
Padding
",
- "
Margin
",
- "
Outline
"
- ],
- "answer": 3,
- "explanation": "Content is the fourth property of the box model not outline."
- },
- {
- "subtitle": "CSS positioning",
- "question": "Absolute positioning in CSS removes an element from the normal document flow. True or false?",
- "choices": [
- "
true
",
- "
false
"
- ],
- "answer": 0,
- "explanation": "Giving an element absolute positioning removes it from the normal document flow completely allowing positioning attributes top, left, bottom."
- },
- {
- "subtitle": "CSS selector",
- "question": "With this CSS Selector it is possible to select every element in a document.",
- "choices": [
- "
Body
",
- "
Universal
",
- "
Wildcard
",
- "
SelectAll
"
- ],
- "answer": 1,
- "explanation": "The Universal selector will select every element on a page and is denoted by *{}. note: The rule of specificity still applies, so a more specific selector can override the universal selector in a Css document."
- },
- {
- "subtitle": "Font size in CSS",
- "question": "Which is not a valid CSS font size?",
- "choices": [
- "
em
",
- "
%
",
- "
tp
",
- "
px
"
- ],
- "answer": 2,
- "explanation": "tp is not valid this should be pt."
- },
- {
- "subtitle": "CSS clear property",
- "question": "The CSS 'clear' property fulfills which task?",
- "choices": [
- "
Allows transparency of an element.
",
- "
Prevents prior properties of the selector from taking effect.
",
- "
Positions an element clear of a siblings margins and borders.
",
- "
Sets which sides of an element floating elements are not allowed to be floated.
"
- ],
- "answer": 3,
- "explanation": "The clear property has the following values available: both, left, right, inherit, initial and none."
- },
- {
- "subtitle": "CSS sudo-class",
- "question": "An example of a sudo-class of a ul element written in CSS would be defined how?",
- "choices": [
- "
ul:first-child
",
- "
ul..first-child
",
- "
ul::first-child
",
- "
ul first-child
"
- ],
- "answer": 0,
- "explanation": "First answer : Would be correct of a sudo-class. Second answer : Would be an error of syntax. Third answer: The double colon would be an example of a sudo element used with the likes of ::before and ::after which are examples of content. Fourth answer : This would relate to html tag elements of which there is no first-child tag."
- }
- ],
- "tests": [],
- "challengeType": 8
- },
- {
- "id": "5a91a167a9178457a6f12821",
- "title": "CSS questions part 2",
- "description": [
- {
- "subtitle": "CSS selector",
- "question": "An entire CSS selector and declaration block whithin a CSS document eg: .container div p { position: relative; width: 300px; margin: auto; color: #ffffff; } is referred to as?",
- "choices": [
- "
Base-Block
",
- "
Selection Properties
",
- "
Selector Group
",
- "
Ruleset
"
- ],
- "answer": 3,
- "explanation": "The selectors name and properties are collectively called a Ruleset."
- },
- {
- "subtitle": "CSS Browser compatibility",
- "question": "Which is not a valid CSS prefix to ensure browser compatibility?",
- "choices": [
- "
-webkit-
",
- "
-win-
",
- "
-moz-
",
- "
-o-
"
- ],
- "answer": 1,
- "explanation": "-win- is incorrect, -webkit- (Chrome, Safari, ioS and modern versions of Opera), -moz- (Firefox), -o- (Older versions of Opera), the other would be -ms- used for (IE and Microsoft Edge)."
- },
- {
- "subtitle": "CSS 'text-transform' property",
- "question": "The CSS property 'text-transform' is mainly used for?",
- "choices": [
- "
Alteration of text letter case.
",
- "
Changing the alignment of text.
",
- "
Increase/Decrease font size.
",
- "
Transformation of font family.
"
- ],
- "answer": 0,
- "explanation": "The values for the property 'text-transform' are, capitalize, full-width, inherit, lowercase, none and uppercase."
- },
- {
- "subtitle": "CSS font-sizes",
- "question": "If the default font size for a page is 12px, What is the pixel equivalent of 1.5em?",
- "choices": [
- "
12.5px
",
- "
9px
",
- "
18px
",
- "
6px
"
- ],
- "answer": 2,
- "explanation": "1em is equivalent to the base or default font size therefore (12 * 1.5 = 18)."
- },
- {
- "subtitle": "CSS font weight",
- "question": "In CSS 'font-weight: bold;' is the same as?",
- "choices": [
- "
font-weight: 400;
",
- "
font-weight: 900
",
- "
font-weight: 700
",
- "
font-weight: 500
"
- ],
- "answer": 2,
- "explanation": "The keyword 'bold' is the same as the numerical value 700."
- },
- {
- "subtitle": "CSS ruleset",
- "question": "Given this ruleset .testDiv { width: 20%; height: 20%; content: 'add this text' } What would happen with the content properties text?",
- "choices": [
- "
Nothing
",
- "
Appended to any text contained in element with class of testDiv.
",
- "
Prepended to any text contained in element with class of testDiv.
",
- "
Overwrite any text contained in element with class of testDiv.
"
- ],
- "answer": 0,
- "explanation": "Nothing would appear on the page, the content property needs to be used with sudo elements like ::after or ::before eg: .testDiv { width: 20%; height: 20%;\n}\n.testDiv::after {\ncontent: 'add this text'\n}"
- },
- {
- "subtitle": "CSS match selector",
- "question": "What would the following CSS selector match? section + p",
- "choices": [
- "
All <section> and <p> tags.
",
- "
All <p> tags within a <section> tag.
",
- "
All <p> tags placed immediately after a <section> tag.
Only the second paragraph tag will be selected and matched."
- },
- {
- "subtitle": "How to incorporte CSS into web document",
- "question": "How many different ways is it possible to incorporate CSS into a web document?",
- "choices": [
- "
1
",
- "
2
",
- "
3
",
- "
4
"
- ],
- "answer": 2,
- "explanation": "Currently CSS can be used 'Inline' as a style attribute of an Html element, 'Embedded' in a style tag of a document and 'Imported' as an external file with the link tag element."
- },
- {
- "subtitle": "Using target in CSS",
- "question": "What would [role=contentinfo] {...} target in CSS?",
- "choices": [
- "
Any element with the role attribute of contentinfo.
",
- "
Any element within a <span> tag.
",
- "
Any element within a <span> tag with the role attribute of contentinfo.
",
- "
This would only be valid using Sass or Scss.
"
- ],
- "answer": 0,
- "explanation": "The square bracket notation is used to target elements with specific attributes."
- },
- {
- "subtitle": "CSS positioning",
- "question": "Which is not a value for 'position' in CSS?",
- "choices": [
- "
Absolute
",
- "
Static
",
- "
Responsive
",
- "
inherit
"
- ],
- "answer": 2,
- "explanation": "There is no such positioning as responsive, currently there is (absolute, fixed, inherit, relative and static)."
- }
- ],
- "tests": [],
- "challengeType": 8
- },
- {
- "id": "5a91b5bfa9178457a6f12822",
- "title": "Javascript questions part 1",
- "description": [
- {
- "subtitle": "JavaScript Array method",
- "question": "which of the following is not an Array method?",
- "choices": [
- "
pop()
",
- "
unshift()
",
- "
split()
",
- "
every()
"
- ],
- "answer": 2,
- "explanation": "split() is a string method pop() removes from the end of an array unshift() adds to the front of an array and every() returns a true or false value for each element in an array."
- },
- {
- "subtitle": "JavaScript ES6 feature",
- "question": "ES6 Arrow functions written on one line require no return statement.",
- "choices": [
- "
True
",
- "
False
"
- ],
- "answer": 0,
- "explanation": "True"
- },
- {
- "subtitle": "JavaScript strict syntax",
- "question": "Where is the correct place to insert the \"use strict\" expression.",
- "choices": [
- "
Before declaring a variable
",
- "
At the start of a script or function
",
- "
It is used inline within an HTML element
",
- "
Within a Css selector
"
- ],
- "answer": 1,
- "explanation": "The \"use strict\"; expression should be placed at the start of a script for global scope or\nwithin a function for local scope."
- },
- {
- "subtitle": "JavaScript equality",
- "question": "The following code will output? const x = '7' const y = 7 console.log(x == y)",
- "choices": [
- "
true
",
- "
false
",
- "
NaN
",
- "
undefined
"
- ],
- "answer": 0,
- "explanation": "true, if triple equals '===' was used it would then evaluate to false."
- },
- {
- "subtitle": "JavaScript modules",
- "question": "In which of the following can you expect to see the require() function?",
- "choices": [
- "
Vanilla Javascript
",
- "
React.js
",
- "
Node.js
",
- "
jQuery
"
- ],
- "answer": 2,
- "explanation": "require() is built into Node.js in order to load modules for use with an application."
- },
- {
- "subtitle": "JavaScript recursive methods",
- "question": "What is the main function or job of a 'base case' in a typical recursive method ?",
- "choices": [
- "
To reduce the algorithm complexity of the function.
",
- "
To terminate the recursion.
",
- "
To keep track of each invocation of the function on the stack.
",
- "
To return null.
"
- ],
- "answer": 1,
- "explanation": "To allow the recursive function to terminate and inititate the popping off of the stack of each function call pushed upon it."
- },
- {
- "subtitle": "JavaScript framework",
- "question": "In which Javascript framework will you find the ng style of attributes?",
- "choices": [
- "
jQuery
",
- "
React
",
- "
Angular
",
- "
Ember
"
- ],
- "answer": 2,
- "explanation": "The ng- style prefix is used to denote an angularJS directive."
- },
- {
- "subtitle": "JavaScript syntax",
- "question": "The following code will return 24 true or false? function multiply(num1, num2) { return num1 * num2; } multiply(4,6)",
- "choices": [
- "
True
",
- "
False
"
- ],
- "answer": 1,
- "explanation": "The function will return undefined before it reaches the multiplication of the two arguments."
- },
- {
- "subtitle": "JavaScript callback",
- "question": "A callback function is also known as?",
- "choices": [
- "
Loopback function
",
- "
Higher-order function
",
- "
Recursive function
",
- "
Pure Function
"
- ],
- "answer": 1,
- "explanation": "Also Known as a Higher-order function a callback function can be passed to another function as a parameter and is called inside that function."
- },
- {
- "subtitle": "JavaScript syntax, again",
- "question": "Javascript is case sensitive true or false?",
- "choices": [
- "
true
",
- "
false
"
- ],
- "answer": 0,
- "explanation": "true"
- }
- ],
- "tests": [],
- "challengeType": 8
- },
- {
- "id": "5a92c913a9178457a6f12823",
- "title": "Javascript questions part 2",
- "description": [
- {
- "subtitle": "JavaScript pop up",
- "question": "Which is not a pop up box in JavaScript",
- "choices": [
- "
Confirm Box
",
- "
Alert Box
",
- "
Message Box
",
- "
Prompt Box
"
- ],
- "answer": 2,
- "explanation": "Message Box."
- },
- {
- "subtitle": "JavaScript Loops",
- "question": "Which of the following is not a looping format in javascript",
- "choices": [
- "
For
",
- "
While
",
- "
Next
",
- "
Do-While
"
- ],
- "answer": 2,
- "explanation": "Next is not a loop available in javascript."
- },
- {
- "subtitle": "JavaScript types",
- "question": "What is the result of the following code?\nconsole.log( 4 + 4 + \"2\" );",
- "choices": [
- "
\"82\"
",
- "
10
",
- "
82
",
- "
\"10\"
"
- ],
- "answer": 0,
- "explanation": "The first two integers will be added as normal then the string will be concatenated to the result of 8 giving \"82\"."
- },
- {
- "subtitle": "JavaScript types",
- "question": "What is the result of the following code?\nconsole.log( \"3\" + 6 + 6 );",
- "choices": [
- "
15
",
- "
\"15\"
",
- "
\"366\"
",
- "
366
"
- ],
- "answer": 2,
- "explanation": "As the equation begins with a string, each integer will be converted and appended in string form giving \"366\""
- },
- {
- "subtitle": "JavaScript Event loop",
- "question": "Which best describes the function of the Javascript event loop?",
- "choices": [
- "
To Handle synchronous code one line at a time in the main script.
",
- "
To remove any blocking functions accidentally pushed on to the call stack.
",
- "
To constantly monitor if the call stack is empty and then invoke any asynchronous functions from the event queue.
",
- "
A mechanism to best decide how to terminate any looping structure.
"
- ],
- "answer": 2,
- "explanation": "Briefly the event loop constantly runs to monitor state between the callstack, the event table and the event queue. When asynchronous code is executed it\nis placed on to the event table only to be executed as and when a specific event occurs, when it does it is then placed on the event queue until the call\nstack is empty then when invoked, moved from the queue to the callstack."
- },
- {
- "subtitle": "JavaSript type",
- "question": "console.log(typeof(NaN)) Will log?",
- "choices": [
- "
false
",
- "
null
",
- "
number
",
- "
undefined
"
- ],
- "answer": 2,
- "explanation": "Despite standing for Not a Number NaN is still regarded as a numeric type."
- },
- {
- "subtitle": "JavaScript ES6 operators",
- "question": "What will the following log? let x = 'teststring'; console.log([...x]);",
- "choices": [
- "
"
- ],
- "answer": 0,
- "explanation": "The spread syntax introduced in es6 can be used to iterate through each character of a string, and here stored in an array similar to calling x.split(\"\")"
- },
- {
- "subtitle": "ES6 let / const declarations",
- "question": "What will the following code log? function myFunction() { const a = 'variableA' if( 3 > 1) { let b = 'variableB' } console.log(a) console.log(b) } myFunction();",
- "choices": [
- "
variableA, variableB
",
- "
variableA
",
- "
variableB, variableA
",
- "
variableA, Uncaught ReferenceError: b is not defined
"
- ],
- "answer": 3,
- "explanation": "Due to the keywords let and const being block scoped rather than just locally function scoped like var, the variable b will be garbage collected after the\nconditional if statement has finished and will no longer exist for the console.log() method."
- },
- {
- "subtitle": "JavaSript function arguments",
- "question": "The following code will return? function getsum(num1 = 1, num2 = 1) { return num1 + num2; } getsum(3);",
- "choices": [
- "
4
",
- "
6
",
- "
2
",
- "
5
"
- ],
- "answer": 0,
- "explanation": "Due to only one argument being passed this will override the first default parameter giving num1 the value of 3 + num2 default value of 1.\nIf the function were to be executed without any arguments at all both defaults would be used and return 2."
- },
- {
- "subtitle": "JavaSript inheritance",
- "question": "All Javascript objects inherit properties and methods from a class true or false?",
- "choices": [
- "
true
",
- "
false
"
- ],
- "answer": 1,
- "explanation": "Due to only one argument being passed this will override the first default parameter giving num1 the value of 3 + num2 default value of 1.\nIf the function were to be executed without any arguments at all both defaults would be used and return 2."
- }
- ],
- "tests": [],
- "challengeType": 8
- },
- {
- "id": "5a933ce3a9178457a6f12824",
- "title": "Networking questions part 1",
- "description": [
- {
- "subtitle": "Address identification",
- "question": "00:26:2D:55:42:1f is an example of what?",
- "choices": [
- "
MAC Address
",
- "
IPv4 Address
",
- "
IPv6 Address
",
- "
A wireless protocol
"
- ],
- "answer": 0,
- "explanation": "A valid MAC Address."
- },
- {
- "subtitle": "OSI networking model",
- "question": "Which one of the following is not part of the seven layer OSI networking model.",
- "choices": [
- "
Application
",
- "
Presentation
",
- "
Session
",
- "
Protocol
",
- "
Network
",
- "
Data Link
",
- "
Physical
"
- ],
- "answer": 3,
- "explanation": "Protocol is not part of the OSI networking model layer 4 should be the transport layer."
- },
- {
- "subtitle": "RAID",
- "question": "In networking a RAID implementation relates to?",
- "choices": [
- "
Wireless standards
",
- "
Password policies
",
- "
Remote access
",
- "
Fault tolerance
"
- ],
- "answer": 3,
- "explanation": "RAID stands for Redundant array of inexpensive disks and is a model that allows servers to\nendure the failure of one or more hard disks without interuption to services and resources."
- },
- {
- "subtitle": "Server status",
- "question": "Your console or terminal throws up a 404 error, this means?",
- "choices": [
- "
Upgrade required
",
- "
Not found
",
- "
Gateway Timeout
",
- "
No Response
"
- ],
- "answer": 1,
- "explanation": "This error informs you that an internal or external resource has not been found and can not be loaded into a page or application."
- },
- {
- "subtitle": "Server Status, again",
- "question": "Your console or terminal throws up a 500 error, this means?",
- "choices": [
- "
Internal Server Error
",
- "
Proxy Authentication Required
",
- "
Upgrade Required
",
- "
Too Many Requests
"
- ],
- "answer": 0,
- "explanation": "A generic error message which refers to an error on the webserver when no precise detail is available."
- },
- {
- "subtitle": "HTTP methods",
- "question": "GET and POST are important HTTP request methods which of the following list are Not an example of an HTTP request method?",
- "choices": [
- "
HEAD
",
- "
PUT
",
- "
BODY
",
- "
DELETE
"
- ],
- "answer": 2,
- "explanation": "HEAD is similar to the Get method but returns no response body, PUT is used to replace and update a specified resource, DELETE will delete a resource,\nthere is no such method as a BODY request."
- },
- {
- "subtitle": "Loopback",
- "question": "In networking which of the following is considered to be a loopback ip address or 'localhost'?",
- "choices": [
- "
172.0.0.1
",
- "
127.0.0.1
",
- "
10.0.0.0
",
- "
192.168.0.0
"
- ],
- "answer": 1,
- "explanation": "127.0.0.1 is the loopback address or localhost, option a is an example of a public address and options c and d are examples of private network addresses."
- },
- {
- "subtitle": "Network & Security Architecture",
- "question": "Ring, Star, Mesh and Bus are all examples of?",
- "choices": [
- "
Network topologies
",
- "
Security Protocols for mobile development
",
- "
Restful API's
",
- "
File server storage methods
"
- ],
- "answer": 0,
- "explanation": "A network topology is a logical and physical layout of how the network appears to the devices using it."
- }
- ],
- "tests": [],
- "challengeType": 8
- },
- {
- "id": "5a933d04a9178457a6f12825",
- "title": "Networking questions part 2",
- "description": [
- {
- "subtitle": "Default port for FTP",
- "question": "In attempting to connect to an FTP (File Transfer Protocol) server and failing, which port can you check is open to troubleshoot the connection issue?",
- "choices": [
- "
25
",
- "
443
",
- "
23
",
- "
21
"
- ],
- "answer": 3,
- "explanation": "Port 21 is traditionally used as the default port on a system for FTP."
- },
- {
- "subtitle": "Network types",
- "question": "Which of the following is not a type of network?",
- "choices": [
- "
LAN
",
- "
MAN
",
- "
PAN
",
- "
NAN
"
- ],
- "answer": 3,
- "explanation": "NAN is not a current network type. LAN (Local Area Network), MAN (Metropolitan Area Network), PAN (Personal Area Network)."
- },
- {
- "subtitle": "Subnet mask usage",
- "question": "What is a subnet mask used for?",
- "choices": [
- "
To hide the id of a wireless access point.
",
- "
To identyfy the extended and host address.
",
- "
To encrypt the broadcasting of ip addresses.
",
- "
To connect to a vpn.
"
- ],
- "answer": 1,
- "explanation": "A subnet mask is used along side an IP address in order to isolate the extended or 'subnet' of the network address and the host machine address."
- },
- {
- "subtitle": "Network acronym",
- "question": "What does NIC stand for?",
- "choices": [
- "
Network Isolated Connection
",
- "
Network Interconnect Cables
",
- "
Network Interface Card
",
- "
Network Interference Cause
"
- ],
- "answer": 2,
- "explanation": "A Network Interface Card or (Network Interface Controller) is a hardware component that connects to a Pc or printer in order to\nconnect and be identified on a network."
- },
- {
- "subtitle": "Default gateway",
- "question": "A 'default gateway' provides a way for a local network to connect to a larger external network true or false?",
- "choices": [
- "
true
",
- "
false
"
- ],
- "answer": 0,
- "explanation": "True this is usually the address of of an external router or switch."
- },
- {
- "subtitle": "The ipconfig commad",
- "question": "'ipconfig' is used for?",
- "choices": [
- "
Reassigning ip addresses.
",
- "
Tool for masking ip adresses.
",
- "
Monitoring network traffic.
",
- "
Identify address information of a machine on a network.
"
- ],
- "answer": 3,
- "explanation": "ipconfig or ifconfig(linux) is a utility for gaining various address information of a computer on a network."
- },
- {
- "subtitle": "Network terminology",
- "question": "The term 'Latency' refers to?",
- "choices": [
- "
The logical state of a network.
",
- "
A loss of data expected in transfer over a network.
",
- "
A measure of time delay between request and response experienced by a system.
",
- "
The scope for expanding a network.
"
- ],
- "answer": 2,
- "explanation": "Latency can affect host to host transfers http requests etc."
- },
- {
- "subtitle": "Network terminology, again",
- "question": "The term 'full duplex' refers to?",
- "choices": [
- "
Two way data transfer but not at the same time.
",
- "
Two way data transfer simultaneously.
",
- "
One way data transfer at high speed.
",
- "
One way data transfer with encryption
"
- ],
- "answer": 1,
- "explanation": "An example of full duplex would be like a telephone conversation between two people."
- }
- ],
- "tests": [],
- "challengeType": 8
- }
- ]
-}
diff --git a/curriculum/math-challenges/30-arithmetic/adding-and-subtracting-decimals.json b/curriculum/math-challenges/30-arithmetic/adding-and-subtracting-decimals.json
deleted file mode 100644
index 03b18eab33..0000000000
--- a/curriculum/math-challenges/30-arithmetic/adding-and-subtracting-decimals.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Add and Subtract Decimals",
- "order": 18,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b428",
- "title": "Add and Subtract Decimal Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836409",
- "title": "Mental Math to Add and Subtract Decimals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836410",
- "title": "Add and Subtract Decimals with Front-End Estimation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836411",
- "title": "Round Decimals to Estimate Sums and Differences",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/adding-and-subtracting-fractions.json b/curriculum/math-challenges/30-arithmetic/adding-and-subtracting-fractions.json
deleted file mode 100644
index e9b969bce1..0000000000
--- a/curriculum/math-challenges/30-arithmetic/adding-and-subtracting-fractions.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Add and Subtract Fractions",
- "order": 11,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b421",
- "title": "Add Fractions with Common Denominators",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836370",
- "title": "Subtract Fractions with Common Denominators",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836371",
- "title": "Add and Subtract with Common Denominators",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836372",
- "title": "Add and Subtract Fractions with Common Denominators Word Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836373",
- "title": "Add Fractions with Different Denominators",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836374",
- "title": "Subtract Fractions with Different Denominators",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/adding-and-subtracting-mixed-numbers.json b/curriculum/math-challenges/30-arithmetic/adding-and-subtracting-mixed-numbers.json
deleted file mode 100644
index 43af55ebd1..0000000000
--- a/curriculum/math-challenges/30-arithmetic/adding-and-subtracting-mixed-numbers.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Add and Subtract Mixed Numbers",
- "order": 12,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b422",
- "title": "Add Mixed Numbers with Common Denominators",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836376",
- "title": "Subtract Mixed Numbers with Common Denominators",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836377",
- "title": "Subtract Mixed Numbers with Different Denominators",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836378",
- "title": "Add and Subtract Three Mixed Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836379",
- "title": "Add and Subtract Mixed Numbers Word Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/additon-and-subtraction.json b/curriculum/math-challenges/30-arithmetic/additon-and-subtraction.json
deleted file mode 100644
index c11c14e573..0000000000
--- a/curriculum/math-challenges/30-arithmetic/additon-and-subtraction.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Additon and Subtraction",
- "order": 2,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b411",
- "title": "Add Whole Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836306",
- "title": "Subtract Whole Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836307",
- "title": "Estimate Whole Number Sums and Differences",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/basic-decimals.json b/curriculum/math-challenges/30-arithmetic/basic-decimals.json
deleted file mode 100644
index 65d24965db..0000000000
--- a/curriculum/math-challenges/30-arithmetic/basic-decimals.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Basic Decimals",
- "order": 15,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b425",
- "title": "Place Value Charts and Decimals to Thousandths",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836398",
- "title": "Equivalent Decimals Ending in Zero",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836399",
- "title": "Decimals in Words",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836400",
- "title": "Decimal Place Value",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836401",
- "title": "Decimals in Expanded Form",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/basic-place-value.json b/curriculum/math-challenges/30-arithmetic/basic-place-value.json
deleted file mode 100644
index 2e61774b0b..0000000000
--- a/curriculum/math-challenges/30-arithmetic/basic-place-value.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Basic Place Value",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac59836300",
- "title": "Recognize Place Values to 10,000,000",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836301",
- "title": "Greatest and Least Values of Given Digits to 10,000,000",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836303",
- "title": "Higher Order Place Value and Number Placement Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836304",
- "title": "Round Large Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/compare-decimals.json b/curriculum/math-challenges/30-arithmetic/compare-decimals.json
deleted file mode 100644
index 65a4e00920..0000000000
--- a/curriculum/math-challenges/30-arithmetic/compare-decimals.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Compare Decimals",
- "order": 16,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b426",
- "title": "Compare and Order Decimals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836403",
- "title": "Compare and Compose Decimals and Fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836404",
- "title": "Compare, Order and Identify Decimal Inequalities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/converting-decimals.json b/curriculum/math-challenges/30-arithmetic/converting-decimals.json
deleted file mode 100644
index 0f0ceea0a8..0000000000
--- a/curriculum/math-challenges/30-arithmetic/converting-decimals.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Converting Decimals",
- "order": 25,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b435",
- "title": "Convert Decimals to Fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836444",
- "title": "Convert Decimals into Simplified Mixed Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836445",
- "title": "Decimals as Percents",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836446",
- "title": "Compare and Order Fractions and Decimals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836447",
- "title": "Convert between Decimals, Fractions, and Percents",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/converting-fractions.json b/curriculum/math-challenges/30-arithmetic/converting-fractions.json
deleted file mode 100644
index 510e7b31f7..0000000000
--- a/curriculum/math-challenges/30-arithmetic/converting-fractions.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Converting Fractions",
- "order": 24,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b434",
- "title": "Fraction and Decimal Conversion",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836438",
- "title": "Convert Mixed Numbers to Decimals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836439",
- "title": "Compare Mixed Numbers and Decimals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836440",
- "title": "Convert Between Fractions or Mixed Numbers and Decimals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836441",
- "title": "Add Fractions and Convert to Decimals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836442",
- "title": "Fractions as Percents",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/converting-percentages.json b/curriculum/math-challenges/30-arithmetic/converting-percentages.json
deleted file mode 100644
index 9627d67d4c..0000000000
--- a/curriculum/math-challenges/30-arithmetic/converting-percentages.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Converting Percentages",
- "order": 23,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b433",
- "title": "Percents as Decimals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836436",
- "title": "Percents as Fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/division.json b/curriculum/math-challenges/30-arithmetic/division.json
deleted file mode 100644
index f9ade81333..0000000000
--- a/curriculum/math-challenges/30-arithmetic/division.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Division",
- "order": 4,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b413",
- "title": "Divide Two Digits by One or Two Digits Without Remainders",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836319",
- "title": "Higher Order Division to 1000 by One Digit",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836320",
- "title": "Divide More than Two Digits by One Digit with Remainders",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836321",
- "title": "Relate Division to Multiplication",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836322",
- "title": "Estimate Whole Number Products and Quotients",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/exponents-and-roots.json b/curriculum/math-challenges/30-arithmetic/exponents-and-roots.json
deleted file mode 100644
index 0e07676029..0000000000
--- a/curriculum/math-challenges/30-arithmetic/exponents-and-roots.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Exponents and Roots",
- "order": 7,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b417",
- "title": "Exponents",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836338",
- "title": "Evaluate and Compare Powers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836339",
- "title": "Perfect Square Roots",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836340",
- "title": "Evaluate Square Roots",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/factors.json b/curriculum/math-challenges/30-arithmetic/factors.json
deleted file mode 100644
index 4997ad02ab..0000000000
--- a/curriculum/math-challenges/30-arithmetic/factors.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Factors",
- "order": 8,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b418",
- "title": "Prime and Composite Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836342",
- "title": "Prime Factorization",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836343",
- "title": "Identify Factor Pairs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836344",
- "title": "Divisibility Rules to Find Factors",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836345",
- "title": "GCF Greatest Common Factor",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836346",
- "title": "Common Multiples",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836347",
- "title": "LCM Least Common Multiple",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/fractions.json b/curriculum/math-challenges/30-arithmetic/fractions.json
deleted file mode 100644
index 610fd11c9f..0000000000
--- a/curriculum/math-challenges/30-arithmetic/fractions.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "name": "Fractions",
- "order": 10,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b420",
- "title": "Equivalent Fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836360",
- "title": "Simplify Fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836361",
- "title": "Simplify Fractions Word Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836362",
- "title": "Compare Fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836363",
- "title": "Compare Fractions using Pictures",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836364",
- "title": "Compare Fractions that have Common Numerators or Denominators",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836365",
- "title": "Compare Fractions without Common Numerators or Denominators",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836366",
- "title": "Compare Fractions without Common Numerators or Denominators Word Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836367",
- "title": "Estimate and Round Fractions and Mixed Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836368",
- "title": "Convert and Compare Mixed Numbers and Improper Fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/integer-operations.json b/curriculum/math-challenges/30-arithmetic/integer-operations.json
deleted file mode 100644
index 4511b27cf6..0000000000
--- a/curriculum/math-challenges/30-arithmetic/integer-operations.json
+++ /dev/null
@@ -1,149 +0,0 @@
-{
- "name": "Integer Operations",
- "order": 9,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b419",
- "title": "Integers in the Real World",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836349",
- "title": "Integers on a Number Line",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836350",
- "title": "Absolute Value of Integers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836351",
- "title": "Add Integers with the Same Signs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836352",
- "title": "Add Integers with Different Signs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836353",
- "title": "Integer Addition",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836354",
- "title": "Subtract Integers with the Same Sign",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836355",
- "title": "Subtract Integers with Different Signs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836356",
- "title": "Integer Subtraction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836357",
- "title": "Multiply Integers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836358",
- "title": "Divide Integers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/long-division.json b/curriculum/math-challenges/30-arithmetic/long-division.json
deleted file mode 100644
index fab3c7026b..0000000000
--- a/curriculum/math-challenges/30-arithmetic/long-division.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Long Division",
- "order": 5,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b415",
- "title": "Long Division Without Remainders",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836324",
- "title": "Divide up to Four Digits by Two Digits with Remainders",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836325",
- "title": "Groups and Remainders Word Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836326",
- "title": "Long Division Word Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836327",
- "title": "Divide Whole Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/multiplication.json b/curriculum/math-challenges/30-arithmetic/multiplication.json
deleted file mode 100644
index 273917b1e8..0000000000
--- a/curriculum/math-challenges/30-arithmetic/multiplication.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "name": "Multiplication",
- "order": 3,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b412",
- "title": "Multiply Multiple Digits by One Digit",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836309",
- "title": "Higher Order One Digit Multiplication Word Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836310",
- "title": "Relate One Digit Number Patterns to Multiplication",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836311",
- "title": "Multiply Numbers with the Associative Property",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836312",
- "title": "Multiply Two Digits by Two or More Digits",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836313",
- "title": "Multiply and Compare with Greater/Less Than",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836314",
- "title": "Relate Number Patterns to Multiplication",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836315",
- "title": "Higher Order Multiplication Word Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836316",
- "title": "Multiply Whole Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836317",
- "title": "Mental Multiplication",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/multiplying-and-dividing-decimals.json b/curriculum/math-challenges/30-arithmetic/multiplying-and-dividing-decimals.json
deleted file mode 100644
index 0063cd52e6..0000000000
--- a/curriculum/math-challenges/30-arithmetic/multiplying-and-dividing-decimals.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Multiply and Divide Decimals",
- "order": 19,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b429",
- "title": "Decimal Multiplication",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836413",
- "title": "Decimal Division",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836414",
- "title": "Multiply Decimals and Whole Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836415",
- "title": "Estimate Products and Quotients of Decimals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/multiplying-and-dividing-fractions.json b/curriculum/math-challenges/30-arithmetic/multiplying-and-dividing-fractions.json
deleted file mode 100644
index 1b919180d9..0000000000
--- a/curriculum/math-challenges/30-arithmetic/multiplying-and-dividing-fractions.json
+++ /dev/null
@@ -1,162 +0,0 @@
-{
- "name": "Multiply and Divide Fractions",
- "order": 13,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b423",
- "title": "Multiply Whole Numbers and Fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836381",
- "title": "Multiply Two Fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836382",
- "title": "Multiply Three or More Fractions and Whole Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836383",
- "title": "Multiply Mixed Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836384",
- "title": "Multiply Mixed Numbers Word Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836385",
- "title": "Reciprocal Fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836386",
- "title": "Divide Fractions and Whole Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836387",
- "title": "Divide Fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836388",
- "title": "Divide Whole Numbers by Mixed Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836389",
- "title": "Divide Mixed Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836390",
- "title": "Multiply and Divide Fractions and Mixed Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836391",
- "title": "Estimate Products of Whole Numbers and Fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/order-of-operations.json b/curriculum/math-challenges/30-arithmetic/order-of-operations.json
deleted file mode 100644
index 8ddf443a16..0000000000
--- a/curriculum/math-challenges/30-arithmetic/order-of-operations.json
+++ /dev/null
@@ -1,123 +0,0 @@
-{
- "name": "Order of Operations",
- "order": 6,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b416",
- "title": "Introduction to Order of Operations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836329",
- "title": "Divide and Subtract with Remainders in Word Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836330",
- "title": "Division and Subtraction Word Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836331",
- "title": "Higher Order Division and Subtraction Word Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836332",
- "title": "Multiply and Add Word Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836333",
- "title": "Multiply and Add or Subtract Word Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836334",
- "title": "Place Operators to Make True Statements",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836335",
- "title": "Place Operators to Make True Statements that Include Parentheses",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836336",
- "title": "Place Parentheses to Make True Statements",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/percentages.json b/curriculum/math-challenges/30-arithmetic/percentages.json
deleted file mode 100644
index a9cc757259..0000000000
--- a/curriculum/math-challenges/30-arithmetic/percentages.json
+++ /dev/null
@@ -1,110 +0,0 @@
-{
- "name": "Percentages",
- "order": 22,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b432",
- "title": "Overview of Percentages",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836428",
- "title": "Percent of a Number",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836429",
- "title": "Simple Interest",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836430",
- "title": "Percent of Change",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836431",
- "title": "Percent of Increase",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836432",
- "title": "Percent of Decrease",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836433",
- "title": "Prices Involving Discounts",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836434",
- "title": "Total Bill Including Tip and Tax",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/powers-of-ten.json b/curriculum/math-challenges/30-arithmetic/powers-of-ten.json
deleted file mode 100644
index 53d2a8778d..0000000000
--- a/curriculum/math-challenges/30-arithmetic/powers-of-ten.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Powers of Ten and Scientific Notation",
- "order": 20,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b430",
- "title": "Multiply Decimals by Powers of Ten",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836417",
- "title": "Multiplication and Powers of Ten",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836418",
- "title": "Division and Powers of Ten",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836419",
- "title": "Scientific Notation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/rational-and-irrational-numbers.json b/curriculum/math-challenges/30-arithmetic/rational-and-irrational-numbers.json
deleted file mode 100644
index ccbe5041fd..0000000000
--- a/curriculum/math-challenges/30-arithmetic/rational-and-irrational-numbers.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Rational and Irrational numbers",
- "order": 21,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b431",
- "title": "Rational Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836421",
- "title": "Add Rational Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836422",
- "title": "Subtract Rational Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836423",
- "title": "Multiply Rational Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836424",
- "title": "Divide Rational Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836425",
- "title": "Irrational Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836426",
- "title": "Irrational Square Roots",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/ratios.json b/curriculum/math-challenges/30-arithmetic/ratios.json
deleted file mode 100644
index d3206fe01d..0000000000
--- a/curriculum/math-challenges/30-arithmetic/ratios.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Ratios",
- "order": 14,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b424",
- "title": "Definition of a Ratio",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836393",
- "title": "Equivalent Ratios",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836394",
- "title": "Ratios in Simplest Form",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836395",
- "title": "Compare Ratios in Decimal Form",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836396",
- "title": "Unit Rates",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/30-arithmetic/round-decimals.json b/curriculum/math-challenges/30-arithmetic/round-decimals.json
deleted file mode 100644
index ee94cda15d..0000000000
--- a/curriculum/math-challenges/30-arithmetic/round-decimals.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Round Decimals",
- "order": 17,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b427",
- "title": "Round Decimal Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836407",
- "title": "Round Decimals with Place Value",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/31-algebra/algebra-expressions-and-variables.json b/curriculum/math-challenges/31-algebra/algebra-expressions-and-variables.json
deleted file mode 100644
index ff6225513d..0000000000
--- a/curriculum/math-challenges/31-algebra/algebra-expressions-and-variables.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Algebra Expressions and Variables",
- "order": 29,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b439",
- "title": "Expressions and Variables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836461",
- "title": "Evaluate Single Variable Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836462",
- "title": "Evaluate Expressions with One or More Variables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836463",
- "title": "Words that Describe Mathematical Operations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836464",
- "title": "Translate Between English Phrases and Algebraic Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836465",
- "title": "Calculator Use with Algebra Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/31-algebra/integers.json b/curriculum/math-challenges/31-algebra/integers.json
deleted file mode 100644
index ca4b994445..0000000000
--- a/curriculum/math-challenges/31-algebra/integers.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Integers",
- "order": 27,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b437",
- "title": "Absolute Value of Integers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836451",
- "title": "Integer Addition",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836452",
- "title": "Integer Subtraction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836453",
- "title": "Integer Multiplication",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836454",
- "title": "Integer Division",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/31-algebra/properties-and-axioms-of-real-numbers.json b/curriculum/math-challenges/31-algebra/properties-and-axioms-of-real-numbers.json
deleted file mode 100644
index e79be49c05..0000000000
--- a/curriculum/math-challenges/31-algebra/properties-and-axioms-of-real-numbers.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "name": "Properties and Axioms of Real Numbers",
- "order": 30,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b440",
- "title": "Real Number Properties and Axioms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836467",
- "title": "Distributive Property",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836468",
- "title": "Expressions and the Distributive Property",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836469",
- "title": "When to Use the Distributive Property",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836470",
- "title": "Distributive Property to Evaluate Formulas with Decimals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836471",
- "title": "Additive inverses and Absolute Values",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836472",
- "title": "Associative and Commutative Property with Decimals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836473",
- "title": "Associative and Commutative Property with Fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836474",
- "title": "Addition and Multiplication Properties with Real Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836475",
- "title": "Fraction and Mixed Number Applications",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/31-algebra/real-number-variables-and-expressions.json b/curriculum/math-challenges/31-algebra/real-number-variables-and-expressions.json
deleted file mode 100644
index 4b08ff3d9a..0000000000
--- a/curriculum/math-challenges/31-algebra/real-number-variables-and-expressions.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Real Number Variables and Expressions",
- "order": 26,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b436",
- "title": "The Real Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836449",
- "title": "Order Real Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/31-algebra/simplifying-expressions.json b/curriculum/math-challenges/31-algebra/simplifying-expressions.json
deleted file mode 100644
index bce6fcda86..0000000000
--- a/curriculum/math-challenges/31-algebra/simplifying-expressions.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Simplifying Expressions",
- "order": 31,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b441",
- "title": "Simplify Variable Expressions Involving Addition and Subtraction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836477",
- "title": "Simplify Variable Expressions Involving Multiplication and Division",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836478",
- "title": "Simplify Variable Expressions Involving Multiple Operations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836479",
- "title": "Simplify Algebraic Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/31-algebra/the-order-of-operations.json b/curriculum/math-challenges/31-algebra/the-order-of-operations.json
deleted file mode 100644
index b97c5360cd..0000000000
--- a/curriculum/math-challenges/31-algebra/the-order-of-operations.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "The Order of Operations",
- "order": 28,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b438",
- "title": "Order of Operations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836456",
- "title": "PEMDAS in Numerical Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836457",
- "title": "Algebra Expressions with Exponents",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836458",
- "title": "Algebra Expressions with Fraction Bars",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836459",
- "title": "Order of Operations and Variable Substitution",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/adding-and-subtracting-rational-expressions.json b/curriculum/math-challenges/32-linear-equations/adding-and-subtracting-rational-expressions.json
deleted file mode 100644
index fdccc04bc1..0000000000
--- a/curriculum/math-challenges/32-linear-equations/adding-and-subtracting-rational-expressions.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Add and Subtract Rational Expressions",
- "order": 27,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b472",
- "title": "Addition and Subtraction of Rational Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a051",
- "title": "Adding and Subtracting Rational Expressions where One Denominator is the LCD",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a052",
- "title": "Applications of Adding and Subtracting Rational Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/basic-equations.json b/curriculum/math-challenges/32-linear-equations/basic-equations.json
deleted file mode 100644
index 08d31832ea..0000000000
--- a/curriculum/math-challenges/32-linear-equations/basic-equations.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Basic Equations",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b442",
- "title": "Writing Basic Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836481",
- "title": "Sentences as Single Variable Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836482",
- "title": "Addition and Subtraction Phrases as Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836483",
- "title": "Multiplication and Division Phrases as Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836484",
- "title": "Input-Output Tables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836485",
- "title": "Function Rules for Input-Output Tables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836486",
- "title": "Input-Output Tables for Function Rules",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/direct-variations.json b/curriculum/math-challenges/32-linear-equations/direct-variations.json
deleted file mode 100644
index 03732ee433..0000000000
--- a/curriculum/math-challenges/32-linear-equations/direct-variations.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Direct Variations",
- "order": 31,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b476",
- "title": "Direct Variation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a065",
- "title": "Applications Using Direct Variation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a066",
- "title": "Graphs of Linear Models of Direct Variation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/distance-rate-and-time.json b/curriculum/math-challenges/32-linear-equations/distance-rate-and-time.json
deleted file mode 100644
index 0998cdba57..0000000000
--- a/curriculum/math-challenges/32-linear-equations/distance-rate-and-time.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Distance, Rate, and Time",
- "order": 6,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b448",
- "title": "D = RT",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836514",
- "title": "Solving for Elapsed Time Related to Rate",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836515",
- "title": "Finding the Total Time Given a Distance between Two Objects",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836516",
- "title": "Applications of Finding Time Using Multiple Steps",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836517",
- "title": "Finding Total Distance Using Multiple Steps Word Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836518",
- "title": "Find the Rate, Given Time and Distance",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836519",
- "title": "Solving Length and Distance Problems Involving Time",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/exponential-growth-and-decay-functions.json b/curriculum/math-challenges/32-linear-equations/exponential-growth-and-decay-functions.json
deleted file mode 100644
index 176b8104af..0000000000
--- a/curriculum/math-challenges/32-linear-equations/exponential-growth-and-decay-functions.json
+++ /dev/null
@@ -1,110 +0,0 @@
-{
- "name": "Exponential Growth and Decay Functions",
- "order": 40,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b486",
- "title": "Exponential Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a223",
- "title": "Solving Equations with Exponents",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a224",
- "title": "Exponential Growth and Decay",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a225",
- "title": "Exponential Growth",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a226",
- "title": "Exponential Decay",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a227",
- "title": "Geometric Sequences and Exponential Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a228",
- "title": "Graphs of Exponential Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a229",
- "title": "Applications of Exponential Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/exponents-and-irrational-numbers.json b/curriculum/math-challenges/32-linear-equations/exponents-and-irrational-numbers.json
deleted file mode 100644
index 3b0f05ed50..0000000000
--- a/curriculum/math-challenges/32-linear-equations/exponents-and-irrational-numbers.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Exponents and Irrational Numbers",
- "order": 33,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b479",
- "title": "Negative and Zero Exponents",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a079",
- "title": "Fractional Exponents",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a080",
- "title": "Zero, Negative, and Fractional Exponents",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a081",
- "title": "Operations with Roots and Irrational Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/functions-and-function-notation.json b/curriculum/math-challenges/32-linear-equations/functions-and-function-notation.json
deleted file mode 100644
index 1b8c284f4c..0000000000
--- a/curriculum/math-challenges/32-linear-equations/functions-and-function-notation.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Functions and Function Notation",
- "order": 9,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b451",
- "title": "Function Notation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836541",
- "title": "Domain and Range of a Function",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836543",
- "title": "Applications of Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836544",
- "title": "Identify Functions and the Vertical Line Test",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836545",
- "title": "Even and Odd Functions and Function Symmetry",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836546",
- "title": "Operations on Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836547",
- "title": "Composition of Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/graphing-in-the-coordinate-plane.json b/curriculum/math-challenges/32-linear-equations/graphing-in-the-coordinate-plane.json
deleted file mode 100644
index a72e02dc9a..0000000000
--- a/curriculum/math-challenges/32-linear-equations/graphing-in-the-coordinate-plane.json
+++ /dev/null
@@ -1,123 +0,0 @@
-{
- "name": "Graphing in the Coordinate Plane",
- "order": 8,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b450",
- "title": "Graphs in the Coordinate Plane",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836533",
- "title": "Points in the Coordinate Plane",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836534",
- "title": "Ordered Pairs in Four Quadrants",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836535",
- "title": "Coordinate Locations on a Map",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836536",
- "title": "Graphs on a Coordinate Plane",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836537",
- "title": "Graphs Based on Rules",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836538",
- "title": "Rules Based on Graphs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836539",
- "title": "Identify Types of Linear and Nonlinear Graphs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836540",
- "title": "Function Families",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/graphing-linear-equations.json b/curriculum/math-challenges/32-linear-equations/graphing-linear-equations.json
deleted file mode 100644
index 1e8cee9c9c..0000000000
--- a/curriculum/math-challenges/32-linear-equations/graphing-linear-equations.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Graph Linear Equations",
- "order": 10,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b452",
- "title": "Graph of a Linear Equation in Two Variables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836549",
- "title": "Graphs of Linear Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836550",
- "title": "Horizontal and Vertical Line Graphs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836551",
- "title": "Graph Using Intercepts",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836552",
- "title": "Problem Solving with Linear Graphs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836553",
- "title": "Graphs of Absolute Value Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836554",
- "title": "Linear and Absolute Value Function Families",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/graphing-polynomials.json b/curriculum/math-challenges/32-linear-equations/graphing-polynomials.json
deleted file mode 100644
index 44a4f16bc9..0000000000
--- a/curriculum/math-challenges/32-linear-equations/graphing-polynomials.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Graphing Polynomials",
- "order": 24,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b469",
- "title": "Identify Parts of Polynomial Graphs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a039",
- "title": "Graphs of Polynomials Using Transformations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a040",
- "title": "Graphs of Polynomials Using Zeros",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a041",
- "title": "Graphing Calculator to Analyze Polynomial Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/graphing-quadratic-functions.json b/curriculum/math-challenges/32-linear-equations/graphing-quadratic-functions.json
deleted file mode 100644
index 2fac63352a..0000000000
--- a/curriculum/math-challenges/32-linear-equations/graphing-quadratic-functions.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Graphing Quadratic Functions and Equations",
- "order": 38,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b484",
- "title": "Graph Quadratic Functions and Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a214",
- "title": "Graphing with the Vertex Form of Quadratic Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a215",
- "title": "Graphs of Quadratic Functions in Intercept Form",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a216",
- "title": "Roots to Determine a Quadratic Function",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a217",
- "title": "Quadratic Functions and Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/graphing-slope.json b/curriculum/math-challenges/32-linear-equations/graphing-slope.json
deleted file mode 100644
index a671df2142..0000000000
--- a/curriculum/math-challenges/32-linear-equations/graphing-slope.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Graphing Slope",
- "order": 11,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b453",
- "title": "Slope",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836556",
- "title": "Rates of Change",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836557",
- "title": "Slope of a Line Using Two Points",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836558",
- "title": "Graph Using Slope-Intercept Form",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/introduction-to-polynomials.json b/curriculum/math-challenges/32-linear-equations/introduction-to-polynomials.json
deleted file mode 100644
index 4ba37f3e80..0000000000
--- a/curriculum/math-challenges/32-linear-equations/introduction-to-polynomials.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Introduction to Polynomials",
- "order": 18,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b461",
- "title": "Monomials, Binomials, and Trinomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a015",
- "title": "Polynomials in Standard Form",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a016",
- "title": "Addition and Subtraction of Polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/introduction-to-rational-expressions.json b/curriculum/math-challenges/32-linear-equations/introduction-to-rational-expressions.json
deleted file mode 100644
index 5ea568d6d1..0000000000
--- a/curriculum/math-challenges/32-linear-equations/introduction-to-rational-expressions.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Introduction to Rational Expressions",
- "order": 25,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b470",
- "title": "Working with Rational Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a043",
- "title": "Simplifying Rational Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a044",
- "title": "Excluded Values for Rational Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a045",
- "title": "Restricted Domain and Range",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/inverse-variation-and-rational-functions.json b/curriculum/math-challenges/32-linear-equations/inverse-variation-and-rational-functions.json
deleted file mode 100644
index aeb73e1895..0000000000
--- a/curriculum/math-challenges/32-linear-equations/inverse-variation-and-rational-functions.json
+++ /dev/null
@@ -1,149 +0,0 @@
-{
- "name": "Inverse Variation and Rational Functions",
- "order": 32,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b478",
- "title": "Direct and Inverse Variation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a068",
- "title": "Inverse Variation Models",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a069",
- "title": "Estimate Graphs of Rational Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a070",
- "title": "Horizontal and Vertical Asymptotes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a071",
- "title": "Vertical Asymptotes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a072",
- "title": "Horizontal Asymptotes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a073",
- "title": "Oblique Asymptotes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a074",
- "title": "Determining Asymptotes by Division",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a075",
- "title": "Inverse Variation Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a076",
- "title": "Joint and Combined Variation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a077",
- "title": "Applications Using Rational Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/linear-equations-in-the-real-world.json b/curriculum/math-challenges/32-linear-equations/linear-equations-in-the-real-world.json
deleted file mode 100644
index 02858f232d..0000000000
--- a/curriculum/math-challenges/32-linear-equations/linear-equations-in-the-real-world.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Linear Equations in the Real World",
- "order": 5,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b447",
- "title": "Applications of Linear Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836510",
- "title": "Problem-Solving Models",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836511",
- "title": "Guess and Check, Work Backward",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836512",
- "title": "Applications Using Linear Models",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/linear-exponential-and-quadratic-models.json b/curriculum/math-challenges/32-linear-equations/linear-exponential-and-quadratic-models.json
deleted file mode 100644
index 76081fc07f..0000000000
--- a/curriculum/math-challenges/32-linear-equations/linear-exponential-and-quadratic-models.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Linear, Exponential and Quadratic Models",
- "order": 42,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b488",
- "title": "Identifying Linear, Exponential, and Quadratic Models",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a239",
- "title": "Linear, Quadratic, and Cubic Models",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a240",
- "title": "Cubic Models",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a241",
- "title": "Applications of Function Models",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/linear-inequalities.json b/curriculum/math-challenges/32-linear-equations/linear-inequalities.json
deleted file mode 100644
index 79de038c13..0000000000
--- a/curriculum/math-challenges/32-linear-equations/linear-inequalities.json
+++ /dev/null
@@ -1,162 +0,0 @@
-{
- "name": "Linear Inequalities",
- "order": 7,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b449",
- "title": "Solve One Step Linear Inequalities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836521",
- "title": "Inequalities on a Number Line",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836522",
- "title": "Inequalities that Describe Patterns",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836523",
- "title": "Inequality Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836524",
- "title": "Inequalities with Addition and Subtraction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836525",
- "title": "Inequalities with Multiplication and Division",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836526",
- "title": "Multi-Step Inequalities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836527",
- "title": "Checking Solutions to Inequalities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836528",
- "title": "Compound Inequalities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836529",
- "title": "Graph and Solve Absolute Value Inequalities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836530",
- "title": "Intervals and Interval Notation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836531",
- "title": "Applications with Inequalities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/linear-systems.json b/curriculum/math-challenges/32-linear-equations/linear-systems.json
deleted file mode 100644
index d1eb61d1fc..0000000000
--- a/curriculum/math-challenges/32-linear-equations/linear-systems.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Linear Systems",
- "order": 15,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b458",
- "title": "Consistent and Inconsistent Linear Systems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a587af21a188128bc4071a",
- "title": "Checking a Solution for a Linear System",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a587af21a188128bc4071c",
- "title": "Graphs of Linear Systems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a587af21a188128bc4071d",
- "title": "Systems of Linear Equations in Two Variables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/logarithms.json b/curriculum/math-challenges/32-linear-equations/logarithms.json
deleted file mode 100644
index 2023b6a2bd..0000000000
--- a/curriculum/math-challenges/32-linear-equations/logarithms.json
+++ /dev/null
@@ -1,110 +0,0 @@
-{
- "name": "Logarithms",
- "order": 41,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b487",
- "title": "Common and Natural Logarithms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a231",
- "title": "Analysis of Logarithmic Graphs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a232",
- "title": "Logarithm Properties",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a233",
- "title": "Change of Base",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a234",
- "title": "Product and Quotient Properties of Logarithms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a235",
- "title": "Power Property of Logarithms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a236",
- "title": "Inverse Properties of Logarithms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a237",
- "title": "Logistic Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/matrix-algebra.json b/curriculum/math-challenges/32-linear-equations/matrix-algebra.json
deleted file mode 100644
index 25c87daea0..0000000000
--- a/curriculum/math-challenges/32-linear-equations/matrix-algebra.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Matrix Algebra",
- "order": 43,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b489",
- "title": "Introduction to Matrices",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a243",
- "title": "Adding and Subtracting Matrices",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a244",
- "title": "Multiplying Matrices by a Scalar",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a245",
- "title": "Matrix Multiplication",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a246",
- "title": "Matrix Operations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a247",
- "title": "Determinants",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a248",
- "title": "Cramer's Rule",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/matrix-equations.json b/curriculum/math-challenges/32-linear-equations/matrix-equations.json
deleted file mode 100644
index 354c802ec2..0000000000
--- a/curriculum/math-challenges/32-linear-equations/matrix-equations.json
+++ /dev/null
@@ -1,110 +0,0 @@
-{
- "name": "Matrix Equations",
- "order": 44,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b490",
- "title": "Solving Matrix Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a250",
- "title": "Augmented Matrices",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a251",
- "title": "Row Operations and Row Echelon Forms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a252",
- "title": "Writing and Solving a Matrix Equation for a Linear System",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a253",
- "title": "Solving Linear Systems Using Matrices and Technology",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a254",
- "title": "Inverse Matrices",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a255",
- "title": "Applications of Matrices",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a256",
- "title": "Partial Fraction Expansions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/multi-step-equations.json b/curriculum/math-challenges/32-linear-equations/multi-step-equations.json
deleted file mode 100644
index 95dd6770d3..0000000000
--- a/curriculum/math-challenges/32-linear-equations/multi-step-equations.json
+++ /dev/null
@@ -1,123 +0,0 @@
-{
- "name": "Multi-Step Equations",
- "order": 4,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b445",
- "title": "Multi-Step Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59830501",
- "title": "Multi-Step Equations with Like Terms and Distribution",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836502",
- "title": "Multi-Step Equations with Fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836503",
- "title": "Multi-Step Equations with Decimals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836504",
- "title": "Multi-Step Equations with Decimals, Fractions, and Parentheses",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836505",
- "title": "Applications of Multi-Step Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836506",
- "title": "Equations with Variables on Both Sides",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836507",
- "title": "Solving for a Variable",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836508",
- "title": "Absolute Value Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/multiplying-and-dividing-rational-expressions.json b/curriculum/math-challenges/32-linear-equations/multiplying-and-dividing-rational-expressions.json
deleted file mode 100644
index 1c290b4116..0000000000
--- a/curriculum/math-challenges/32-linear-equations/multiplying-and-dividing-rational-expressions.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Multiplying and Dividing Rational Expressions",
- "order": 26,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b471",
- "title": "Products and Quotients of Rational Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a047",
- "title": "Multiplication of Rational Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a048",
- "title": "Division of Rational Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a049",
- "title": "Complex Fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/one-step-equations.json b/curriculum/math-challenges/32-linear-equations/one-step-equations.json
deleted file mode 100644
index c876cfd01d..0000000000
--- a/curriculum/math-challenges/32-linear-equations/one-step-equations.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "One-Step Equations",
- "order": 2,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b443",
- "title": "One-Step Equations and Properties of Equality",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836488",
- "title": "Single Variable Equations with Addition and Subtraction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836489",
- "title": "Properties of Equality with Fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836490",
- "title": "Single Variable Equations with Multiplication and Division",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836491",
- "title": "Properties of Equality with Decimals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836492",
- "title": "Checking Solutions to Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/parallel-and-perpendicular-lines.json b/curriculum/math-challenges/32-linear-equations/parallel-and-perpendicular-lines.json
deleted file mode 100644
index d1c79c90b0..0000000000
--- a/curriculum/math-challenges/32-linear-equations/parallel-and-perpendicular-lines.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Parallel and Perpendicular Lines",
- "order": 13,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b456",
- "title": "Equations of Parallel and Perpendicular Lines",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836564",
- "title": "Equations of Parallel Lines",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836565",
- "title": "Equations of Perpendicular Lines",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836566",
- "title": "Families of Lines",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/percentages.json b/curriculum/math-challenges/32-linear-equations/percentages.json
deleted file mode 100644
index 329da5551b..0000000000
--- a/curriculum/math-challenges/32-linear-equations/percentages.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Percentages",
- "order": 28,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b473",
- "title": "Percentage Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a054",
- "title": "Simple Interest",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a055",
- "title": "The Percent Equation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a056",
- "title": "Proportions and Percents",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/polynomial-division.json b/curriculum/math-challenges/32-linear-equations/polynomial-division.json
deleted file mode 100644
index 0b06d92b36..0000000000
--- a/curriculum/math-challenges/32-linear-equations/polynomial-division.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Polynomial Division",
- "order": 23,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b468",
- "title": "Dividing Polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a034",
- "title": "Long Division of Polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a035",
- "title": "Synthetic Division of Polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a036",
- "title": "Finding Zeros of Polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a037",
- "title": "Zeroes and Intercepts of Polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/polynomial-factoring.json b/curriculum/math-challenges/32-linear-equations/polynomial-factoring.json
deleted file mode 100644
index 29310520d2..0000000000
--- a/curriculum/math-challenges/32-linear-equations/polynomial-factoring.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Polynomial Factoring",
- "order": 20,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b463",
- "title": "Factoring Polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a022",
- "title": "Monomial Factors of Polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/polynomial-multiplication.json b/curriculum/math-challenges/32-linear-equations/polynomial-multiplication.json
deleted file mode 100644
index a86db7e9f7..0000000000
--- a/curriculum/math-challenges/32-linear-equations/polynomial-multiplication.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Polynomial Multiplication",
- "order": 19,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b462",
- "title": "Multiply Polynomials by Monomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a018",
- "title": "Multiply Binomials by Binomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a019",
- "title": "Multiply Polynomials by Binomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a020",
- "title": "Multiply Polynomials by Polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/polynomial-special-products.json b/curriculum/math-challenges/32-linear-equations/polynomial-special-products.json
deleted file mode 100644
index 7417593144..0000000000
--- a/curriculum/math-challenges/32-linear-equations/polynomial-special-products.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Polynomial Special Products",
- "order": 21,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b465",
- "title": "Special Products of Polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a024",
- "title": "Factor Difference of Squares",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a025",
- "title": "Factor Perfect Square Trinomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a026",
- "title": "Sum and Difference of Cubes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/properties-of-exponents-in-variable-expressions.json b/curriculum/math-challenges/32-linear-equations/properties-of-exponents-in-variable-expressions.json
deleted file mode 100644
index b5111e1961..0000000000
--- a/curriculum/math-challenges/32-linear-equations/properties-of-exponents-in-variable-expressions.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Properties of Exponents in Variable Expressions",
- "order": 39,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b485",
- "title": "Exponential Properties Involving Products",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a219",
- "title": "Exponential Properties Involving Quotients",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a220",
- "title": "Exponential Terms Raised to an Exponent",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a221",
- "title": "Exponential Properties in Variable Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/proportion-and-scale.json b/curriculum/math-challenges/32-linear-equations/proportion-and-scale.json
deleted file mode 100644
index 5f770376ee..0000000000
--- a/curriculum/math-challenges/32-linear-equations/proportion-and-scale.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Proportion and Scale",
- "order": 30,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b475",
- "title": "Proportions and Scale",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a062",
- "title": "Dimensional Analysis",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a063",
- "title": "Applications of Scale and Indirect Measurement",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/proportions.json b/curriculum/math-challenges/32-linear-equations/proportions.json
deleted file mode 100644
index 19c24b71a4..0000000000
--- a/curriculum/math-challenges/32-linear-equations/proportions.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Proportions",
- "order": 29,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b474",
- "title": "Proportions using LCD",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a058",
- "title": "Proportions using Cross-Multiplication",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a059",
- "title": "Rational Equations and Proportions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a060",
- "title": "Applications of Ratios and Proportions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/quadratic-expressions.json b/curriculum/math-challenges/32-linear-equations/quadratic-expressions.json
deleted file mode 100644
index 16ee86a824..0000000000
--- a/curriculum/math-challenges/32-linear-equations/quadratic-expressions.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Quadratic Expressions",
- "order": 22,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b466",
- "title": "Factor Quadratics with a Leading Coefficient of 1",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a028",
- "title": "Factor Quadratic Expressions with Negative Coefficients",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a029",
- "title": "Factor Quadratics",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a030",
- "title": "Factor by Grouping",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a031",
- "title": "Zero Product Principle",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a032",
- "title": "Applications of Factoring",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/radical-equations.json b/curriculum/math-challenges/32-linear-equations/radical-equations.json
deleted file mode 100644
index 5f9459bc92..0000000000
--- a/curriculum/math-challenges/32-linear-equations/radical-equations.json
+++ /dev/null
@@ -1,123 +0,0 @@
-{
- "name": "Radical Equations",
- "order": 36,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b482",
- "title": "Equations with Radicals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a095",
- "title": "Equations with Square Roots",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a096",
- "title": "Equations with Radicals on Both Sides",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a097",
- "title": "Equations with Variables Under and not Under a Radical",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a098",
- "title": "Graphs of Square Root Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a099",
- "title": "Shifts of Square Root Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a200",
- "title": "Graphing Cube Root Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a201",
- "title": "Square and Cube Root Function Families",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a202",
- "title": "Applications Using Radicals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/radical-expressions.json b/curriculum/math-challenges/32-linear-equations/radical-expressions.json
deleted file mode 100644
index 73422b0baf..0000000000
--- a/curriculum/math-challenges/32-linear-equations/radical-expressions.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Radical Expressions",
- "order": 35,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b481",
- "title": "Simplify Expressions with Radicals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a090",
- "title": "Multiplication and Division of Radicals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a091",
- "title": "Raising a Product or Quotient to a Power",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a092",
- "title": "Addition and Subtraction of Radicals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a093",
- "title": "nth Roots",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/solving-linear-systems.json b/curriculum/math-challenges/32-linear-equations/solving-linear-systems.json
deleted file mode 100644
index e5f6203b93..0000000000
--- a/curriculum/math-challenges/32-linear-equations/solving-linear-systems.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "name": "Solving Linear Systems",
- "order": 16,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b459",
- "title": "Linear Systems by Elimination",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a587af21a178128bc4071a",
- "title": "Solving Systems by Multiplying One Equation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a587af21a188128bc4071b",
- "title": "Solving Systems by Multiplying Both Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a001",
- "title": "Linear Systems by Elimination Using Multiplication",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a002",
- "title": "Systems Using Substitution",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a003",
- "title": "Comparing Methods for Solving Linear Systems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a004",
- "title": "Applications of Linear Systems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a005",
- "title": "Mixture Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a006",
- "title": "Systems of Linear Equations in Three Variables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a007",
- "title": "Linear Programming",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/solving-quadratic-equations.json b/curriculum/math-challenges/32-linear-equations/solving-quadratic-equations.json
deleted file mode 100644
index a7d1e96f81..0000000000
--- a/curriculum/math-challenges/32-linear-equations/solving-quadratic-equations.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "name": "Solving Quadratic Equations",
- "order": 37,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b483",
- "title": "Quadratic and Exponential Equations and Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a204",
- "title": "Use Square Roots to Solve Quadratic Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a205",
- "title": "Square Root Applications",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a206",
- "title": "Completing the Square",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a207",
- "title": "Completing the Square when the Leading Coefficient Equals 1",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a208",
- "title": "Vertex Form of a Quadratic Equation by Completing the Square",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a209",
- "title": "Use Graphs and Technology to Solve Quadratic Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a210",
- "title": "The Quadratic Formula",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a211",
- "title": "The Discriminant",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a212",
- "title": "Quadratic Equation Applications",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/solving-systems-of-linear-inequalities.json b/curriculum/math-challenges/32-linear-equations/solving-systems-of-linear-inequalities.json
deleted file mode 100644
index 63b9a69c39..0000000000
--- a/curriculum/math-challenges/32-linear-equations/solving-systems-of-linear-inequalities.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Solving Systems of Linear Inequalities",
- "order": 17,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b460",
- "title": "Graphs of Systems of Linear Inequalities in Two Variables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a009",
- "title": "Evaluate Solutions for Linear Inequalities in Two Variables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a010",
- "title": "Graphing to Check Solutions to Systems of Linear Inequalities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a011",
- "title": "Systems of Inequalities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a012",
- "title": "Quadratic Inequalities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a013",
- "title": "Polynomial and Rational Inequalities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/the-equation-of-a-line.json b/curriculum/math-challenges/32-linear-equations/the-equation-of-a-line.json
deleted file mode 100644
index c89179412d..0000000000
--- a/curriculum/math-challenges/32-linear-equations/the-equation-of-a-line.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "The Equation of a Line",
- "order": 14,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b457",
- "title": "Determining the Equation of a Line",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836568",
- "title": "Write an Equation Given the Slope and a Point",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836569",
- "title": "Write an Equation Given Two Points",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836570",
- "title": "Write a Function in Slope-Intercept Form",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836571",
- "title": "Fitting Lines to Data",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836572",
- "title": "Linear Interpolation and Extrapolation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836573",
- "title": "Applications of Linear Interpolation and Extrapolation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/the-forms-of-a-linear-equation.json b/curriculum/math-challenges/32-linear-equations/the-forms-of-a-linear-equation.json
deleted file mode 100644
index 731cfa19ef..0000000000
--- a/curriculum/math-challenges/32-linear-equations/the-forms-of-a-linear-equation.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "The Forms of a Linear Equation",
- "order": 12,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b455",
- "title": "Standard Form of Linear Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836560",
- "title": "Slope-Intercept Form of Linear Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836561",
- "title": "Point-Slope Form of Linear Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836562",
- "title": "Forms of Linear Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/the-pythagorean-theorem.json b/curriculum/math-challenges/32-linear-equations/the-pythagorean-theorem.json
deleted file mode 100644
index 1a3c37665a..0000000000
--- a/curriculum/math-challenges/32-linear-equations/the-pythagorean-theorem.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "The Pythagorean Theorem",
- "order": 34,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b480",
- "title": "Pythagorean Theorem and its Converse",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a083",
- "title": "Pythagorean Triples",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a084",
- "title": "Converse of the Pythagorean Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a085",
- "title": "Solving Equations Using the Pythagorean Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a086",
- "title": "Applications Using the Pythagorean Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a087",
- "title": "Distance Formula",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a088",
- "title": "Midpoint Formula",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/32-linear-equations/two-step-equations.json b/curriculum/math-challenges/32-linear-equations/two-step-equations.json
deleted file mode 100644
index 1888249ee6..0000000000
--- a/curriculum/math-challenges/32-linear-equations/two-step-equations.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Two-Step Equations",
- "order": 3,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b444",
- "title": "Two-Step Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836494",
- "title": "Two-Step Equations from Verbal Models",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836495",
- "title": "Two-Step Equations with Addition and Multiplication",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836496",
- "title": "Two-Step Equations with Addition and Division",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836497",
- "title": "Two-Step Equations with Subtraction and Multiplication",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836498",
- "title": "Two-Step Equations with Subtraction and Division",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59836499",
- "title": "Applications of Two-Step Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/angle-pairs.json b/curriculum/math-challenges/33-geometry/angle-pairs.json
deleted file mode 100644
index 0d6e5f2995..0000000000
--- a/curriculum/math-challenges/33-geometry/angle-pairs.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Angle Pairs",
- "order": 4,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b495",
- "title": "Angle Properties and Theorems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a272",
- "title": "Complementary Angles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a273",
- "title": "Supplementary Angles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a274",
- "title": "Missing Measures of Complementary and Supplementary Angles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a275",
- "title": "Vertical Angles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/angles.json b/curriculum/math-challenges/33-geometry/angles.json
deleted file mode 100644
index cbd62506ce..0000000000
--- a/curriculum/math-challenges/33-geometry/angles.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Angles",
- "order": 3,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b493",
- "title": "Introduction to Angles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a266",
- "title": "Identification of Angles by Vertex and Ray",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a267",
- "title": "Measuring Angles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a268",
- "title": "Classifying Angles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a269",
- "title": "Congruent Angles and Angle Bisectors",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a270",
- "title": "Constructions and Bisectors",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/arcs-and-chords.json b/curriculum/math-challenges/33-geometry/arcs-and-chords.json
deleted file mode 100644
index 5cb835c263..0000000000
--- a/curriculum/math-challenges/33-geometry/arcs-and-chords.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Arcs and Chords",
- "order": 25,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b515",
- "title": "Arcs in Circles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a394",
- "title": "Area of Sectors and Segments",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a395",
- "title": "Arc Length",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a396",
- "title": "Chords and Central Angle Arcs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a397",
- "title": "Segments from Chords",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/area-of-a-circle.json b/curriculum/math-challenges/33-geometry/area-of-a-circle.json
deleted file mode 100644
index 3272835938..0000000000
--- a/curriculum/math-challenges/33-geometry/area-of-a-circle.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Area of a Circle",
- "order": 24,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b514",
- "title": "Circle Area",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a391",
- "title": "Areas of Combined Figures Involving Semicircles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a392",
- "title": "Radius or Diameter of a Circle Given Area",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/basic-polygons.json b/curriculum/math-challenges/33-geometry/basic-polygons.json
deleted file mode 100644
index ab12656865..0000000000
--- a/curriculum/math-challenges/33-geometry/basic-polygons.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Basic Polygons",
- "order": 5,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b497",
- "title": "Classify Polygons",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a277",
- "title": "Vertices and Sides",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a278",
- "title": "Polygon Classification in the Coordinate Plane",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/basic-squares-and-rectangles.json b/curriculum/math-challenges/33-geometry/basic-squares-and-rectangles.json
deleted file mode 100644
index 180175369a..0000000000
--- a/curriculum/math-challenges/33-geometry/basic-squares-and-rectangles.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Basic Squares and Rectangles",
- "order": 19,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b509",
- "title": "Squares",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a358",
- "title": "Rectangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a359",
- "title": "Square and Rectangle Area and Perimeter",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a360",
- "title": "Perimeter of Squares and Rectangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a361",
- "title": "Area of Squares and Rectangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a362",
- "title": "Unknown Dimensions of Squares and Rectangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/circles-and-angles.json b/curriculum/math-challenges/33-geometry/circles-and-angles.json
deleted file mode 100644
index ff0e6bfee3..0000000000
--- a/curriculum/math-challenges/33-geometry/circles-and-angles.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Circles and Angles",
- "order": 26,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b516",
- "title": "Inscribed Angles in Circles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a399",
- "title": "Inscribed Quadrilaterals in Circles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a400",
- "title": "Angles On and Inside a Circle",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a401",
- "title": "Angles Outside a Circle",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/classifying-triangles.json b/curriculum/math-challenges/33-geometry/classifying-triangles.json
deleted file mode 100644
index cc4ed44d83..0000000000
--- a/curriculum/math-challenges/33-geometry/classifying-triangles.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Classifying Triangles",
- "order": 12,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b503",
- "title": "Classify Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a311",
- "title": "Classify Triangles by Angle Measurement",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a312",
- "title": "Classify Triangles by Side Measurement",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a313",
- "title": "Isosceles Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a314",
- "title": "Equilateral Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/composition-of-transformations.json b/curriculum/math-challenges/33-geometry/composition-of-transformations.json
deleted file mode 100644
index 90db2cc3b2..0000000000
--- a/curriculum/math-challenges/33-geometry/composition-of-transformations.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Composition of Transformations",
- "order": 37,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b526",
- "title": "Composite Transformations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a438",
- "title": "Notation for Composite Transformations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a439",
- "title": "Tessellations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/cones.json b/curriculum/math-challenges/33-geometry/cones.json
deleted file mode 100644
index d625355c89..0000000000
--- a/curriculum/math-challenges/33-geometry/cones.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Cones",
- "order": 43,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b532",
- "title": "Surface Area and Volume of Cones",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a461",
- "title": "Surface Area of Cones",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a462",
- "title": "Volume of Cones",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/cross-sections-and-basic-solids-of-revolution.json b/curriculum/math-challenges/33-geometry/cross-sections-and-basic-solids-of-revolution.json
deleted file mode 100644
index 0b5f41a262..0000000000
--- a/curriculum/math-challenges/33-geometry/cross-sections-and-basic-solids-of-revolution.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Cross Sections and Basic Solids of Revolution",
- "order": 39,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b528",
- "title": "Composite Solids",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a446",
- "title": "Area and Volume of Similar Solids",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a447",
- "title": "Surface Area and Volume Applications",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/cylinders.json b/curriculum/math-challenges/33-geometry/cylinders.json
deleted file mode 100644
index 4c7d80d9ad..0000000000
--- a/curriculum/math-challenges/33-geometry/cylinders.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Cylinders",
- "order": 42,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b531",
- "title": "Surface Area and Volume of Cylinders",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a457",
- "title": "Surface Area of Cylinders",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a458",
- "title": "Volume of Cylinders",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a459",
- "title": "Heights of Cylinders Given Surface Area or Volume",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/dilation.json b/curriculum/math-challenges/33-geometry/dilation.json
deleted file mode 100644
index dffda91d2b..0000000000
--- a/curriculum/math-challenges/33-geometry/dilation.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Dilation",
- "order": 31,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b521",
- "title": "Dilation of a Shape",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a421",
- "title": "Dilation in the Coordinate Plane",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a422",
- "title": "Mapping Dilations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a423",
- "title": "Self-Similarity and Fractals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/geometry-of-circles.json b/curriculum/math-challenges/33-geometry/geometry-of-circles.json
deleted file mode 100644
index 8651557fc8..0000000000
--- a/curriculum/math-challenges/33-geometry/geometry-of-circles.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Geometry of Circles",
- "order": 23,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b513",
- "title": "Semicircles and Quarter Circles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a386",
- "title": "Identify Circle Components",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a387",
- "title": "Use Diameter, Radius and Pi",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a388",
- "title": "Circumference",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a389",
- "title": "Diameter or Radius of a Circle Given Circumference",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/geometry-proofs.json b/curriculum/math-challenges/33-geometry/geometry-proofs.json
deleted file mode 100644
index 15beb4ccae..0000000000
--- a/curriculum/math-challenges/33-geometry/geometry-proofs.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Geometry Proofs",
- "order": 6,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b496",
- "title": "Basic Visual Patterns",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a280",
- "title": "Identify Basic Pattern Type",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a281",
- "title": "Number Patterns",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a282",
- "title": "Reasoning Types",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a283",
- "title": "Inductive Reasoning from Patterns",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a284",
- "title": "Conjectures and Counterexamples",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a285",
- "title": "Deductive Reasoning",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/introduction-to-solid-figures.json b/curriculum/math-challenges/33-geometry/introduction-to-solid-figures.json
deleted file mode 100644
index 02f8341bd8..0000000000
--- a/curriculum/math-challenges/33-geometry/introduction-to-solid-figures.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Introduction to Solid Figures",
- "order": 38,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b527",
- "title": "Polyhedrons",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a441",
- "title": "Faces Edges and Vertices of Solids",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a442",
- "title": "Cross-Sections and Nets",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a443",
- "title": "Surface Area",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a444",
- "title": "Volume",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/introduction-to-transformation.json b/curriculum/math-challenges/33-geometry/introduction-to-transformation.json
deleted file mode 100644
index b7d8fe0f9d..0000000000
--- a/curriculum/math-challenges/33-geometry/introduction-to-transformation.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "Introduction to Transformation Types",
- "order": 32,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b725",
- "title": "Identify Transformation Types",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/line-segments.json b/curriculum/math-challenges/33-geometry/line-segments.json
deleted file mode 100644
index 4e3cec474b..0000000000
--- a/curriculum/math-challenges/33-geometry/line-segments.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Line Segments",
- "order": 2,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b492",
- "title": "Definition of Line Segment",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a262",
- "title": "Midpoints and Segment Bisectors",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a263",
- "title": "Midpoint Formula",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a264",
- "title": "Points that Partition Line Segments",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/lines-in-the-coordinate-plane.json b/curriculum/math-challenges/33-geometry/lines-in-the-coordinate-plane.json
deleted file mode 100644
index 63fb58f98d..0000000000
--- a/curriculum/math-challenges/33-geometry/lines-in-the-coordinate-plane.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Lines in the Coordinate Plane",
- "order": 11,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b502",
- "title": "Parallel Lines in the Coordinate Plane",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a308",
- "title": "Perpendicular Lines in the Coordinate Plane",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a309",
- "title": "Line Construction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/lines.json b/curriculum/math-challenges/33-geometry/lines.json
deleted file mode 100644
index 87f01508a6..0000000000
--- a/curriculum/math-challenges/33-geometry/lines.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Lines",
- "order": 9,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b500",
- "title": "Line Types",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a299",
- "title": "Parallel and Skew Lines",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/logic-statements.json b/curriculum/math-challenges/33-geometry/logic-statements.json
deleted file mode 100644
index 2c124c66c2..0000000000
--- a/curriculum/math-challenges/33-geometry/logic-statements.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Logic Statements",
- "order": 7,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b498",
- "title": "Truth Tables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a287",
- "title": "And and Or Statements",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a288",
- "title": "Negative Statements",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a289",
- "title": "If Then Statements",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a290",
- "title": "Converse, Inverse, and Contrapositive Statements",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/polygon-angle-measures.json b/curriculum/math-challenges/33-geometry/polygon-angle-measures.json
deleted file mode 100644
index 819b72e521..0000000000
--- a/curriculum/math-challenges/33-geometry/polygon-angle-measures.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Polygon Angle Measures",
- "order": 22,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b512",
- "title": "Determine Missing Angle Measures",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a383",
- "title": "Interior Angles in Convex Polygons",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a384",
- "title": "Exterior Angles in Convex Polygons",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/polygons.json b/curriculum/math-challenges/33-geometry/polygons.json
deleted file mode 100644
index 384be3efeb..0000000000
--- a/curriculum/math-challenges/33-geometry/polygons.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Polygons",
- "order": 21,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b511",
- "title": "Regular and Irregular Polygons",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a377",
- "title": "Area of Regular and Irregular Polygons",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a378",
- "title": "Area and Perimeter of Similar Polygons",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a379",
- "title": "Construct Regular Polygons",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a380",
- "title": "Congruent Polygons",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a381",
- "title": "Corresponding Parts of Congruent Figures",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/prisms.json b/curriculum/math-challenges/33-geometry/prisms.json
deleted file mode 100644
index 0a44f7f98d..0000000000
--- a/curriculum/math-challenges/33-geometry/prisms.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Prisms",
- "order": 40,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b529",
- "title": "Surface Area and Volume of Prisms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a449",
- "title": "Surface Area of Prisms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a450",
- "title": "Volume of Prisms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a451",
- "title": "Volume of Prisms Using Unit Cubes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a452",
- "title": "Volume of Rectangular Prisms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a453",
- "title": "Volume of Triangular Prisms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/properties-and-proofs.json b/curriculum/math-challenges/33-geometry/properties-and-proofs.json
deleted file mode 100644
index 7090875218..0000000000
--- a/curriculum/math-challenges/33-geometry/properties-and-proofs.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Properties and Proofs",
- "order": 8,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b499",
- "title": "Introduction to Proofs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a292",
- "title": "Properties of Equality and Congruence",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a293",
- "title": "Proofs: Angle Pairs and Segments",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a294",
- "title": "Proofs involving Parallel and Perpendicular Lines",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a295",
- "title": "Parallelogram Proofs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a296",
- "title": "Proofs Involving Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a297",
- "title": "Indirect Proof in Algebra and Geometry",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/pyramids.json b/curriculum/math-challenges/33-geometry/pyramids.json
deleted file mode 100644
index d195b4a180..0000000000
--- a/curriculum/math-challenges/33-geometry/pyramids.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Pyramids",
- "order": 41,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b530",
- "title": "Surface Area and Volume of Pyramids",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a455",
- "title": "Volume of Pyramids",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/pythagorean-theorem.json b/curriculum/math-challenges/33-geometry/pythagorean-theorem.json
deleted file mode 100644
index 86707f05bc..0000000000
--- a/curriculum/math-challenges/33-geometry/pythagorean-theorem.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "name": "Pythagorean Theorem",
- "order": 16,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b507",
- "title": "Introduction to the Pythagorean Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a338",
- "title": "Basics of Pythagorean Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a339",
- "title": "Pythagorean Theorem to Classify Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a340",
- "title": "Pythagorean Triples",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a341",
- "title": "Converse of the Pythagorean Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a342",
- "title": "Pythagorean Theorem Applications",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a343",
- "title": "Right Triangles in Algebra",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a344",
- "title": "Pythagorean Theorem and its Converse",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a345",
- "title": "Solving Equations Using the Pythagorean Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a346",
- "title": "Applications Using the Pythagorean Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/quadrilaterals.json b/curriculum/math-challenges/33-geometry/quadrilaterals.json
deleted file mode 100644
index 23505a477c..0000000000
--- a/curriculum/math-challenges/33-geometry/quadrilaterals.json
+++ /dev/null
@@ -1,175 +0,0 @@
-{
- "name": "Quadrilaterals",
- "order": 20,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b510",
- "title": "Quadrilateral Classification",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a364",
- "title": "Parallelogram Classification",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a365",
- "title": "Parallelograms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a366",
- "title": "Area of a Parallelogram",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a367",
- "title": "Unknown Dimensions of Parallelograms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a368",
- "title": "Estimation of Parallelogram Area in Scale Drawings",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a369",
- "title": "Trapezoids",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a370",
- "title": "Area and Perimeter of Trapezoids",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a371",
- "title": "Area of Parallelograms: Squares, Rectangles and Trapezoids",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a372",
- "title": "Kites",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a373",
- "title": "Area and Perimeter of Rhombuses and Kites",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a374",
- "title": "Area and Perimeter of Composite Shapes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a375",
- "title": "Quadrilateral Classification in the Coordinate Plane",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/reflections.json b/curriculum/math-challenges/33-geometry/reflections.json
deleted file mode 100644
index 878dadfb36..0000000000
--- a/curriculum/math-challenges/33-geometry/reflections.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Reflections",
- "order": 36,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b525",
- "title": "Defining Reflection",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a435",
- "title": "Rules for Reflections",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a436",
- "title": "Reflecting Figures",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/rotations.json b/curriculum/math-challenges/33-geometry/rotations.json
deleted file mode 100644
index 686b59c332..0000000000
--- a/curriculum/math-challenges/33-geometry/rotations.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Rotations",
- "order": 35,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b524",
- "title": "Defining Rotation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a433",
- "title": "Rotation Rules",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/shapes.json b/curriculum/math-challenges/33-geometry/shapes.json
deleted file mode 100644
index 0f12b62a42..0000000000
--- a/curriculum/math-challenges/33-geometry/shapes.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Shapes",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b491",
- "title": "2D Shapes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a258",
- "title": "Identify Shapes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a259",
- "title": "Identify Less Common Shapes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a260",
- "title": "Composite Shapes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/similarity.json b/curriculum/math-challenges/33-geometry/similarity.json
deleted file mode 100644
index 971f971059..0000000000
--- a/curriculum/math-challenges/33-geometry/similarity.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Similarity",
- "order": 28,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b518",
- "title": "Similar Figures",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a407",
- "title": "Ratio and Proportion in Similar Figures",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a408",
- "title": "Similar Polygons and Scale Factors",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a409",
- "title": "Corresponding Parts of Similar Figures",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a410",
- "title": "Indirect Measurement",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a411",
- "title": "Indirect Measurement Applications",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/special-triangles.json b/curriculum/math-challenges/33-geometry/special-triangles.json
deleted file mode 100644
index a75eb1f1b1..0000000000
--- a/curriculum/math-challenges/33-geometry/special-triangles.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Special Triangles",
- "order": 18,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b508",
- "title": "Special Right Triangles and Ratios",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a354",
- "title": "45-45-90 Right Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a355",
- "title": "30-60-90 Right Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a356",
- "title": "Quadrilaterals and Polygons",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/spheres.json b/curriculum/math-challenges/33-geometry/spheres.json
deleted file mode 100644
index ada0c44be8..0000000000
--- a/curriculum/math-challenges/33-geometry/spheres.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Spheres",
- "order": 44,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b533",
- "title": "Surface Area and Volume of Spheres",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a464",
- "title": "Surface Area of Spheres",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a465",
- "title": "Volume of Spheres",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/symmetry.json b/curriculum/math-challenges/33-geometry/symmetry.json
deleted file mode 100644
index 60fdf6217e..0000000000
--- a/curriculum/math-challenges/33-geometry/symmetry.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Symmetry",
- "order": 33,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b522",
- "title": "Lines of Symmetry",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a426",
- "title": "Reflection Symmetry",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a427",
- "title": "Rotation Symmetry",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/tangent-lines-and-theorems.json b/curriculum/math-challenges/33-geometry/tangent-lines-and-theorems.json
deleted file mode 100644
index 9a589112e5..0000000000
--- a/curriculum/math-challenges/33-geometry/tangent-lines-and-theorems.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Tangent Lines and Theorems",
- "order": 27,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b517",
- "title": "Tangent Lines",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a403",
- "title": "Intersecting Secants Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a404",
- "title": "Tangent Secant Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a405",
- "title": "Circles in the Coordinate Plane",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/the-distance-formula.json b/curriculum/math-challenges/33-geometry/the-distance-formula.json
deleted file mode 100644
index 3df30f642e..0000000000
--- a/curriculum/math-challenges/33-geometry/the-distance-formula.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "The Distance Formula",
- "order": 17,
- "challenges": [
- {
- "id": "59a5801209a6acac5783b507",
- "title": "Introduction to the Distance Formula",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac59a3a348",
- "title": "Distance and Triangle Classification Using the Pythagorean Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a349",
- "title": "Distance Formula and the Pythagorean Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a350",
- "title": "Distance Between Parallel Lines",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a351",
- "title": "The Distance Formula and Algebra",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a352",
- "title": "Applications of the Distance Formula",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/translations.json b/curriculum/math-challenges/33-geometry/translations.json
deleted file mode 100644
index 0a148dc7b4..0000000000
--- a/curriculum/math-challenges/33-geometry/translations.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Translations",
- "order": 34,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b523",
- "title": "Geometric Translation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a429",
- "title": "Sliding Figures",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a430",
- "title": "Translation Notation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a431",
- "title": "Translation Applications in Circle Similarity",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/transversals.json b/curriculum/math-challenges/33-geometry/transversals.json
deleted file mode 100644
index 2c44c64c4b..0000000000
--- a/curriculum/math-challenges/33-geometry/transversals.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Transversals",
- "order": 10,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b501",
- "title": "Parallel Lines and Transversals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a302",
- "title": "Corresponding Angles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a303",
- "title": "Alternate Interior Angles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a304",
- "title": "Alternate Exterior Angles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a305",
- "title": "Same Side Interior Angles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a306",
- "title": "Angles and Perpendicular Lines",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/triangle-area-and-perimeter.json b/curriculum/math-challenges/33-geometry/triangle-area-and-perimeter.json
deleted file mode 100644
index ec931c59c6..0000000000
--- a/curriculum/math-challenges/33-geometry/triangle-area-and-perimeter.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Triangle Area and Perimeter",
- "order": 13,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b504",
- "title": "Area and Perimeter of Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a316",
- "title": "Triangle Area",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a317",
- "title": "Unknown Dimensions of Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/triangle-congruency.json b/curriculum/math-challenges/33-geometry/triangle-congruency.json
deleted file mode 100644
index 4f8f1d76d6..0000000000
--- a/curriculum/math-challenges/33-geometry/triangle-congruency.json
+++ /dev/null
@@ -1,110 +0,0 @@
-{
- "name": "Triangle Congruency",
- "order": 14,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b505",
- "title": "CPCTC",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a319",
- "title": "Congruence Statements",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a320",
- "title": "Third Angle Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a321",
- "title": "Congruent Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a322",
- "title": "SSS",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a323",
- "title": "SAS",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a324",
- "title": "ASA and AAS",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a325",
- "title": "HL",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/triangle-proportionality.json b/curriculum/math-challenges/33-geometry/triangle-proportionality.json
deleted file mode 100644
index 823761cf2c..0000000000
--- a/curriculum/math-challenges/33-geometry/triangle-proportionality.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Triangle Proportionality",
- "order": 30,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b520",
- "title": "Proportional Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a416",
- "title": "Inscribed Similar Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a417",
- "title": "Parallel Lines, Transversals, and Proportionality",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a418",
- "title": "Proportions and Angle Bisectors",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a419",
- "title": "Theorems Involving Similarity",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/triangle-relationships.json b/curriculum/math-challenges/33-geometry/triangle-relationships.json
deleted file mode 100644
index a32434568d..0000000000
--- a/curriculum/math-challenges/33-geometry/triangle-relationships.json
+++ /dev/null
@@ -1,149 +0,0 @@
-{
- "name": "Triangle Relationships",
- "order": 15,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b506",
- "title": "Triangle Angle Sum Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a327",
- "title": "Exterior Angles and Theorems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a328",
- "title": "Midsegment Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a329",
- "title": "Perpendicular Bisectors",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a330",
- "title": "Angle Bisectors in Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a331",
- "title": "Concurrence and Constructions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a332",
- "title": "Medians",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a333",
- "title": "Altitudes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a334",
- "title": "Comparing Angles and Sides in Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a335",
- "title": "Triangle Inequality Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a336",
- "title": "Right Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/33-geometry/triangle-similarity.json b/curriculum/math-challenges/33-geometry/triangle-similarity.json
deleted file mode 100644
index a483214fcf..0000000000
--- a/curriculum/math-challenges/33-geometry/triangle-similarity.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Triangle Similarity",
- "order": 29,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b519",
- "title": "AA Similarity",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a413",
- "title": "SSS Similarity",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a414",
- "title": "SAS Similarity",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/34-trigonometry/area-of-non-right-triangles.json b/curriculum/math-challenges/34-trigonometry/area-of-non-right-triangles.json
deleted file mode 100644
index d9a6ffc5b1..0000000000
--- a/curriculum/math-challenges/34-trigonometry/area-of-non-right-triangles.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Area of Non-Right Triangles",
- "order": 15,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b548",
- "title": "Area Formula for Non-Right Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a573",
- "title": "Introduction to the Triangle Area Formula",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a574",
- "title": "Determination of Unknown Triangle Measures Given Area",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a575",
- "title": "Heron's Formula",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a576",
- "title": "General Solutions of Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/34-trigonometry/basic-trig-identity-applications.json b/curriculum/math-challenges/34-trigonometry/basic-trig-identity-applications.json
deleted file mode 100644
index 64dae92b61..0000000000
--- a/curriculum/math-challenges/34-trigonometry/basic-trig-identity-applications.json
+++ /dev/null
@@ -1,110 +0,0 @@
-{
- "name": "Basic Trig Identity Applications",
- "order": 10,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b544",
- "title": "Trig Identities to Find Exact Trigonometric Values",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a538",
- "title": "Simplifying Trigonometric Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a539",
- "title": "Proofs of Trigonometric Identities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a540",
- "title": "Simpler Form of Trigonometric Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a541",
- "title": "Solving Trigonometric Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a542",
- "title": "Solving Trigonometric Equations Using Basic Algebra",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a543",
- "title": "Trigonometric Equations Using the Quadratic Formula",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a544",
- "title": "Trigonometric Equations Using Factoring",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/34-trigonometry/double-and-half-angle-identities.json b/curriculum/math-challenges/34-trigonometry/double-and-half-angle-identities.json
deleted file mode 100644
index 183a9439ca..0000000000
--- a/curriculum/math-challenges/34-trigonometry/double-and-half-angle-identities.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Double and Half Angle Identities",
- "order": 12,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b546",
- "title": "Double and Half Angle Formulas",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a554",
- "title": "Double Angle Identities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a555",
- "title": "Simplifying Trigonometric Expressions with Double-Angle Identities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a556",
- "title": "Solving Equations with Double-Angle Identities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a557",
- "title": "Half Angle Formulas",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a558",
- "title": "Trigonometric Equations Using Half Angle Formulas",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/34-trigonometry/introduction-to-trigonometry.json b/curriculum/math-challenges/34-trigonometry/introduction-to-trigonometry.json
deleted file mode 100644
index eb9c2c7388..0000000000
--- a/curriculum/math-challenges/34-trigonometry/introduction-to-trigonometry.json
+++ /dev/null
@@ -1,162 +0,0 @@
-{
- "name": "Introduction to Trigonometry",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b534",
- "title": "Right triangles and the Pythagorean theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a467",
- "title": "Pythagorean Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a468",
- "title": "Converse of the Pythagorean Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a469",
- "title": "Pythagorean Triples",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a470",
- "title": "Applications Using the Pythagorean Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a471",
- "title": "The Pythagorean Theorem for Area and Perimeter",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a472",
- "title": "Distance Formula and the Pythagorean Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a473",
- "title": "Pythagorean Theorem to Classify Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a474",
- "title": "Special Right Triangles and Ratios",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a475",
- "title": "45-45-90 Right Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a476",
- "title": "30-60-90 Right Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a477",
- "title": "Trigonometric Ratios",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/34-trigonometry/inverse-trigonometric-functions.json b/curriculum/math-challenges/34-trigonometry/inverse-trigonometric-functions.json
deleted file mode 100644
index 60d3c36548..0000000000
--- a/curriculum/math-challenges/34-trigonometry/inverse-trigonometric-functions.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Inverse Trigonometric Functions",
- "order": 5,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b538",
- "title": "Inverse Trig Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a503",
- "title": "Inverses by Mapping",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a504",
- "title": "Composition of Trig Functions and Their Inverses",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a505",
- "title": "Definition of Inverse Reciprocal Trig Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a506",
- "title": "Composition of Inverse Reciprocal Trig Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a507",
- "title": "Trig Functions as Algebra Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/34-trigonometry/non-right-triangle-trigonometry.json b/curriculum/math-challenges/34-trigonometry/non-right-triangle-trigonometry.json
deleted file mode 100644
index 85e3fc098c..0000000000
--- a/curriculum/math-challenges/34-trigonometry/non-right-triangle-trigonometry.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "name": "Non-Right Triangle Trigonometry",
- "order": 14,
- "challenges": [
- {
- "id": "59a5801209a6adac5983b548",
- "title": "Laws of Sines and Cosines",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a563",
- "title": "Law of Sines",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a564",
- "title": "Angle-Angle-Side Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a565",
- "title": "Angle-Side-Angle Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a566",
- "title": "Side-Side-Angle: The Ambiguous Case",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a567",
- "title": "Law of Cosines",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a568",
- "title": "Determination of Unknown Angles Using Law of Cosines",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a569",
- "title": "Identify Accurate Drawings of Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a570",
- "title": "Applications of the Law of Cosines",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a571",
- "title": "Trigonometry Word Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/34-trigonometry/polar-curves-and-rectangular-conversions.json b/curriculum/math-challenges/34-trigonometry/polar-curves-and-rectangular-conversions.json
deleted file mode 100644
index c7fdb53db1..0000000000
--- a/curriculum/math-challenges/34-trigonometry/polar-curves-and-rectangular-conversions.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Polar Curves and Rectangular Conversions",
- "order": 17,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b550",
- "title": " Polar and Rectangular Conversions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a583",
- "title": " Rectangular to Polar Conversions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a584",
- "title": " Rectangular to Polar Form for Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a585",
- "title": " Intersections of Polar Curves",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a586",
- "title": " Equivalent Polar Curves",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a587",
- "title": " Systems of Polar Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/34-trigonometry/radians.json b/curriculum/math-challenges/34-trigonometry/radians.json
deleted file mode 100644
index 8fb80d6c4e..0000000000
--- a/curriculum/math-challenges/34-trigonometry/radians.json
+++ /dev/null
@@ -1,110 +0,0 @@
-{
- "name": "Radians",
- "order": 6,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b539",
- "title": "Radian Measure",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a509",
- "title": "Conversion between Degrees and Radians",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a510",
- "title": "Trig Functions and Radians with Technology",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a511",
- "title": "Rotations in Radians",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a512",
- "title": "Angular Velocity",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a513",
- "title": "Length of an Arc",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a514",
- "title": "Area of a Sector",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a515",
- "title": "Length of a Chord",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/34-trigonometry/sine-and-cosine-graphs.json b/curriculum/math-challenges/34-trigonometry/sine-and-cosine-graphs.json
deleted file mode 100644
index 2e060ff5e8..0000000000
--- a/curriculum/math-challenges/34-trigonometry/sine-and-cosine-graphs.json
+++ /dev/null
@@ -1,123 +0,0 @@
-{
- "name": "Sine and Cosine Graphs",
- "order": 7,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b540",
- "title": "Sine Graph and Cosine Graph",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a517",
- "title": "Translating Sine and Cosine Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a518",
- "title": "Vertical Translations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a519",
- "title": "Horizontal Translations or Phase Shifts",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a520",
- "title": "Amplitude, Period, and Frequency",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a521",
- "title": "Amplitude",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a522",
- "title": "Period and Frequency",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a523",
- "title": "Trigonometric Identities and Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a524",
- "title": "General Sinusoidal Graphs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/34-trigonometry/six-trig-function-graphs.json b/curriculum/math-challenges/34-trigonometry/six-trig-function-graphs.json
deleted file mode 100644
index 0526cec665..0000000000
--- a/curriculum/math-challenges/34-trigonometry/six-trig-function-graphs.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Six Trig Function Graphs",
- "order": 8,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b541",
- "title": "Graphing Tangent, Cotangent, Secant and Cosecant",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a526",
- "title": "Tangent Graphs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a527",
- "title": "Tangent and Cotangent Graphs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a528",
- "title": "Sine and Cosecant Graphs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a529",
- "title": "Cosine and Secant Graphs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a530",
- "title": "Graph Inverse Trigonometric Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/34-trigonometry/solving-triangles.json b/curriculum/math-challenges/34-trigonometry/solving-triangles.json
deleted file mode 100644
index b55def2867..0000000000
--- a/curriculum/math-challenges/34-trigonometry/solving-triangles.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Solving Triangles",
- "order": 3,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b536",
- "title": "The Pythagorean Theorem and Trigonometry",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a486",
- "title": "Trig Function Applications",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a487",
- "title": "Angles of Elevation and Depression",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a488",
- "title": "Right Triangles and Bearings",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a489",
- "title": "Solve Right Triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a490",
- "title": "Applications of Inverse Trigonometric Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a491",
- "title": "Inverse Trig Functions using Algebra",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/34-trigonometry/sum-and-difference-identities.json b/curriculum/math-challenges/34-trigonometry/sum-and-difference-identities.json
deleted file mode 100644
index 4f246d32f4..0000000000
--- a/curriculum/math-challenges/34-trigonometry/sum-and-difference-identities.json
+++ /dev/null
@@ -1,110 +0,0 @@
-{
- "name": "Sum and Difference Identities",
- "order": 11,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b545",
- "title": "Sum and Difference Formulas",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a546",
- "title": "Simplifying Trigonometric Expressions using Sum and Difference Formulas",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a547",
- "title": "Sine Sum and Difference Formulas",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a548",
- "title": "Cosine Sum and Difference Formulas",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a549",
- "title": "Tangent Sum and Difference Formulas",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a550",
- "title": "Solving Trigonometric Equations using Sum and Difference Formulas",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a551",
- "title": "Finding Exact Trigonometric Values Using Sum and Difference Formulas",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a552",
- "title": "Applications of Sum and Difference Formulas",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/34-trigonometry/sum-to-product-and-triple-angle-formulas.json b/curriculum/math-challenges/34-trigonometry/sum-to-product-and-triple-angle-formulas.json
deleted file mode 100644
index 0df060e2fe..0000000000
--- a/curriculum/math-challenges/34-trigonometry/sum-to-product-and-triple-angle-formulas.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Sum to Product and Triple Angle Formulas",
- "order": 13,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b547",
- "title": "Sum to Product Formulas for Sine and Cosine",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a560",
- "title": "Product to Sum Formulas for Sine and Cosine",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a561",
- "title": "Triple-Angle Formulas and Linear Combinations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/34-trigonometry/the-polar-coordinate-system-and-graphing.json b/curriculum/math-challenges/34-trigonometry/the-polar-coordinate-system-and-graphing.json
deleted file mode 100644
index 95a88c7938..0000000000
--- a/curriculum/math-challenges/34-trigonometry/the-polar-coordinate-system-and-graphing.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "The Polar Coordinate System and Graphing",
- "order": 16,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b549",
- "title": " Plots of Polar Coordinates",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a578",
- "title": " Distance Between Two Polar Coordinates",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a579",
- "title": " Graph Polar Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a580",
- "title": " Transformations of Polar Graphs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a581",
- "title": " Special Polar Equations and Graphs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/34-trigonometry/trig-functions.json b/curriculum/math-challenges/34-trigonometry/trig-functions.json
deleted file mode 100644
index 3fda7f46e4..0000000000
--- a/curriculum/math-challenges/34-trigonometry/trig-functions.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Trig Functions",
- "order": 2,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b535",
- "title": "Right Triangle Trigonometry",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a479",
- "title": "Calculator Trig Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a480",
- "title": "SIN",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a481",
- "title": "COS",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a482",
- "title": "Sine and Cosine of Complementary Angles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a483",
- "title": "TAN",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a484",
- "title": "SEC CSC COT",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/34-trigonometry/trig-in-the-unit-circle.json b/curriculum/math-challenges/34-trigonometry/trig-in-the-unit-circle.json
deleted file mode 100644
index 66bc2f8356..0000000000
--- a/curriculum/math-challenges/34-trigonometry/trig-in-the-unit-circle.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "name": "Trig in the Unit Circle",
- "order": 4,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b537",
- "title": "Trigonometry and the Unit Circle",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a493",
- "title": "Measuring Rotation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a494",
- "title": "Angles of Rotation in Standard Positions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a495",
- "title": "Coterminal Angles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a496",
- "title": "Signs of Trigonometric Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a497",
- "title": "Trigonometric Functions and Angles of Rotation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a498",
- "title": "Reference Angles and Angles in the Unit Circle",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a499",
- "title": "Trigonometric Functions of Negative Angles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a500",
- "title": "Trigonometric Functions of Angles Greater than 360 Degrees",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a501",
- "title": "Exact Values for Inverse Sine, Cosine, and Tangent",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/34-trigonometry/trigonometric-identities.json b/curriculum/math-challenges/34-trigonometry/trigonometric-identities.json
deleted file mode 100644
index e19ce7cc54..0000000000
--- a/curriculum/math-challenges/34-trigonometry/trigonometric-identities.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Trigonometric Identities",
- "order": 9,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b543",
- "title": "Fundamental Trigonometric Identities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a532",
- "title": "Quotient Identities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a533",
- "title": "Reciprocal Identities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a534",
- "title": "Pythagorean Identities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a535",
- "title": "Even and Odd Identities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a536",
- "title": "Cofunction Identities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/35-complex-numbers/introduction-to-complex-numbers.json b/curriculum/math-challenges/35-complex-numbers/introduction-to-complex-numbers.json
deleted file mode 100644
index 4bb795f528..0000000000
--- a/curriculum/math-challenges/35-complex-numbers/introduction-to-complex-numbers.json
+++ /dev/null
@@ -1,162 +0,0 @@
-{
- "name": "Introduction to Complex Numbers",
- "order": 18,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b551",
- "title": "Imaginary and Complex Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a589",
- "title": "Imaginary Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a590",
- "title": "The Complex Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a591",
- "title": "Quadratic Formula and Complex Sums",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a592",
- "title": "Products and Quotients of Complex Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a593",
- "title": "Product and Quotient Theorems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a594",
- "title": "Trigonometric Form of Complex Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a595",
- "title": "Polar Form of a Complex Number",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a596",
- "title": "DeMoivre's Theorem and nth Roots",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a597",
- "title": "DeMoivre's Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a598",
- "title": "Equations Using DeMoivre's Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a599",
- "title": "Geometry of Complex Roots",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/36-precalculus/analytic-geometry.json b/curriculum/math-challenges/36-precalculus/analytic-geometry.json
deleted file mode 100644
index 2426860dcb..0000000000
--- a/curriculum/math-challenges/36-precalculus/analytic-geometry.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Analytic Geometry",
- "order": 10,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b561",
- "title": "Parabolas",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a661",
- "title": "Ellipses",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a662",
- "title": "Hyperbolas",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a663",
- "title": "Shifted Conics",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a664",
- "title": "Rotation of axes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a665",
- "title": "Polar equations of conics",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a666",
- "title": "Plane curves and parametric equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/36-precalculus/analytic-trigonometry.json b/curriculum/math-challenges/36-precalculus/analytic-trigonometry.json
deleted file mode 100644
index 7a47f9fe75..0000000000
--- a/curriculum/math-challenges/36-precalculus/analytic-trigonometry.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Analytic Trigonometry",
- "order": 7,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b558",
- "title": "Trigonometric identities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a641",
- "title": "Addition and subtraction formulas",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a642",
- "title": "Double-angle, half-angle, and sum-product formulas",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a643",
- "title": "Inverse trigonometric functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a644",
- "title": "Trigonometric equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/36-precalculus/exponential-and-logarithmic-functions.json b/curriculum/math-challenges/36-precalculus/exponential-and-logarithmic-functions.json
deleted file mode 100644
index 1b687e667e..0000000000
--- a/curriculum/math-challenges/36-precalculus/exponential-and-logarithmic-functions.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Exponential and logarithmic functions",
- "order": 4,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b555",
- "title": "Exponential functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a627",
- "title": "Logarithmic functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a628",
- "title": "Laws of Logarithms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a629",
- "title": "Exponential and Logarithmic equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a630",
- "title": "Modeling with exponential and logarithmic equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/36-precalculus/functions.json b/curriculum/math-challenges/36-precalculus/functions.json
deleted file mode 100644
index bc56e75146..0000000000
--- a/curriculum/math-challenges/36-precalculus/functions.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "name": "Functions",
- "order": 2,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b553",
- "title": "What is a function",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a611",
- "title": "Graphs of functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a612",
- "title": "Increase and decreasing functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a613",
- "title": "Average rate of change",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a614",
- "title": "Transformations of functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a615",
- "title": "Quadratic functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a616",
- "title": "Maxima and minima",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a617",
- "title": "Modeling with functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a618",
- "title": "Combining functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a619",
- "title": "One-to-one functions and their inverses",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/36-precalculus/fundamentals.json b/curriculum/math-challenges/36-precalculus/fundamentals.json
deleted file mode 100644
index 9a5e553e10..0000000000
--- a/curriculum/math-challenges/36-precalculus/fundamentals.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "name": "Fundamentals",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b552",
- "title": "Real numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a601",
- "title": "Exponents and radicals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a602",
- "title": "Algebraic Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a603",
- "title": "Rational Expressions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a604",
- "title": "Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a605",
- "title": "Modeling with equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a606",
- "title": "Inequalities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a607",
- "title": "Coordinate Geometry",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a608",
- "title": "Lines",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a609",
- "title": "Modeling variation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/36-precalculus/polar-coordinates-and-vectors.json b/curriculum/math-challenges/36-precalculus/polar-coordinates-and-vectors.json
deleted file mode 100644
index ce48a99b1b..0000000000
--- a/curriculum/math-challenges/36-precalculus/polar-coordinates-and-vectors.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Polar Coordinates and Vectors",
- "order": 8,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b559",
- "title": "Polar coordinates",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a646",
- "title": "Graphs of polar equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a647",
- "title": "Polar form of complex numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a648",
- "title": "Demoivre's theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a649",
- "title": "Vectors",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a650",
- "title": "Dot Product",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/36-precalculus/polynomial-and-rational-functions.json b/curriculum/math-challenges/36-precalculus/polynomial-and-rational-functions.json
deleted file mode 100644
index b1c37e02a7..0000000000
--- a/curriculum/math-challenges/36-precalculus/polynomial-and-rational-functions.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Polynomial and Rational functions",
- "order": 3,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b554",
- "title": "Polynomial functions and graphing them",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a621",
- "title": "Dividing polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a622",
- "title": "Real zeros of polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a623",
- "title": "Complex numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a624",
- "title": "Complex zeros and fundamental theorem of algebra",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a625",
- "title": "Rational functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/36-precalculus/sequences-and-series.json b/curriculum/math-challenges/36-precalculus/sequences-and-series.json
deleted file mode 100644
index c6421917df..0000000000
--- a/curriculum/math-challenges/36-precalculus/sequences-and-series.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Sequences and series",
- "order": 11,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b562",
- "title": "Sequences and summation notation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a668",
- "title": "Arithmetic sequences",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a669",
- "title": "Geometric sequences",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a670",
- "title": "Mathematical induction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a671",
- "title": "Binomial theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/36-precalculus/systems-of-equations-and-inequalities.json b/curriculum/math-challenges/36-precalculus/systems-of-equations-and-inequalities.json
deleted file mode 100644
index f49dc34ee5..0000000000
--- a/curriculum/math-challenges/36-precalculus/systems-of-equations-and-inequalities.json
+++ /dev/null
@@ -1,123 +0,0 @@
-{
- "name": "Systems of equations and inequalities",
- "order": 9,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b560",
- "title": "Systems of equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a652",
- "title": "Systems of linear equations in two variables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a653",
- "title": "Systems of linear equations in several variables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a654",
- "title": "Systems of linear equations in matrices",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a655",
- "title": "Algebra of matrices",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a656",
- "title": "Inverses of matrices and matrix equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a657",
- "title": "Determinants and Cramer's rule",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a658",
- "title": "Partial fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a659",
- "title": "Systems of inequalities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/36-precalculus/trigonometric-functions-of-angles.json b/curriculum/math-challenges/36-precalculus/trigonometric-functions-of-angles.json
deleted file mode 100644
index 3d58b6b9a2..0000000000
--- a/curriculum/math-challenges/36-precalculus/trigonometric-functions-of-angles.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Trigonometric Functions of Angles",
- "order": 6,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b557",
- "title": "Angle measure",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a636",
- "title": "Trigonometry of right triangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a637",
- "title": "Trigonometric functions of angles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a638",
- "title": "Law of sines",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a639",
- "title": "Law of cosines",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/36-precalculus/trigonometric-functions-of-real-numbers.json b/curriculum/math-challenges/36-precalculus/trigonometric-functions-of-real-numbers.json
deleted file mode 100644
index 0ff1f0036e..0000000000
--- a/curriculum/math-challenges/36-precalculus/trigonometric-functions-of-real-numbers.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Trigonometric Functions of Real Numbers",
- "order": 5,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b556",
- "title": "Unit Circle",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a632",
- "title": "Trigonometric Functions of Real Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a633",
- "title": "Trigonometric Graphs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a634",
- "title": "Modeling Harmonic Motion",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/37-single-variable-calculus/applications-of-differentiation.json b/curriculum/math-challenges/37-single-variable-calculus/applications-of-differentiation.json
deleted file mode 100644
index 75aa2fdf0e..0000000000
--- a/curriculum/math-challenges/37-single-variable-calculus/applications-of-differentiation.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Applications of Differentiation",
- "order": 4,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b566",
- "title": "Max and min values",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a695",
- "title": "Mean value theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a696",
- "title": "How derivatives affect the shape of a graph",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a697",
- "title": "Indeterminate form and l'Hospital's rule",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a698",
- "title": "Optimization Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a699",
- "title": "Newton's method",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a700",
- "title": "Antiderivatives",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/37-single-variable-calculus/applications-of-integration.json b/curriculum/math-challenges/37-single-variable-calculus/applications-of-integration.json
deleted file mode 100644
index 47d43dd257..0000000000
--- a/curriculum/math-challenges/37-single-variable-calculus/applications-of-integration.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Applications of Integration",
- "order": 6,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b568",
- "title": "Areas between curves",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a707",
- "title": "Volumes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a708",
- "title": "Volumes by cylindrical shells",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a709",
- "title": "Average value of a function",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/37-single-variable-calculus/differential-equations.json b/curriculum/math-challenges/37-single-variable-calculus/differential-equations.json
deleted file mode 100644
index 0028a7dd71..0000000000
--- a/curriculum/math-challenges/37-single-variable-calculus/differential-equations.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Differential Equations",
- "order": 9,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b571",
- "title": "Modeling with differential equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a722",
- "title": "Direction fields and Euler's method",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a723",
- "title": "Separable equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a724",
- "title": "Models for population growth",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a725",
- "title": "Linear equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/37-single-variable-calculus/differentiation.json b/curriculum/math-challenges/37-single-variable-calculus/differentiation.json
deleted file mode 100644
index c3b358b7ad..0000000000
--- a/curriculum/math-challenges/37-single-variable-calculus/differentiation.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "name": "Differentiation",
- "order": 3,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b565",
- "title": "Derivatives of polynomials and exponential functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a685",
- "title": "Product and quotient rules",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a686",
- "title": "Derivatives of trigonometric functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a687",
- "title": "Chain rule",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a688",
- "title": "Implicit differentiation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a689",
- "title": "Derivatives of logarithmic functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a690",
- "title": "Exponential growth and decay",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a691",
- "title": "Linear approximations and differentials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a692",
- "title": "Taylor polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a693",
- "title": "Hyperbolic functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/37-single-variable-calculus/functions-and-models.json b/curriculum/math-challenges/37-single-variable-calculus/functions-and-models.json
deleted file mode 100644
index aea609ac54..0000000000
--- a/curriculum/math-challenges/37-single-variable-calculus/functions-and-models.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Functions and Models",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b563",
- "title": "Ways to represent a functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a673",
- "title": "Essential functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a674",
- "title": "New functions from old functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a675",
- "title": "Exponential functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a676",
- "title": "Inverse functions and logarithms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/37-single-variable-calculus/further-applications-of-integration.json b/curriculum/math-challenges/37-single-variable-calculus/further-applications-of-integration.json
deleted file mode 100644
index 3915945673..0000000000
--- a/curriculum/math-challenges/37-single-variable-calculus/further-applications-of-integration.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Further applications of Integration",
- "order": 8,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b570",
- "title": "Arc length",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a718",
- "title": "Area of a surface of revolution",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a719",
- "title": "Applications to physics,engineering, economics, or biology",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a720",
- "title": "Probability",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/37-single-variable-calculus/infinite-sequences-and-series.json b/curriculum/math-challenges/37-single-variable-calculus/infinite-sequences-and-series.json
deleted file mode 100644
index fb15937862..0000000000
--- a/curriculum/math-challenges/37-single-variable-calculus/infinite-sequences-and-series.json
+++ /dev/null
@@ -1,149 +0,0 @@
-{
- "name": "Infinite Sequences and Series",
- "order": 11,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b574",
- "title": "Sequences",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a731",
- "title": "Series",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a732",
- "title": "Integral test and estimates of sum",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a733",
- "title": "Comparison tests",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a734",
- "title": "alternating seres",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a735",
- "title": "Absolute convergence",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a736",
- "title": "Ratio test and root test",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a737",
- "title": "Power series",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a738",
- "title": "Representing functions as power series",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a739",
- "title": "Taylor and Maclaurin series",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a740",
- "title": "Applications of Taylor polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/37-single-variable-calculus/integrals.json b/curriculum/math-challenges/37-single-variable-calculus/integrals.json
deleted file mode 100644
index 70a0cad9b8..0000000000
--- a/curriculum/math-challenges/37-single-variable-calculus/integrals.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Integrals",
- "order": 5,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b567",
- "title": "Areas and distances",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a702",
- "title": "Definite integrals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a703",
- "title": "Fundamental theorem of calculus",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a704",
- "title": "Indefinite integrals and the Net change theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a705",
- "title": "Substitution rule",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/37-single-variable-calculus/limits-and-derivatives.json b/curriculum/math-challenges/37-single-variable-calculus/limits-and-derivatives.json
deleted file mode 100644
index 457fcba25d..0000000000
--- a/curriculum/math-challenges/37-single-variable-calculus/limits-and-derivatives.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Limits and Derivatives",
- "order": 2,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b564",
- "title": "Limit of a functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a678",
- "title": "Calculating limits using the limit laws",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a679",
- "title": "Precise definition of a limit",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a680",
- "title": "Continuity",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a681",
- "title": "Limits at infinity: horizontal asymptotes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a682",
- "title": "Derivatives and rates of change",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a683",
- "title": "Derivative as a function",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/37-single-variable-calculus/parametric-equations.json b/curriculum/math-challenges/37-single-variable-calculus/parametric-equations.json
deleted file mode 100644
index b32aa97da2..0000000000
--- a/curriculum/math-challenges/37-single-variable-calculus/parametric-equations.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Parametric Equations",
- "order": 10,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b572",
- "title": "Curves defined by parametric equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a727",
- "title": "Calculus with parametric curves",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/37-single-variable-calculus/polar-coordinates.json b/curriculum/math-challenges/37-single-variable-calculus/polar-coordinates.json
deleted file mode 100644
index 5cb7f555f9..0000000000
--- a/curriculum/math-challenges/37-single-variable-calculus/polar-coordinates.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Polar Coordinates",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b573",
- "title": "Areas and lengths in polar coordinates",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a729",
- "title": "Conic sections in polar coordinates",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/37-single-variable-calculus/techniques-of-integration.json b/curriculum/math-challenges/37-single-variable-calculus/techniques-of-integration.json
deleted file mode 100644
index ed99b1e4b4..0000000000
--- a/curriculum/math-challenges/37-single-variable-calculus/techniques-of-integration.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Techniques of Integration",
- "order": 7,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b569",
- "title": "Integration by parts",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a711",
- "title": "Trigonometric integrals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a712",
- "title": "Trigonometric Substitution",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a713",
- "title": "Integration of rational functions by partial fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a714",
- "title": "Strategy for integration",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a715",
- "title": "Approximate integration",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a716",
- "title": "Improper integrals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/38-multivariable-calculus/multiple-integrals.json b/curriculum/math-challenges/38-multivariable-calculus/multiple-integrals.json
deleted file mode 100644
index 4cee369810..0000000000
--- a/curriculum/math-challenges/38-multivariable-calculus/multiple-integrals.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "name": "Multiple Integrals",
- "order": 4,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b578",
- "title": "Double integrals over rectangles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a760",
- "title": "Iterated integrals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a761",
- "title": "Double integrals over general regions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a762",
- "title": "Double integrals in polar coordinates",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a763",
- "title": "Application of double integrals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a764",
- "title": "Surface area",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a765",
- "title": "Triple integrals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a766",
- "title": "Triple integrals in cylindrical coordinates",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a767",
- "title": "Triple integrals in spherical coordinates",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a768",
- "title": "Change of variables in multiple integrals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/38-multivariable-calculus/partial-derivatives.json b/curriculum/math-challenges/38-multivariable-calculus/partial-derivatives.json
deleted file mode 100644
index b51bd91dfb..0000000000
--- a/curriculum/math-challenges/38-multivariable-calculus/partial-derivatives.json
+++ /dev/null
@@ -1,110 +0,0 @@
-{
- "name": "Partial derivatives",
- "order": 3,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b577",
- "title": "Functions of several variables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a752",
- "title": "Limits and continuity",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a753",
- "title": "Partial derivatives",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a754",
- "title": "Tangent planes and linear approximations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a755",
- "title": "Chain rule",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a756",
- "title": "Directional derivatives and the gradient vector",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a757",
- "title": "Maximum and minimum values",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a758",
- "title": "Lagrange multipliers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/38-multivariable-calculus/second-order-differential-equations.json b/curriculum/math-challenges/38-multivariable-calculus/second-order-differential-equations.json
deleted file mode 100644
index 4a2b07d24f..0000000000
--- a/curriculum/math-challenges/38-multivariable-calculus/second-order-differential-equations.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Second-Order Differential Equations",
- "order": 6,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b580",
- "title": "Second-Order Linear Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a779",
- "title": "Nonhomogenous linear equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a780",
- "title": "Applications of second-order differential eqatuions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a781",
- "title": "Series Solutions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/38-multivariable-calculus/vector-calculus.json b/curriculum/math-challenges/38-multivariable-calculus/vector-calculus.json
deleted file mode 100644
index 09afc7148a..0000000000
--- a/curriculum/math-challenges/38-multivariable-calculus/vector-calculus.json
+++ /dev/null
@@ -1,123 +0,0 @@
-{
- "name": "Vector Calculus",
- "order": 5,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b579",
- "title": "Vector Fields",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a770",
- "title": "Line integrals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a771",
- "title": "Fundamental theorem for line integrals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a772",
- "title": "Green's theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a773",
- "title": "Curl and divergence",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a774",
- "title": "Parametric surfaces and their areas",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a775",
- "title": "Surface integrals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a776",
- "title": "Stoke's Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a777",
- "title": "Divergence Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/38-multivariable-calculus/vector-functions.json b/curriculum/math-challenges/38-multivariable-calculus/vector-functions.json
deleted file mode 100644
index 9d69fb305f..0000000000
--- a/curriculum/math-challenges/38-multivariable-calculus/vector-functions.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Vector Functions",
- "order": 2,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b576",
- "title": "Vectors functions and space curves",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a748",
- "title": "Derivatives and integrals of vector functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a749",
- "title": "Arc length and curvature",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a750",
- "title": "Velocity and acceleration",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/38-multivariable-calculus/vectors-and-the-geometry-of-space.json b/curriculum/math-challenges/38-multivariable-calculus/vectors-and-the-geometry-of-space.json
deleted file mode 100644
index 6c3999dc7e..0000000000
--- a/curriculum/math-challenges/38-multivariable-calculus/vectors-and-the-geometry-of-space.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Vectors and the geometry of space",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b575",
- "title": "3d coordinate system",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a742",
- "title": "Vectors",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a743",
- "title": "Dot Product",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a744",
- "title": "Cross Product",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a745",
- "title": "Equations of lines and planes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a746",
- "title": "Cylinders and quadric surfaces",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/39-linear-algebra/determinants.json b/curriculum/math-challenges/39-linear-algebra/determinants.json
deleted file mode 100644
index 44f44a3d1f..0000000000
--- a/curriculum/math-challenges/39-linear-algebra/determinants.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Determinants",
- "order": 5,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b584",
- "title": "Determinant of a matrix",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a807",
- "title": "Properties of determinants of matrices",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/39-linear-algebra/eigenvalues.json b/curriculum/math-challenges/39-linear-algebra/eigenvalues.json
deleted file mode 100644
index a258c40c07..0000000000
--- a/curriculum/math-challenges/39-linear-algebra/eigenvalues.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Eigenvalues",
- "order": 6,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b585",
- "title": "Eigenvalues and eigenvectors",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a809",
- "title": "Properties of eigenvalues and eigenvectors",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a810",
- "title": "Similarity and diagonalization",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/39-linear-algebra/linear-transformations.json b/curriculum/math-challenges/39-linear-algebra/linear-transformations.json
deleted file mode 100644
index ea65bf584b..0000000000
--- a/curriculum/math-challenges/39-linear-algebra/linear-transformations.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Linear Transformations",
- "order": 7,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b586",
- "title": "Linear transformations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a812",
- "title": "Injective linear transformations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a813",
- "title": "Surjective linear transformations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a814",
- "title": "Invertible linear transformations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/39-linear-algebra/matrices.json b/curriculum/math-challenges/39-linear-algebra/matrices.json
deleted file mode 100644
index 973cdb9a77..0000000000
--- a/curriculum/math-challenges/39-linear-algebra/matrices.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Matrices",
- "order": 3,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b582",
- "title": "Matrix operations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a795",
- "title": "Matrix multiplication",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a796",
- "title": "Matrix inverses and systems of linear equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a797",
- "title": "Matrix inverses and nonsingular matrices",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a798",
- "title": "Column and row spaces",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a799",
- "title": "The four subsets",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/39-linear-algebra/representations.json b/curriculum/math-challenges/39-linear-algebra/representations.json
deleted file mode 100644
index 9c81170759..0000000000
--- a/curriculum/math-challenges/39-linear-algebra/representations.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Representations",
- "order": 8,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b587",
- "title": "Vector representations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a816",
- "title": "Matrix representations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a817",
- "title": "Change of basis",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a818",
- "title": "Orthonormal Diagonalization",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/39-linear-algebra/systems-of-linear-equations.json b/curriculum/math-challenges/39-linear-algebra/systems-of-linear-equations.json
deleted file mode 100644
index 0ca41ecdbf..0000000000
--- a/curriculum/math-challenges/39-linear-algebra/systems-of-linear-equations.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Systems of linear equations",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b581",
- "title": "What is linear algebra?",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a783",
- "title": "Solving systems of linear equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a784",
- "title": "Reduced row-echelon formulas",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a785",
- "title": "Types of solutions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a786",
- "title": "Homogeneous Systems of Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a787",
- "title": "Nonsingular matrices",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/39-linear-algebra/vector-spaces.json b/curriculum/math-challenges/39-linear-algebra/vector-spaces.json
deleted file mode 100644
index fdaa9c1f04..0000000000
--- a/curriculum/math-challenges/39-linear-algebra/vector-spaces.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Vector spaces",
- "order": 4,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b583",
- "title": "Vector spaces",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a801",
- "title": "Subspaces",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a802",
- "title": "Linear independence and spanning sets",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a803",
- "title": "Bases",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a804",
- "title": "Dimension",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a805",
- "title": "Properties of Dimension",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/39-linear-algebra/vectors.json b/curriculum/math-challenges/39-linear-algebra/vectors.json
deleted file mode 100644
index a608ef0294..0000000000
--- a/curriculum/math-challenges/39-linear-algebra/vectors.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Vectors",
- "order": 2,
- "challenges": [
- {
- "id": "59a580a209a6acac5983b582",
- "title": "Vector Operations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a789",
- "title": "Linear combinations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a790",
- "title": "Spanning sets",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a791",
- "title": "Linear independence",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a792",
- "title": "Linear dependence and spans",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a793",
- "title": "Orthogonality",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/40-differential-equations/boundary-value-problems-and-fourier-series.json b/curriculum/math-challenges/40-differential-equations/boundary-value-problems-and-fourier-series.json
deleted file mode 100644
index e212833993..0000000000
--- a/curriculum/math-challenges/40-differential-equations/boundary-value-problems-and-fourier-series.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Boundary Value Problems and Fourier Series",
- "order": 8,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b595",
- "title": "Boundary Value Problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a869",
- "title": "Eigenvalues and eigenfunctions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a870",
- "title": "Periodic functions and orthogonal functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a871",
- "title": "Fourier sine series",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a872",
- "title": "Fourier cosine series",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a873",
- "title": "Fourier series",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a874",
- "title": "Convergence of fourier series",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/40-differential-equations/first-order-differential-equations.json b/curriculum/math-challenges/40-differential-equations/first-order-differential-equations.json
deleted file mode 100644
index bbd561008b..0000000000
--- a/curriculum/math-challenges/40-differential-equations/first-order-differential-equations.json
+++ /dev/null
@@ -1,123 +0,0 @@
-{
- "name": "First Order Differential Equations",
- "order": 2,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b589",
- "title": "Linear Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a822",
- "title": "Separable Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a823",
- "title": "Exact Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a824",
- "title": "Bernoulli differential equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a825",
- "title": "Substitutions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a826",
- "title": "Intervals of validity",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a827",
- "title": "Modeling with first order differential equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a828",
- "title": "Equilibrium solutions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a829",
- "title": "Euler's method",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/40-differential-equations/higher-order-differential-equations.json b/curriculum/math-challenges/40-differential-equations/higher-order-differential-equations.json
deleted file mode 100644
index 1e2089417e..0000000000
--- a/curriculum/math-challenges/40-differential-equations/higher-order-differential-equations.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Higher order Differential Equations",
- "order": 7,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b594",
- "title": "Basic concepts for nth order linear equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a862",
- "title": "Linear homogenous differential equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a863",
- "title": "Undetermined coefficients",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a864",
- "title": "variation of parameters",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a865",
- "title": "laplace transforms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a866",
- "title": "systems of differential equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a867",
- "title": "series solutions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/40-differential-equations/introduction-to-differential-equations.json b/curriculum/math-challenges/40-differential-equations/introduction-to-differential-equations.json
deleted file mode 100644
index f0ab1cfac5..0000000000
--- a/curriculum/math-challenges/40-differential-equations/introduction-to-differential-equations.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Introduction to Differential Equations",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b588",
- "title": "Definitions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a820",
- "title": "Direction Fields",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/40-differential-equations/laplace-transforms.json b/curriculum/math-challenges/40-differential-equations/laplace-transforms.json
deleted file mode 100644
index 01145774cd..0000000000
--- a/curriculum/math-challenges/40-differential-equations/laplace-transforms.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "name": "Laplace Transforms",
- "order": 4,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b591",
- "title": "Definition",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a842",
- "title": "Laplace transform",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a843",
- "title": "Inverse Laplace transform(IVP)",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a844",
- "title": "Step functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a845",
- "title": "Solving IVP's with Laplace transforms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a846",
- "title": "Nonconstant coefficient IVP's",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a847",
- "title": "IVP's with step functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a848",
- "title": "Dirac Delta function",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a849",
- "title": "Convolution Integral",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a850",
- "title": "Table of Laplace transforms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/40-differential-equations/partial-differential-equations.json b/curriculum/math-challenges/40-differential-equations/partial-differential-equations.json
deleted file mode 100644
index ff9bca3b1c..0000000000
--- a/curriculum/math-challenges/40-differential-equations/partial-differential-equations.json
+++ /dev/null
@@ -1,123 +0,0 @@
-{
- "name": "Partial Differential Equations",
- "order": 9,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b597",
- "title": "Heat equation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a876",
- "title": "Wave equation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a877",
- "title": "Separation of variables terminology",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a878",
- "title": "Separation of variables terminology - solving heat equation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a879",
- "title": "Heat equation with non-zero temperature boundaries",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a880",
- "title": "Laplace's equation on a rectangle",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a881",
- "title": "Laplace's equation on a disk",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a882",
- "title": "Vibrating string",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a883",
- "title": "Vibrating string - wave equation solution",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/40-differential-equations/second-order-differential-equations.json b/curriculum/math-challenges/40-differential-equations/second-order-differential-equations.json
deleted file mode 100644
index 7e47c54012..0000000000
--- a/curriculum/math-challenges/40-differential-equations/second-order-differential-equations.json
+++ /dev/null
@@ -1,149 +0,0 @@
-{
- "name": "Second order differential equations",
- "order": 3,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b590",
- "title": "Basic concepts",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a831",
- "title": "Real roots",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a832",
- "title": "Complex roots",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a833",
- "title": "Repeated roots",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a834",
- "title": "Reduction of order",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a835",
- "title": "Fundamental sets of solutions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a836",
- "title": "More details about Wronskian",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a837",
- "title": "Nonhomogenous differential equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a838",
- "title": "Undetermined coefficients",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a839",
- "title": "Variation of parameters",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a840",
- "title": "Mechanical Vibrations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/40-differential-equations/series-solutions.json b/curriculum/math-challenges/40-differential-equations/series-solutions.json
deleted file mode 100644
index f0e1bbdd59..0000000000
--- a/curriculum/math-challenges/40-differential-equations/series-solutions.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Series Solutions",
- "order": 6,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b593",
- "title": "constructing a series solutions ",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a860",
- "title": "Euler equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/40-differential-equations/systems-of-differential-equations.json b/curriculum/math-challenges/40-differential-equations/systems-of-differential-equations.json
deleted file mode 100644
index 3d58987cd1..0000000000
--- a/curriculum/math-challenges/40-differential-equations/systems-of-differential-equations.json
+++ /dev/null
@@ -1,110 +0,0 @@
-{
- "name": "Systems of Differential Equations",
- "order": 5,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b592",
- "title": "Systems of differential equations basics",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a852",
- "title": "Solutions to systems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a853",
- "title": "Phase plane",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a854",
- "title": "Real eigenvalues",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a855",
- "title": "complex eigenvalues",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a856",
- "title": "repeated eigenvalues",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a857",
- "title": "Nonhomogeneous systems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a858",
- "title": "Laplace transform to solve a system",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/41-proofs/cardinality-of-sets.json b/curriculum/math-challenges/41-proofs/cardinality-of-sets.json
deleted file mode 100644
index 60e6b8bad3..0000000000
--- a/curriculum/math-challenges/41-proofs/cardinality-of-sets.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Cardinality of sets",
- "order": 13,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b610",
- "title": "Sets with equal cardinalities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a946",
- "title": "Countable and uncountable sets",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a947",
- "title": "Comparing cardinalities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a948",
- "title": "The Cantor-Bernstein-Schroeder Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/41-proofs/contrapositive-proof.json b/curriculum/math-challenges/41-proofs/contrapositive-proof.json
deleted file mode 100644
index 2523c015eb..0000000000
--- a/curriculum/math-challenges/41-proofs/contrapositive-proof.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Contrapositive Proof",
- "order": 5,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b602",
- "title": "Contrapositive proof",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a915",
- "title": "Congruence of integers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a916",
- "title": "Mathematical writing",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/41-proofs/counting.json b/curriculum/math-challenges/41-proofs/counting.json
deleted file mode 100644
index 72e80f8ce5..0000000000
--- a/curriculum/math-challenges/41-proofs/counting.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Counting",
- "order": 3,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b600",
- "title": "Counting lists",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a905",
- "title": "Factorials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a906",
- "title": "Counting subsets",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a907",
- "title": "Pascal's triangle and the binomial theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a908",
- "title": "Inclusion-exclusion",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/41-proofs/direct-proof.json b/curriculum/math-challenges/41-proofs/direct-proof.json
deleted file mode 100644
index d8fd736b59..0000000000
--- a/curriculum/math-challenges/41-proofs/direct-proof.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Direct Proof",
- "order": 4,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b601",
- "title": "Theorems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a910",
- "title": "Definitions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a911",
- "title": "Direct Proof",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a912",
- "title": "Using Cases",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a913",
- "title": "Treating similar cases",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/41-proofs/disproof.json b/curriculum/math-challenges/41-proofs/disproof.json
deleted file mode 100644
index ecb61a5897..0000000000
--- a/curriculum/math-challenges/41-proofs/disproof.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Disproof",
- "order": 9,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b606",
- "title": "Counterexamples",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a929",
- "title": "Disproving existence statements",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a930",
- "title": "Disproof by contradiction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/41-proofs/functions.json b/curriculum/math-challenges/41-proofs/functions.json
deleted file mode 100644
index 4874806f60..0000000000
--- a/curriculum/math-challenges/41-proofs/functions.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Functions",
- "order": 12,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b609",
- "title": "Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a940",
- "title": "Injective and surjective functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a941",
- "title": "The pigeonhole principles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a942",
- "title": "Composition",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a943",
- "title": "Inverse functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a944",
- "title": "Image and preimage",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/41-proofs/logic.json b/curriculum/math-challenges/41-proofs/logic.json
deleted file mode 100644
index 6def18fd17..0000000000
--- a/curriculum/math-challenges/41-proofs/logic.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "name": "Logic",
- "order": 2,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b599",
- "title": "Statements",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a895",
- "title": "And, Or, Not",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a896",
- "title": "Conditional Statements",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a897",
- "title": "Biconditional statements",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a898",
- "title": "Truth tables for statements",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a899",
- "title": "Logical equivalence",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a900",
- "title": "Quantifiers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a901",
- "title": "Translating English to symbolic logic",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a902",
- "title": "Negating statements",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a903",
- "title": "Logical Inference",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/41-proofs/mathematical-induction.json b/curriculum/math-challenges/41-proofs/mathematical-induction.json
deleted file mode 100644
index 6c3c6efd5f..0000000000
--- a/curriculum/math-challenges/41-proofs/mathematical-induction.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Mathematical Induction",
- "order": 10,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b607",
- "title": "Proof by strong induction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a932",
- "title": "Proof by smallest counterexample",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a933",
- "title": "Fibonacci Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/41-proofs/proof-by-contradiction.json b/curriculum/math-challenges/41-proofs/proof-by-contradiction.json
deleted file mode 100644
index 5fcab3c722..0000000000
--- a/curriculum/math-challenges/41-proofs/proof-by-contradiction.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Proof by Contradiction",
- "order": 6,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b603",
- "title": "Proving statements with contradiction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a918",
- "title": "Proving conditional statements by contradiction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a919",
- "title": "Combining techniques",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/41-proofs/proofs-involving-sets.json b/curriculum/math-challenges/41-proofs/proofs-involving-sets.json
deleted file mode 100644
index 3325445d8d..0000000000
--- a/curriculum/math-challenges/41-proofs/proofs-involving-sets.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Proofs Involving Sets",
- "order": 8,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b605",
- "title": "How to prove a∈A",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a925",
- "title": "How to prove A⊆B",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a926",
- "title": "How to prove A=B",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a927",
- "title": "Examples: Perfect Numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/41-proofs/proving-non-conditional-statements.json b/curriculum/math-challenges/41-proofs/proving-non-conditional-statements.json
deleted file mode 100644
index 00466a59f2..0000000000
--- a/curriculum/math-challenges/41-proofs/proving-non-conditional-statements.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Proving non-conditional statements",
- "order": 7,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b604",
- "title": "If-and-only-If proof",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a921",
- "title": "Equivalent statements",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a922",
- "title": "Existence Proofs; Existence and Uniqueness Proofs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a923",
- "title": "Constructive versus non-constructive proofs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/41-proofs/relations.json b/curriculum/math-challenges/41-proofs/relations.json
deleted file mode 100644
index 8b48e2abe8..0000000000
--- a/curriculum/math-challenges/41-proofs/relations.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Relations",
- "order": 11,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b608",
- "title": "Properties of relations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a935",
- "title": "Equivalence of relations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a936",
- "title": "Equivalence classes and partitions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a937",
- "title": "The integers modulo n",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a938",
- "title": "Relations between sets",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/41-proofs/sets.json b/curriculum/math-challenges/41-proofs/sets.json
deleted file mode 100644
index 77ceb283b3..0000000000
--- a/curriculum/math-challenges/41-proofs/sets.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "name": "Sets",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b598",
- "title": "Introduction to Sets",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a885",
- "title": "Cartesian Products",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a886",
- "title": "Subsets",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a887",
- "title": "Power Sets",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a888",
- "title": "Union, Intersection, Difference",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a889",
- "title": "Complement",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a890",
- "title": "Venn Diagrams",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a891",
- "title": "Indexed Sets",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a892",
- "title": "Sets that are Number Systems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a893",
- "title": "Russell's Paradox",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/42-combinatorics/covering-circuits-and-graph-coloring.json b/curriculum/math-challenges/42-combinatorics/covering-circuits-and-graph-coloring.json
deleted file mode 100644
index 987988a01d..0000000000
--- a/curriculum/math-challenges/42-combinatorics/covering-circuits-and-graph-coloring.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Covering circuits and graph coloring",
- "order": 2,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b612",
- "title": "Euler cycles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a954",
- "title": "Hamilton circuits",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a955",
- "title": "Graph coloring",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a956",
- "title": "Coloring theorems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/42-combinatorics/elements-of-graph-theory.json b/curriculum/math-challenges/42-combinatorics/elements-of-graph-theory.json
deleted file mode 100644
index 3b60a257ad..0000000000
--- a/curriculum/math-challenges/42-combinatorics/elements-of-graph-theory.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Elements of Graph Theory",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b611",
- "title": "Graph Models",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a950",
- "title": "Isomorphism",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a951",
- "title": "Edge Counting",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a952",
- "title": "Planar graphcs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/42-combinatorics/games-with-graphs.json b/curriculum/math-challenges/42-combinatorics/games-with-graphs.json
deleted file mode 100644
index 29e6a50852..0000000000
--- a/curriculum/math-challenges/42-combinatorics/games-with-graphs.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Games with graphs",
- "order": 10,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b620",
- "title": "Progressively finite games",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a988",
- "title": "Nim-type games",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/42-combinatorics/general-enumeration.json b/curriculum/math-challenges/42-combinatorics/general-enumeration.json
deleted file mode 100644
index 3c9705b462..0000000000
--- a/curriculum/math-challenges/42-combinatorics/general-enumeration.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "General Enumeration",
- "order": 5,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b615",
- "title": "Basic counting principles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a967",
- "title": "Simple arrangements and selections",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a968",
- "title": "Arrangements and selections with repetitions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a969",
- "title": "Distributions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a970",
- "title": "Binomial identities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/42-combinatorics/generating-functions.json b/curriculum/math-challenges/42-combinatorics/generating-functions.json
deleted file mode 100644
index a218ac08ee..0000000000
--- a/curriculum/math-challenges/42-combinatorics/generating-functions.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Generating Functions",
- "order": 6,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b616",
- "title": "Generating function models",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a972",
- "title": "Calculating coefficients of generating functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a973",
- "title": "Partitions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a974",
- "title": "Exponential generating functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/42-combinatorics/inclusion-exclusion.json b/curriculum/math-challenges/42-combinatorics/inclusion-exclusion.json
deleted file mode 100644
index 7df520e1f1..0000000000
--- a/curriculum/math-challenges/42-combinatorics/inclusion-exclusion.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Inclusion-Exclusion",
- "order": 8,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b618",
- "title": "Counting with Venn Diagrams",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a981",
- "title": "Inclusion-Exclusion Formula",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a982",
- "title": "Restricted positions and rook polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/42-combinatorics/network-algorithms.json b/curriculum/math-challenges/42-combinatorics/network-algorithms.json
deleted file mode 100644
index 1aa9a96747..0000000000
--- a/curriculum/math-challenges/42-combinatorics/network-algorithms.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Network algorithms",
- "order": 4,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b614",
- "title": "Shortest paths",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a962",
- "title": "Minimum spanning trees",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a963",
- "title": "Network flows",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a964",
- "title": "Algorithmic matching",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a965",
- "title": "The Transportation problem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/42-combinatorics/polya-enumeration-formula.json b/curriculum/math-challenges/42-combinatorics/polya-enumeration-formula.json
deleted file mode 100644
index a18c82c367..0000000000
--- a/curriculum/math-challenges/42-combinatorics/polya-enumeration-formula.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Polya's Enumeration Formula",
- "order": 9,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b619",
- "title": "Equivalence and symmetry groups",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a984",
- "title": "Burnside's theorems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a985",
- "title": "Cycle index",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a986",
- "title": "Polya's formula",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/42-combinatorics/recurrence-relations.json b/curriculum/math-challenges/42-combinatorics/recurrence-relations.json
deleted file mode 100644
index 130315903e..0000000000
--- a/curriculum/math-challenges/42-combinatorics/recurrence-relations.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Recurrence Relations",
- "order": 7,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b617",
- "title": "Recurrence relation models",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a976",
- "title": "Divide-and-conquer relations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a977",
- "title": "Solution of linear recurrence relations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a978",
- "title": "Solution of inhomogeneous recurrence relations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a979",
- "title": "Solutions with generating functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/42-combinatorics/trees-and-searching.json b/curriculum/math-challenges/42-combinatorics/trees-and-searching.json
deleted file mode 100644
index 541d0cf5f1..0000000000
--- a/curriculum/math-challenges/42-combinatorics/trees-and-searching.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Trees and searching",
- "order": 3,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b613",
- "title": "Properties of trees",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a958",
- "title": "Search trees and spanning trees",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a959",
- "title": "Traveling salesperson problem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a960",
- "title": "Tree analysis of sorting algorithms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/algebraic-coding-theory.json b/curriculum/math-challenges/43-abstract-algebra/algebraic-coding-theory.json
deleted file mode 100644
index 000163ac2b..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/algebraic-coding-theory.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Algebraic Coding theory",
- "order": 7,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b628",
- "title": "Error-detecting and correcting codes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b007",
- "title": "Linear codes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b008",
- "title": "Parity-check and generator matrices",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b009",
- "title": "Efficient decoding",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/cosets-and-lagrange-theorem.json b/curriculum/math-challenges/43-abstract-algebra/cosets-and-lagrange-theorem.json
deleted file mode 100644
index 6b674c3f25..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/cosets-and-lagrange-theorem.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Cosets and Lagrange's Theorem",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b626",
- "title": "Cosets",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b002",
- "title": "Lagrange's theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b003",
- "title": "Fermat's and Euler's Theorems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/cyclic-groups.json b/curriculum/math-challenges/43-abstract-algebra/cyclic-groups.json
deleted file mode 100644
index e40a53a06e..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/cyclic-groups.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Cyclic groups",
- "order": 4,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b624",
- "title": "Cyclic subgroups",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a996",
- "title": "Multiplicative group of complex numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a997",
- "title": "Method of repeated squares",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/fields.json b/curriculum/math-challenges/43-abstract-algebra/fields.json
deleted file mode 100644
index 059cb20e12..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/fields.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Fields",
- "order": 18,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b639",
- "title": "Extension Fields",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b038",
- "title": "Splitting Fields",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b039",
- "title": "Geometric Constructions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/finite-fields.json b/curriculum/math-challenges/43-abstract-algebra/finite-fields.json
deleted file mode 100644
index b0d01fcb4f..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/finite-fields.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Finite Fields",
- "order": 19,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b640",
- "title": "Structure of a Finite Field",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b041",
- "title": "Polynomial Codes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/galois-theory.json b/curriculum/math-challenges/43-abstract-algebra/galois-theory.json
deleted file mode 100644
index e5502548c0..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/galois-theory.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Galois Theory",
- "order": 20,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b642",
- "title": "Field Automorphisms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b043",
- "title": "The Fundamental Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b044",
- "title": "Applications",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/group-actions.json b/curriculum/math-challenges/43-abstract-algebra/group-actions.json
deleted file mode 100644
index 72948cdd9c..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/group-actions.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Group actions",
- "order": 12,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b634",
- "title": "Groups acting on sets",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b021",
- "title": "The class equation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b022",
- "title": "Burnside's Counting Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/groups.json b/curriculum/math-challenges/43-abstract-algebra/groups.json
deleted file mode 100644
index eb7ea6d53a..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/groups.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Groups",
- "order": 3,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b623",
- "title": "Integer equivalence classes and symmetries",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a993",
- "title": "Definitions and examples",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a994",
- "title": "Subgroups",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/homomorphisms.json b/curriculum/math-challenges/43-abstract-algebra/homomorphisms.json
deleted file mode 100644
index 0c3abbfa9a..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/homomorphisms.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Homomorphisms",
- "order": 9,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b631",
- "title": "Group homomorphisms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b015",
- "title": "The isomorphism theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/integers.json b/curriculum/math-challenges/43-abstract-algebra/integers.json
deleted file mode 100644
index adff2e6902..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/integers.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Integers",
- "order": 2,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b622",
- "title": "Mathematical induction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a991",
- "title": "Division algorithm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/integral-domains.json b/curriculum/math-challenges/43-abstract-algebra/integral-domains.json
deleted file mode 100644
index 8ff0933bcc..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/integral-domains.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Integral domains",
- "order": 16,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b638",
- "title": "Fields of fractions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b033",
- "title": "Factorization in integral domains",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/intro-to-cryptography.json b/curriculum/math-challenges/43-abstract-algebra/intro-to-cryptography.json
deleted file mode 100644
index 50b7a46545..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/intro-to-cryptography.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Intro To Cryptography",
- "order": 6,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b627",
- "title": "Private Key Cryptography",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b005",
- "title": "Public key cryptography",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/isomorphisms.json b/curriculum/math-challenges/43-abstract-algebra/isomorphisms.json
deleted file mode 100644
index 433741810e..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/isomorphisms.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Isomorphisms",
- "order": 8,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b629",
- "title": "Definition and examples",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b011",
- "title": "Direct products",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/lattices-and-boolean-algebras.json b/curriculum/math-challenges/43-abstract-algebra/lattices-and-boolean-algebras.json
deleted file mode 100644
index a05a3cb4d8..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/lattices-and-boolean-algebras.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Lattices and boolean algebras",
- "order": 17,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b641",
- "title": "Lattices",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b035",
- "title": "Boolean algebras",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b036",
- "title": "Algebra of electrical circuits",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/matrix-group-and-symmetry.json b/curriculum/math-challenges/43-abstract-algebra/matrix-group-and-symmetry.json
deleted file mode 100644
index 531242fdfd..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/matrix-group-and-symmetry.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Matrix group and symmetry",
- "order": 10,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b632",
- "title": "Matrix groups",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b017",
- "title": "Symmetry",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/normal-subgroups-and-factor-groups.json b/curriculum/math-challenges/43-abstract-algebra/normal-subgroups-and-factor-groups.json
deleted file mode 100644
index 2ce2dc47f3..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/normal-subgroups-and-factor-groups.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Normal subgroups and factor groups",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b630",
- "title": "Factor groups and normal subgroups",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b013",
- "title": "The simplicity of the alternating group",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/permutation-groups.json b/curriculum/math-challenges/43-abstract-algebra/permutation-groups.json
deleted file mode 100644
index c0b98d789e..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/permutation-groups.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Permutation groups",
- "order": 5,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b625",
- "title": "Definitions and notation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983a999",
- "title": "Dihedral groups",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/polynomials.json b/curriculum/math-challenges/43-abstract-algebra/polynomials.json
deleted file mode 100644
index 05ac55c0d8..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/polynomials.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Polynomials",
- "order": 15,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b637",
- "title": "Polynomial rings",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b030",
- "title": "Division algorithm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b031",
- "title": "Irreducible polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/preliminaries.json b/curriculum/math-challenges/43-abstract-algebra/preliminaries.json
deleted file mode 100644
index 8d1b5ef8f7..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/preliminaries.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "Preliminaries",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b621",
- "title": "Sets and equivalence relations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/rings.json b/curriculum/math-challenges/43-abstract-algebra/rings.json
deleted file mode 100644
index 6f7b73e826..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/rings.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Rings",
- "order": 14,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b636",
- "title": "Rings",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b026",
- "title": "Integral domains and fields",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b027",
- "title": "Ring homomorphisms and ideals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b028",
- "title": "Maximal and prime ideals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/structure-of-groups.json b/curriculum/math-challenges/43-abstract-algebra/structure-of-groups.json
deleted file mode 100644
index 48ceac1e6b..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/structure-of-groups.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Structure of groups",
- "order": 11,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b633",
- "title": "Finite Abelian groups",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b019",
- "title": "Solvable groups",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/43-abstract-algebra/the-sylow-theorems.json b/curriculum/math-challenges/43-abstract-algebra/the-sylow-theorems.json
deleted file mode 100644
index 91780c58ea..0000000000
--- a/curriculum/math-challenges/43-abstract-algebra/the-sylow-theorems.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "The Sylow Theorems",
- "order": 13,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b635",
- "title": "The Sylow Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b024",
- "title": "Examples and applications",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/abelian-groups.json b/curriculum/math-challenges/44-number-theory/abelian-groups.json
deleted file mode 100644
index 9622eea830..0000000000
--- a/curriculum/math-challenges/44-number-theory/abelian-groups.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Abelian groups",
- "order": 6,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b648",
- "title": "Definitions, basic properties, examples",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b074",
- "title": "Subgroups",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b075",
- "title": "Cosets and quotient groups",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b076",
- "title": "Group homomorphisms and isomorphisms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b077",
- "title": "Cyclic groups",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b078",
- "title": "Structure of finite abelian groups",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/algorithms-for-finite-fields.json b/curriculum/math-challenges/44-number-theory/algorithms-for-finite-fields.json
deleted file mode 100644
index e5d5c47afc..0000000000
--- a/curriculum/math-challenges/44-number-theory/algorithms-for-finite-fields.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Algorithms for finite fields",
- "order": 22,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b663",
- "title": "Tests for and constructing irreducible polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b153",
- "title": "Computing minimal polynomials in F[X]/(f)(III)",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b154",
- "title": "Factoring polynomials: square-free decomposition",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b155",
- "title": "Factoring polynomials: the Cantor-Zassenhaus algorithm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b156",
- "title": "Factoring polynomials: Berlekamp's algorithm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b157",
- "title": "Deterministic factorization algorithms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/basic-properties-of-integers.json b/curriculum/math-challenges/44-number-theory/basic-properties-of-integers.json
deleted file mode 100644
index be1c47aa9a..0000000000
--- a/curriculum/math-challenges/44-number-theory/basic-properties-of-integers.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Basic properties of integers",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b643",
- "title": "Divisibility and primality",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b046",
- "title": "Ideals and greatest common divisors",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b047",
- "title": "Consequences of unique factorization",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/computing-with-large-integers.json b/curriculum/math-challenges/44-number-theory/computing-with-large-integers.json
deleted file mode 100644
index cc5391d0ad..0000000000
--- a/curriculum/math-challenges/44-number-theory/computing-with-large-integers.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Computing with large integers",
- "order": 3,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b645",
- "title": "Asymptotic notation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b057",
- "title": "Machine models and complexity theory",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b058",
- "title": "Basic integer arithmetic",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b059",
- "title": "Computing in Zn ",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b060",
- "title": "Faster integer arithmetic",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/congruences.json b/curriculum/math-challenges/44-number-theory/congruences.json
deleted file mode 100644
index c6b79c3e02..0000000000
--- a/curriculum/math-challenges/44-number-theory/congruences.json
+++ /dev/null
@@ -1,110 +0,0 @@
-{
- "name": "Congruences",
- "order": 2,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b644",
- "title": "Equivalence relations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b049",
- "title": "Definitions and basic properties of congruences",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b050",
- "title": "Solving linear congruences",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b051",
- "title": "The Chinese Remainder Theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b052",
- "title": "Residue classes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b053",
- "title": "Euler's phi function",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b054",
- "title": "Euler's theorem and Fermat's little theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b055",
- "title": "Quadratic Residues",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/deterministic-primality-testing.json b/curriculum/math-challenges/44-number-theory/deterministic-primality-testing.json
deleted file mode 100644
index c320b1de86..0000000000
--- a/curriculum/math-challenges/44-number-theory/deterministic-primality-testing.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Deterministic primality testing",
- "order": 23,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b664",
- "title": "Basic idea",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b159",
- "title": "Algorithm and its analysis",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/distribution-of-primes.json b/curriculum/math-challenges/44-number-theory/distribution-of-primes.json
deleted file mode 100644
index 31c632c315..0000000000
--- a/curriculum/math-challenges/44-number-theory/distribution-of-primes.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Distribution of primes",
- "order": 5,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b647",
- "title": "Chebyshev's Theorem on the density of primes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b069",
- "title": "Bertrand's postulate",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b070",
- "title": "Merten's theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b071",
- "title": "The sieve of Eratosthenes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b072",
- "title": "The prime number theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/euclid-algorithm.json b/curriculum/math-challenges/44-number-theory/euclid-algorithm.json
deleted file mode 100644
index 3429142e12..0000000000
--- a/curriculum/math-challenges/44-number-theory/euclid-algorithm.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Euclid's algorithm",
- "order": 4,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b646",
- "title": "Basic Euclidean algorithm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b062",
- "title": "Extended Euclidean algorithm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b063",
- "title": "Computing modular inverses and Chinese remaindering",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b064",
- "title": "Speeding up algorithms via modular computation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b065",
- "title": "An effective version of Fermat's two squares theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b066",
- "title": "Rational reconstruction and applications",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b067",
- "title": "RSA cryptosystem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/finding-generators-and-discrete-logarithms-in-zpstar.json b/curriculum/math-challenges/44-number-theory/finding-generators-and-discrete-logarithms-in-zpstar.json
deleted file mode 100644
index 3125d26425..0000000000
--- a/curriculum/math-challenges/44-number-theory/finding-generators-and-discrete-logarithms-in-zpstar.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Finding generators and discrete logarithms in Zp Star",
- "order": 11,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b654",
- "title": "Finding a generator for Zp Star",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b106",
- "title": "Computing discrete logarithms in Zp Star",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b107",
- "title": "The Diffie-Hellman key establishment protocol",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/finite-and-discrete-probability-distributions.json b/curriculum/math-challenges/44-number-theory/finite-and-discrete-probability-distributions.json
deleted file mode 100644
index 7d6fb22665..0000000000
--- a/curriculum/math-challenges/44-number-theory/finite-and-discrete-probability-distributions.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "name": "Finite and discrete probability distributions",
- "order": 8,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b650",
- "title": "Basic definitions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b085",
- "title": "Conditional probability and independence",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b086",
- "title": "Random variables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b087",
- "title": "Expectation and variance",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b088",
- "title": "Some useful bounds",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b089",
- "title": "Balls and bins",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b090",
- "title": "Hash functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b091",
- "title": "Statistical distance",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b092",
- "title": "Measures of randomness and the leftover hash lemma",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b093",
- "title": "Discrete probability distributions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/finite-fields.json b/curriculum/math-challenges/44-number-theory/finite-fields.json
deleted file mode 100644
index eb4f5085ef..0000000000
--- a/curriculum/math-challenges/44-number-theory/finite-fields.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Finite fields",
- "order": 20,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b662",
- "title": "Preliminaries",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b149",
- "title": "Existence of finite fields",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b150",
- "title": "Subfield structure and uniqueness of finite fields",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b151",
- "title": "Conjugates, norms and traces",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/linearly-generated-sequences-and-applications.json b/curriculum/math-challenges/44-number-theory/linearly-generated-sequences-and-applications.json
deleted file mode 100644
index 9954cbed29..0000000000
--- a/curriculum/math-challenges/44-number-theory/linearly-generated-sequences-and-applications.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Linearly generated sequences and applications",
- "order": 19,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b661",
- "title": "Basic definition and properties",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b143",
- "title": "Computing minimal polynomials: a special case",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b144",
- "title": "Computing minimal polynomials: a more general case",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b145",
- "title": "Solving sparse linear systems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b146",
- "title": "Computing minimal polynomials in F[X]/(f)(II)",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b147",
- "title": "The algebra of linear transformations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/matrices.json b/curriculum/math-challenges/44-number-theory/matrices.json
deleted file mode 100644
index ce160ceccc..0000000000
--- a/curriculum/math-challenges/44-number-theory/matrices.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Matrices",
- "order": 14,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b657",
- "title": "Basic definitions and properties",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b120",
- "title": "Matrices and linear maps",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b121",
- "title": "Inverse of a matrix",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b122",
- "title": "Gaussian elimination",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b123",
- "title": "Applications of Gaussian elimination",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/modules-and-vector-spaces.json b/curriculum/math-challenges/44-number-theory/modules-and-vector-spaces.json
deleted file mode 100644
index 644c50aef3..0000000000
--- a/curriculum/math-challenges/44-number-theory/modules-and-vector-spaces.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Modules and vector spaces",
- "order": 13,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b656",
- "title": "Definitions, basic properties, examples",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b115",
- "title": "Submodules and quotient modules",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b116",
- "title": "Module homomorphisms and isomorphisms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b117",
- "title": "Linear independence and bases",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b118",
- "title": "Vector spaces and dimensions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/more-rings.json b/curriculum/math-challenges/44-number-theory/more-rings.json
deleted file mode 100644
index d859e55c50..0000000000
--- a/curriculum/math-challenges/44-number-theory/more-rings.json
+++ /dev/null
@@ -1,123 +0,0 @@
-{
- "name": "More Rings",
- "order": 17,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b659",
- "title": "Algebras",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b128",
- "title": "The field of fractions of an integral domain",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b129",
- "title": "Unique factorization of polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b130",
- "title": "Polynomial congruences",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b131",
- "title": "Minimal polynomials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b132",
- "title": "General properties of extension fields",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b133",
- "title": "Formal derivatives",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b134",
- "title": "Formal power series and Laurent series",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b135",
- "title": "Unique factorization domains",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/polynomial-arithmetic-and-applications.json b/curriculum/math-challenges/44-number-theory/polynomial-arithmetic-and-applications.json
deleted file mode 100644
index 52472595df..0000000000
--- a/curriculum/math-challenges/44-number-theory/polynomial-arithmetic-and-applications.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Polynomial arithmetic and applications",
- "order": 18,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b660",
- "title": "Basic arithmetic",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b137",
- "title": "Computing minimal polynomials in F[X]/(f)(I)",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b138",
- "title": "Euclid's algorithm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b139",
- "title": "Computing modular inverses and Chinese remaindering",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b140",
- "title": "Rational function reconstruction and applications",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b141",
- "title": "Faster polynomial arithmetic",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/probabilistic-algorithms.json b/curriculum/math-challenges/44-number-theory/probabilistic-algorithms.json
deleted file mode 100644
index 78c312bfa1..0000000000
--- a/curriculum/math-challenges/44-number-theory/probabilistic-algorithms.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Probabilistic algorithms",
- "order": 9,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b651",
- "title": "Basic definitions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b095",
- "title": "Generating a random number from a given interval",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b652",
- "title": "Generate and test paradigm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b097",
- "title": "Generating a random prime",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b098",
- "title": "Generating a random non-increasing sequence",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b099",
- "title": "Generating a random factored number",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b100",
- "title": "Complexity theory",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/probabilistic-primary-testing.json b/curriculum/math-challenges/44-number-theory/probabilistic-primary-testing.json
deleted file mode 100644
index 27345d8e33..0000000000
--- a/curriculum/math-challenges/44-number-theory/probabilistic-primary-testing.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Probabilistic primary testing",
- "order": 10,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b653",
- "title": "Trial division",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b102",
- "title": "Miller-Rabin test",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b103",
- "title": "Generating random primes using Miller-Rabin test",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b104",
- "title": "Factoring and computing Euler's phi function",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/quadratic-reciprocity-and-computing-modular-square-roots.json b/curriculum/math-challenges/44-number-theory/quadratic-reciprocity-and-computing-modular-square-roots.json
deleted file mode 100644
index b7ec8ff8d1..0000000000
--- a/curriculum/math-challenges/44-number-theory/quadratic-reciprocity-and-computing-modular-square-roots.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Quadratic reciprocity and computing modular square roots",
- "order": 12,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b655",
- "title": "The Legendre symbol",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b109",
- "title": "The Jacobi symbol",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b110",
- "title": "Computing the Jacobi symbol",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b111",
- "title": "Testing quadratic residuosity",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b112",
- "title": "Computing modular square roots",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b113",
- "title": "The quadratic residuosity assumption",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/rings.json b/curriculum/math-challenges/44-number-theory/rings.json
deleted file mode 100644
index 1a26781de9..0000000000
--- a/curriculum/math-challenges/44-number-theory/rings.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Rings",
- "order": 7,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b649",
- "title": "Definitions, basic properties, examples",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b080",
- "title": "Polynomial rings",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b081",
- "title": "Ideals and quotient rings",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b082",
- "title": "Ring homomorphisms and isomorphisms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b083",
- "title": "The structure of Zn*",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/44-number-theory/subexponential-time-discrete-logarithms-and-factoring.json b/curriculum/math-challenges/44-number-theory/subexponential-time-discrete-logarithms-and-factoring.json
deleted file mode 100644
index d319562644..0000000000
--- a/curriculum/math-challenges/44-number-theory/subexponential-time-discrete-logarithms-and-factoring.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Subexponential-time discrete logarithms and factoring",
- "order": 16,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b658",
- "title": "Smooth numbers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b125",
- "title": "Algorithm for discrete logarithms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b126",
- "title": "Algorithm for factoring integers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/algorithms-for-the-discrete-logarithm-problem.json b/curriculum/math-challenges/45-cryptography/algorithms-for-the-discrete-logarithm-problem.json
deleted file mode 100644
index 76a6b56aad..0000000000
--- a/curriculum/math-challenges/45-cryptography/algorithms-for-the-discrete-logarithm-problem.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Algorithms for the discrete logarithm problem",
- "order": 18,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b683",
- "title": "Shank's algorithm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b226",
- "title": "Pollard Rho discrete logarithm algorithm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b227",
- "title": "Pohlig-Hellman algorithm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b228",
- "title": "Index Calculus method",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/block-ciphers.json b/curriculum/math-challenges/45-cryptography/block-ciphers.json
deleted file mode 100644
index 5fbb76bf8f..0000000000
--- a/curriculum/math-challenges/45-cryptography/block-ciphers.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Block ciphers",
- "order": 4,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b668",
- "title": "Introduction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b181",
- "title": "Substitution-Permutation networks",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b182",
- "title": "Linear cryptanalysis",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b183",
- "title": "Piling-up lemma",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b184",
- "title": "Linear approximations of S-boxes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b185",
- "title": "Linear attack on an SPN",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/copyright-protection.json b/curriculum/math-challenges/45-cryptography/copyright-protection.json
deleted file mode 100644
index 28c9af9c86..0000000000
--- a/curriculum/math-challenges/45-cryptography/copyright-protection.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Copyright protection",
- "order": 36,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b701",
- "title": "Fingerprinting",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b319",
- "title": "Identifiable parent property",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b320",
- "title": "2-IPP Codes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b321",
- "title": "Tracing illegally redistributed keys",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/cryptanalysis.json b/curriculum/math-challenges/45-cryptography/cryptanalysis.json
deleted file mode 100644
index c463888d76..0000000000
--- a/curriculum/math-challenges/45-cryptography/cryptanalysis.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Cryptanalysis",
- "order": 2,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b666",
- "title": "Cryptanalysis of affine cipher",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b168",
- "title": "Cryptanalysis of substitution cipher",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b169",
- "title": "Cryptanalysis of Vigenere cipher",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b170",
- "title": "Cryptanalysis of Hill cipher",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b171",
- "title": "Cryptanalysis of LFSR stream cipher",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/differential-cryptanalysis.json b/curriculum/math-challenges/45-cryptography/differential-cryptanalysis.json
deleted file mode 100644
index 377f2aba23..0000000000
--- a/curriculum/math-challenges/45-cryptography/differential-cryptanalysis.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Differential Cryptanalysis",
- "order": 5,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b669",
- "title": "Data Encryption standard DES",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b187",
- "title": "Description of DES",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b188",
- "title": "Analysis of DES",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b189",
- "title": "Advanced encryption standard AES",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b190",
- "title": "Description of AES",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b191",
- "title": "Analysis of AES",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b192",
- "title": "Modes of operations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/discrete-logarithm-algorithms-in-practice.json b/curriculum/math-challenges/45-cryptography/discrete-logarithm-algorithms-in-practice.json
deleted file mode 100644
index e8c9e2de01..0000000000
--- a/curriculum/math-challenges/45-cryptography/discrete-logarithm-algorithms-in-practice.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "Discrete logarithm algorithms in practice",
- "order": 22,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b687",
- "title": "Discrete logarithm algorithms in practice",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/elliptic-curves.json b/curriculum/math-challenges/45-cryptography/elliptic-curves.json
deleted file mode 100644
index ccf59b75ea..0000000000
--- a/curriculum/math-challenges/45-cryptography/elliptic-curves.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Elliptic curves",
- "order": 21,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b686",
- "title": "Elliptic curves over the reals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b232",
- "title": "Elliptic curves modulo a prime",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b233",
- "title": "Properties of elliptic curves",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b234",
- "title": "Point compression and ECIES",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b235",
- "title": "Computing point multiples on elliptic curves",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/factoring-algorithms.json b/curriculum/math-challenges/45-cryptography/factoring-algorithms.json
deleted file mode 100644
index 3b00558b99..0000000000
--- a/curriculum/math-challenges/45-cryptography/factoring-algorithms.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Factoring algorithms",
- "order": 13,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b678",
- "title": "Pollard p minus 1 algorithm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b215",
- "title": "Pollard Rho algorithm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b216",
- "title": "Dixon's Random squares algorithm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b217",
- "title": "Factoring algorithms in practice",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/finite-fields.json b/curriculum/math-challenges/45-cryptography/finite-fields.json
deleted file mode 100644
index 01b098430b..0000000000
--- a/curriculum/math-challenges/45-cryptography/finite-fields.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "Finite fields",
- "order": 20,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b685",
- "title": "Introduction to Finite Fields",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/future-of-pki.json b/curriculum/math-challenges/45-cryptography/future-of-pki.json
deleted file mode 100644
index e9e9ed042e..0000000000
--- a/curriculum/math-challenges/45-cryptography/future-of-pki.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Future of PKI",
- "order": 33,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b698",
- "title": "Alternatives",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b300",
- "title": "Identity-based Cryptography",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b301",
- "title": "The Cocks identity-based encryption scheme",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/genetic-algorithms.json b/curriculum/math-challenges/45-cryptography/genetic-algorithms.json
deleted file mode 100644
index 25b7c2fd5b..0000000000
--- a/curriculum/math-challenges/45-cryptography/genetic-algorithms.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "Genetic algorithms",
- "order": 19,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b684",
- "title": "Lower bounds on the complexity of genetic algorithms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/hash-functions.json b/curriculum/math-challenges/45-cryptography/hash-functions.json
deleted file mode 100644
index 6eea35ff2e..0000000000
--- a/curriculum/math-challenges/45-cryptography/hash-functions.json
+++ /dev/null
@@ -1,123 +0,0 @@
-{
- "name": "Hash Functions",
- "order": 6,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b670",
- "title": "Introduction to Hash Functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b194",
- "title": "Data integrity",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b195",
- "title": "Security of hash functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b196",
- "title": "Random Oracle model",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b197",
- "title": "Algorithms in the random oracle model",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b198",
- "title": "Comparison of security criteria",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b199",
- "title": "Iterated hash functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b201",
- "title": "Merkle-Damgard Construction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b202",
- "title": "Secure hash algorithm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/identification-schemes-and-entity-authentication.json b/curriculum/math-challenges/45-cryptography/identification-schemes-and-entity-authentication.json
deleted file mode 100644
index d2cb572c0d..0000000000
--- a/curriculum/math-challenges/45-cryptography/identification-schemes-and-entity-authentication.json
+++ /dev/null
@@ -1,162 +0,0 @@
-{
- "name": "Identification schemes and entity authentication",
- "order": 26,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b691",
- "title": "Introduction to identification schemes and entity authentication",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b260",
- "title": "Challenge-and-response in the secret-key setting",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b261",
- "title": "Attack model and adversarial goals",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b262",
- "title": "Mutual authentication",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b263",
- "title": "Challenge-and-response in the public-key setting",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b264",
- "title": "Certificates",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b265",
- "title": "Public-key identification schemes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b266",
- "title": "Schnorr identification scheme",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b267",
- "title": "Security of the Schnorr identification scheme",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b268",
- "title": "Okamoto identification scheme",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b269",
- "title": "Guillou-Quisquater identification scheme",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b270",
- "title": "Identity-based identification schemes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/introduction-to-public-key-cryptography.json b/curriculum/math-challenges/45-cryptography/introduction-to-public-key-cryptography.json
deleted file mode 100644
index 2a76dc4e2e..0000000000
--- a/curriculum/math-challenges/45-cryptography/introduction-to-public-key-cryptography.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "Introduction to public-key cryptography",
- "order": 10,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b674",
- "title": "Introduction to public-key cryptography",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/key-agreement-schemes.json b/curriculum/math-challenges/45-cryptography/key-agreement-schemes.json
deleted file mode 100644
index 44b6080333..0000000000
--- a/curriculum/math-challenges/45-cryptography/key-agreement-schemes.json
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- "name": "Key agreement schemes",
- "order": 30,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b695",
- "title": "Introduction to Key agreement schemes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b282",
- "title": "Diffie-Hellman key agreement",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b283",
- "title": "Station-to-station(STS) key agreement scheme",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b284",
- "title": "Security of STS",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b285",
- "title": "Known session key attacks",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b286",
- "title": "MTI key agreement schemes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b287",
- "title": "Known session key attacks on MTI/A0",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b288",
- "title": "Key agreement using self-certifying keys",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b289",
- "title": "Encrypted key exchange",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b290",
- "title": "Conference key agreement schemes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/key-distribution-patterns.json b/curriculum/math-challenges/45-cryptography/key-distribution-patterns.json
deleted file mode 100644
index df9a4bde06..0000000000
--- a/curriculum/math-challenges/45-cryptography/key-distribution-patterns.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Key distribution patterns",
- "order": 28,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b693",
- "title": "Fiat-Naor key distribution patterns",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b276",
- "title": "Mitchell-Piper key distribution patterns",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/key-distribution.json b/curriculum/math-challenges/45-cryptography/key-distribution.json
deleted file mode 100644
index d7ac2b6655..0000000000
--- a/curriculum/math-challenges/45-cryptography/key-distribution.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Key distribution",
- "order": 27,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b692",
- "title": "Introduction to Key distribution",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b272",
- "title": "Diffie-Hellman Key Predistribution",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b273",
- "title": "Unconditionally secure key predistribution",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b274",
- "title": "The Blom Key Predistribution scheme",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/message-authentication-codes-mac.json b/curriculum/math-challenges/45-cryptography/message-authentication-codes-mac.json
deleted file mode 100644
index a6d9d76288..0000000000
--- a/curriculum/math-challenges/45-cryptography/message-authentication-codes-mac.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Message authentication codes(MAC)",
- "order": 7,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b671",
- "title": "Nested MACs and HMAC",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b204",
- "title": "CBC-MAC and authenticated encryption",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/more-number-theory.json b/curriculum/math-challenges/45-cryptography/more-number-theory.json
deleted file mode 100644
index 6296b41e3b..0000000000
--- a/curriculum/math-challenges/45-cryptography/more-number-theory.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "More number theory",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b675",
- "title": "Euclidean algorithm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b208",
- "title": "Chinese remainder theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/multicast-security.json b/curriculum/math-challenges/45-cryptography/multicast-security.json
deleted file mode 100644
index e9adf4eec2..0000000000
--- a/curriculum/math-challenges/45-cryptography/multicast-security.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Multicast security",
- "order": 35,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b700",
- "title": "Introduction to Multicast security and copyright protection",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b312",
- "title": "Broadcast encryption",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b313",
- "title": "Improvement using Ramp Schemes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b314",
- "title": "Multicast re-keying",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b315",
- "title": "Blacklisting scheme",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b316",
- "title": "The Naor-Pinkas Re-keying scheme",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b317",
- "title": "Logical key hierarchy",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/other-attacks-on-rsa.json b/curriculum/math-challenges/45-cryptography/other-attacks-on-rsa.json
deleted file mode 100644
index 6b537d3c00..0000000000
--- a/curriculum/math-challenges/45-cryptography/other-attacks-on-rsa.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Other attacks on RSA",
- "order": 14,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b679",
- "title": "Computing φ(n)",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b219",
- "title": "The decryption exponent",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b220",
- "title": "Wiener's low decryption exponent attack",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/primality-testing.json b/curriculum/math-challenges/45-cryptography/primality-testing.json
deleted file mode 100644
index b7779ebc48..0000000000
--- a/curriculum/math-challenges/45-cryptography/primality-testing.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Primality testing",
- "order": 12,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b677",
- "title": "Legendre and Jacobi symbols",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b211",
- "title": "Solovay-Strassen algorithm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b212",
- "title": "Miller-Rabin algorithm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b213",
- "title": "Square roots modulo n",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/pseudo-random-number-generation.json b/curriculum/math-challenges/45-cryptography/pseudo-random-number-generation.json
deleted file mode 100644
index 2c6bf7118c..0000000000
--- a/curriculum/math-challenges/45-cryptography/pseudo-random-number-generation.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Pseudo-random number generation",
- "order": 25,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b690",
- "title": "Introduction to pseudo-random number generation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b253",
- "title": "Examples of pseudo-random number generation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b254",
- "title": "Indistinguishably of probability distributions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b255",
- "title": "Next bit predictors",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b256",
- "title": "Blum-Blum-Shub generator",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b257",
- "title": "Security of BBS generator",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b258",
- "title": "Probabilistic Encryption",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/public-key-cryptography-and-discrete-logarithms.json b/curriculum/math-challenges/45-cryptography/public-key-cryptography-and-discrete-logarithms.json
deleted file mode 100644
index e9d48f7729..0000000000
--- a/curriculum/math-challenges/45-cryptography/public-key-cryptography-and-discrete-logarithms.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "Public-key Cryptography and Discrete Logarithms",
- "order": 17,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b682",
- "title": "ElGamal cryptosystem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/public-key-infrastructure.json b/curriculum/math-challenges/45-cryptography/public-key-infrastructure.json
deleted file mode 100644
index 3b8eefeef5..0000000000
--- a/curriculum/math-challenges/45-cryptography/public-key-infrastructure.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Public-key infrastructure",
- "order": 31,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b696",
- "title": "Introduction to Public-key infrastructure",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b292",
- "title": "A practical protocol: Secure socket layer",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b293",
- "title": "Certificates",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b294",
- "title": "Certificate life-cycle management",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/rabin-cryptosystem.json b/curriculum/math-challenges/45-cryptography/rabin-cryptosystem.json
deleted file mode 100644
index d218e31d8d..0000000000
--- a/curriculum/math-challenges/45-cryptography/rabin-cryptosystem.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "Rabin cryptosystem",
- "order": 15,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b680",
- "title": "Security of Rabin cryptosystem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/rsa-cryptosystem-and-factoring-integers.json b/curriculum/math-challenges/45-cryptography/rsa-cryptosystem-and-factoring-integers.json
deleted file mode 100644
index 79784eb8e3..0000000000
--- a/curriculum/math-challenges/45-cryptography/rsa-cryptosystem-and-factoring-integers.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "RSA Cryptosystem and Factoring Integers",
- "order": 9,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b673",
- "title": "RSA Cryptosystem and Factoring Integers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/rsa-cryptosystem.json b/curriculum/math-challenges/45-cryptography/rsa-cryptosystem.json
deleted file mode 100644
index 455809d160..0000000000
--- a/curriculum/math-challenges/45-cryptography/rsa-cryptosystem.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "RSA cryptosystem",
- "order": 11,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b676",
- "title": "Implementing RSA",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/secret-sharing-schemes.json b/curriculum/math-challenges/45-cryptography/secret-sharing-schemes.json
deleted file mode 100644
index eefb07bdbc..0000000000
--- a/curriculum/math-challenges/45-cryptography/secret-sharing-schemes.json
+++ /dev/null
@@ -1,123 +0,0 @@
-{
- "name": "Secret sharing schemes",
- "order": 34,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b699",
- "title": "Introduction: Shamir Threshold Scheme",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b303",
- "title": "A simplified (t,t)-threshold scheme",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b304",
- "title": "Access structures and general secret sharing",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b305",
- "title": "Monotone circuit construction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b306",
- "title": "Formal definitions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b307",
- "title": "Information rate and construction of efficient schemes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b308",
- "title": "Vector space construction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b309",
- "title": "An upper bound on the information rate",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b310",
- "title": "The decomposition construction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/security-of-elgamal-systems.json b/curriculum/math-challenges/45-cryptography/security-of-elgamal-systems.json
deleted file mode 100644
index 968d23386c..0000000000
--- a/curriculum/math-challenges/45-cryptography/security-of-elgamal-systems.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Security of ElGamal systems",
- "order": 23,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b688",
- "title": "Bit security of discrete logarithms",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b237",
- "title": "Semantic security of ElGamal systems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b238",
- "title": "Diffie-Hellman problems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/semantic-security-of-rsa.json b/curriculum/math-challenges/45-cryptography/semantic-security-of-rsa.json
deleted file mode 100644
index ea8f8fed5b..0000000000
--- a/curriculum/math-challenges/45-cryptography/semantic-security-of-rsa.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Semantic security of RSA",
- "order": 16,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b681",
- "title": "Partial information concerning plaintext bits",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b223",
- "title": "Optimal asymmetric encryption padding",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/session-key-distribution-schemes.json b/curriculum/math-challenges/45-cryptography/session-key-distribution-schemes.json
deleted file mode 100644
index f5e52ab162..0000000000
--- a/curriculum/math-challenges/45-cryptography/session-key-distribution-schemes.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Session key distribution schemes",
- "order": 29,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b694",
- "title": "The Needham-Schroeder(NS) Scheme",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b278",
- "title": "The Denning-Sacco Attack on the NS scheme",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b279",
- "title": "Kerberos",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b280",
- "title": "The Bellare-Rogaway scheme",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/shannons-theory.json b/curriculum/math-challenges/45-cryptography/shannons-theory.json
deleted file mode 100644
index ed06f19a72..0000000000
--- a/curriculum/math-challenges/45-cryptography/shannons-theory.json
+++ /dev/null
@@ -1,110 +0,0 @@
-{
- "name": "Shannons Theory",
- "order": 3,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b667",
- "title": "Introduction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b173",
- "title": "Elementary Probability theory",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b174",
- "title": "Perfect secrecy",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b175",
- "title": "Entropy",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b176",
- "title": "Huffman Encodings",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b177",
- "title": "Properties of entropy",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b178",
- "title": "Spurious keys and unicity distance",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b179",
- "title": "Product cryptosystems",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/signature-schemes.json b/curriculum/math-challenges/45-cryptography/signature-schemes.json
deleted file mode 100644
index 7fdb3c1d88..0000000000
--- a/curriculum/math-challenges/45-cryptography/signature-schemes.json
+++ /dev/null
@@ -1,175 +0,0 @@
-{
- "name": "Signature Schemes",
- "order": 24,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b689",
- "title": "Security requirements for signature schemes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b240",
- "title": "Signatures and hash functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b241",
- "title": "ElGamal signature scheme",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b242",
- "title": "Security of ElGamal signature scheme",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b243",
- "title": "Variants of ElGamal signature scheme",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b244",
- "title": "Schnorr signature scheme",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b245",
- "title": "Digital signature algorithm",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b246",
- "title": "Elliptic Curve DSA",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b247",
- "title": "Provably secure signature schemes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b248",
- "title": "One-time signatures",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b249",
- "title": "Full domain hash",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b250",
- "title": "Undeniable signatures",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b251",
- "title": "Fail-stop signatures",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/simple-cryptosystems.json b/curriculum/math-challenges/45-cryptography/simple-cryptosystems.json
deleted file mode 100644
index 2f5c378b67..0000000000
--- a/curriculum/math-challenges/45-cryptography/simple-cryptosystems.json
+++ /dev/null
@@ -1,97 +0,0 @@
-{
- "name": "Simple Cryptosystems",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b665",
- "title": "Shift Cipher",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b161",
- "title": "Substitution cipher",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b162",
- "title": "Affine cipher",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b163",
- "title": "Vigenere cipher",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b164",
- "title": "Hill cipher",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b165",
- "title": "Permutation cipher",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b166",
- "title": "Stream ciphers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/trust-models.json b/curriculum/math-challenges/45-cryptography/trust-models.json
deleted file mode 100644
index 6cbe86cc29..0000000000
--- a/curriculum/math-challenges/45-cryptography/trust-models.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Trust models",
- "order": 32,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b697",
- "title": "Strict hierarchy model",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b296",
- "title": "Networked PKIs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b297",
- "title": "Web Browser model",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b298",
- "title": "Pretty good privacy",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/45-cryptography/unconditionally-secure-macs.json b/curriculum/math-challenges/45-cryptography/unconditionally-secure-macs.json
deleted file mode 100644
index 5e70d83df5..0000000000
--- a/curriculum/math-challenges/45-cryptography/unconditionally-secure-macs.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Unconditionally secure MACs",
- "order": 8,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b672",
- "title": "Strongly universal hash families",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b206",
- "title": "Optimality of deception probabilities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/46-statistics/chi-square-distribution.json b/curriculum/math-challenges/46-statistics/chi-square-distribution.json
deleted file mode 100644
index 57d23a2c98..0000000000
--- a/curriculum/math-challenges/46-statistics/chi-square-distribution.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Chi-Square Distribution",
- "order": 10,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b711",
- "title": "Chi-Square Probability",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b361",
- "title": "Chi-Square Goodness-of-Fit Test",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b362",
- "title": "Chi-Square Test of Independence",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/46-statistics/confidence-intervals.json b/curriculum/math-challenges/46-statistics/confidence-intervals.json
deleted file mode 100644
index bd78a8baa2..0000000000
--- a/curriculum/math-challenges/46-statistics/confidence-intervals.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Confidence Intervals",
- "order": 8,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b709",
- "title": "Confidence Intervals Known",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b347",
- "title": "Confidence Interval for a Population Mean",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b348",
- "title": "Known Population Standard Deviation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b349",
- "title": "Unknown Population Standard Deviation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b350",
- "title": "Confidence Interval for a Single Population Proportion",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/46-statistics/continuous-random-variables.json b/curriculum/math-challenges/46-statistics/continuous-random-variables.json
deleted file mode 100644
index 46893f63cb..0000000000
--- a/curriculum/math-challenges/46-statistics/continuous-random-variables.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Continuous Random Variables",
- "order": 5,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b706",
- "title": "Continuous Probability",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b338",
- "title": "Uniform Probability",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b339",
- "title": "Exponential Probability",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/46-statistics/data.json b/curriculum/math-challenges/46-statistics/data.json
deleted file mode 100644
index 2b2de39a4d..0000000000
--- a/curriculum/math-challenges/46-statistics/data.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Data",
- "order": 1,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b702",
- "title": "Qualitative",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b323",
- "title": "Quantitative",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b324",
- "title": "Sampling",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b325",
- "title": "Frequency Tables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/46-statistics/descriptive-statistics.json b/curriculum/math-challenges/46-statistics/descriptive-statistics.json
deleted file mode 100644
index fdee1f3906..0000000000
--- a/curriculum/math-challenges/46-statistics/descriptive-statistics.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Descriptive Statistics",
- "order": 2,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b703",
- "title": "Data Graphs",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b327",
- "title": "Quartiles and Percentiles",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b328",
- "title": "Mean, Median, and Mode",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b329",
- "title": "Variance and Standard Deviation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/46-statistics/discrete-distributions.json b/curriculum/math-challenges/46-statistics/discrete-distributions.json
deleted file mode 100644
index fe23397860..0000000000
--- a/curriculum/math-challenges/46-statistics/discrete-distributions.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "name": "Discrete Distributions",
- "order": 4,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b705",
- "title": "Discrete Probability",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b334",
- "title": "Expected Value",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b335",
- "title": "Binomial Probability",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b336",
- "title": "Poisson Probability",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/46-statistics/hypothesis-testing-single-mean-and-single-proportion.json b/curriculum/math-challenges/46-statistics/hypothesis-testing-single-mean-and-single-proportion.json
deleted file mode 100644
index d7b0b560e4..0000000000
--- a/curriculum/math-challenges/46-statistics/hypothesis-testing-single-mean-and-single-proportion.json
+++ /dev/null
@@ -1,123 +0,0 @@
-{
- "name": "Hypothesis Testing: Single Mean and Single Proportion",
- "order": 9,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b710",
- "title": "Hypothesis Testing Overview",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b352",
- "title": "Hypothesis Testing for a Population Mean",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b353",
- "title": "Known Population Standard Deviation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b354",
- "title": "Unknown Population Standard Deviation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b355",
- "title": "Hypothesis Testing for a Single Population Proportion",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b356",
- "title": "Type I and II errors",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b357",
- "title": "Hypothesis Testing for Two Population Means",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b358",
- "title": "Hypothesis Testing for Two Population Proportions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b359",
- "title": "Hypothesis Testing for Matched or Paired Samples",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/46-statistics/linear-regression-and-correlation.json b/curriculum/math-challenges/46-statistics/linear-regression-and-correlation.json
deleted file mode 100644
index 10bfe30437..0000000000
--- a/curriculum/math-challenges/46-statistics/linear-regression-and-correlation.json
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- "name": "Linear Regression and Correlation",
- "order": 11,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b712",
- "title": "Linear Equations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b364",
- "title": "Scatter Plots",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b365",
- "title": "The Regression Equation",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b366",
- "title": "The Correlation Coefficient",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b367",
- "title": "Prediction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b368",
- "title": "Outliers",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/46-statistics/probability.json b/curriculum/math-challenges/46-statistics/probability.json
deleted file mode 100644
index a63470289d..0000000000
--- a/curriculum/math-challenges/46-statistics/probability.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Probability",
- "order": 3,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b704",
- "title": "Independent or Mutually Exclusive",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b331",
- "title": "Addition and Multiplication Rules",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b332",
- "title": "Contingency Tables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/46-statistics/the-central-limit-theorem.json b/curriculum/math-challenges/46-statistics/the-central-limit-theorem.json
deleted file mode 100644
index c906e15ff4..0000000000
--- a/curriculum/math-challenges/46-statistics/the-central-limit-theorem.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "The Central Limit Theorem",
- "order": 7,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b708",
- "title": "Central Limit Theorem ",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b344",
- "title": "Central Limit Theorem for Averages",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b345",
- "title": "Central Limit Theorem for Sums",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/46-statistics/the-normal-distribution.json b/curriculum/math-challenges/46-statistics/the-normal-distribution.json
deleted file mode 100644
index b4148e9657..0000000000
--- a/curriculum/math-challenges/46-statistics/the-normal-distribution.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "The Normal Distribution",
- "order": 6,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b707",
- "title": "Normal Probability Distribution",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b341",
- "title": "Standard Normal Probability",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b342",
- "title": "Normal Probability",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/47-probability/central-limit-theorem.json b/curriculum/math-challenges/47-probability/central-limit-theorem.json
deleted file mode 100644
index 9594422827..0000000000
--- a/curriculum/math-challenges/47-probability/central-limit-theorem.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Central limit theorem",
- "order": 20,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b721",
- "title": "Bernoulli trials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b389",
- "title": "Discrete independent trials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b390",
- "title": "Continuous independent trials",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/47-probability/combinatorics.json b/curriculum/math-challenges/47-probability/combinatorics.json
deleted file mode 100644
index af970d5904..0000000000
--- a/curriculum/math-challenges/47-probability/combinatorics.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Combinatorics",
- "order": 14,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b715",
- "title": "Permutations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b374",
- "title": "Combinations",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b375",
- "title": "Card Shuffling",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/47-probability/conditional-probability.json b/curriculum/math-challenges/47-probability/conditional-probability.json
deleted file mode 100644
index ef351abe1a..0000000000
--- a/curriculum/math-challenges/47-probability/conditional-probability.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Conditional Probability",
- "order": 15,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b716",
- "title": "Discrete conditional probability",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b377",
- "title": "Continuous conditional probability",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b378",
- "title": "Paradoxes",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/47-probability/continuous-probability-densities.json b/curriculum/math-challenges/47-probability/continuous-probability-densities.json
deleted file mode 100644
index ec518fafad..0000000000
--- a/curriculum/math-challenges/47-probability/continuous-probability-densities.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Continuous probability densities",
- "order": 13,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b714",
- "title": "Simulation of continuous probabilities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b372",
- "title": "Continuous density functions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/47-probability/discrete-probability-distributions.json b/curriculum/math-challenges/47-probability/discrete-probability-distributions.json
deleted file mode 100644
index da63558ffc..0000000000
--- a/curriculum/math-challenges/47-probability/discrete-probability-distributions.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Discrete Probability Distributions",
- "order": 12,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b713",
- "title": "Simulation of discrete probabilities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b370",
- "title": "Discrete probability distributions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/47-probability/distributions-and-densities.json b/curriculum/math-challenges/47-probability/distributions-and-densities.json
deleted file mode 100644
index b39f9431e8..0000000000
--- a/curriculum/math-challenges/47-probability/distributions-and-densities.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Distributions and densities",
- "order": 16,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b717",
- "title": "Important distributions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b380",
- "title": "Important densities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/47-probability/expected-value-and-variance.json b/curriculum/math-challenges/47-probability/expected-value-and-variance.json
deleted file mode 100644
index b2adf54939..0000000000
--- a/curriculum/math-challenges/47-probability/expected-value-and-variance.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Expected Value and Variance",
- "order": 17,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b718",
- "title": "Expected value",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b382",
- "title": "Variance of discrete random variables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b383",
- "title": "Continuous random variables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/47-probability/generating-functions.json b/curriculum/math-challenges/47-probability/generating-functions.json
deleted file mode 100644
index 865b3267e0..0000000000
--- a/curriculum/math-challenges/47-probability/generating-functions.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Generating functions",
- "order": 21,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b722",
- "title": "Discrete distributions",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b392",
- "title": "Branching Process",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b393",
- "title": "Continuous Densities",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/47-probability/law-of-large-numbers.json b/curriculum/math-challenges/47-probability/law-of-large-numbers.json
deleted file mode 100644
index 42519df978..0000000000
--- a/curriculum/math-challenges/47-probability/law-of-large-numbers.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Law of large numbers",
- "order": 19,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b720",
- "title": "Discrete random variables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b387",
- "title": "Continuous random variables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/47-probability/markov-chains.json b/curriculum/math-challenges/47-probability/markov-chains.json
deleted file mode 100644
index 5a26556e55..0000000000
--- a/curriculum/math-challenges/47-probability/markov-chains.json
+++ /dev/null
@@ -1,71 +0,0 @@
-{
- "name": "Markov chains",
- "order": 22,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b723",
- "title": "Introduction",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b395",
- "title": "Absorbing Markov Chains",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b396",
- "title": "Ergodic Markov Chains",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b397",
- "title": "Fundamental Limit theorem",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b398",
- "title": "Mean First Passage Time",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/47-probability/random-walks.json b/curriculum/math-challenges/47-probability/random-walks.json
deleted file mode 100644
index 34819bf9dc..0000000000
--- a/curriculum/math-challenges/47-probability/random-walks.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "Random Walks",
- "order": 23,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b724",
- "title": "Random walks in Euclidean space",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b400",
- "title": "Gambler's Ruin",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b401",
- "title": "Arc Sine laws",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/math-challenges/47-probability/sums-of-random-variables.json b/curriculum/math-challenges/47-probability/sums-of-random-variables.json
deleted file mode 100644
index e4260c1fab..0000000000
--- a/curriculum/math-challenges/47-probability/sums-of-random-variables.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "Sums of random variables",
- "order": 18,
- "challenges": [
- {
- "id": "59a5801209a6acac5983b719",
- "title": "Sums of discrete random variables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- },
- {
- "id": "59a5801209a6acac5983b385",
- "title": "Sums of continuous random variables",
- "description": [
- ""
- ],
- "challengeSeed": [
- ""
- ],
- "tests": [
- ""
- ]
- }
- ]
-}
\ No newline at end of file
diff --git a/curriculum/requiresTests/project-euler-problems.json b/curriculum/requiresTests/project-euler-problems.json
deleted file mode 100644
index cfb4950050..0000000000
--- a/curriculum/requiresTests/project-euler-problems.json
+++ /dev/null
@@ -1,4033 +0,0 @@
-[
-
- {
- "id": "5900f54d1000cf542c510060",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 481: Chef Showdown",
- "tests": [
- "assert.strictEqual(euler481(), TODO: MISSING ANSWER, 'message: euler481() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler481() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler481();"
- ],
- "description": [
- "A group of chefs (numbered #1, #2, etc) participate in a turn-based strategic cooking competition. On each chef's turn, he/she cooks up a dish to the best of his/her ability and gives it to a separate panel of judges for taste-testing. Let S(k) represent chef #k's skill level (which is publicly known). More specifically, S(k) is the probability that chef #k's dish will be assessed favorably by the judges (on any/all turns). If the dish receives a favorable rating, then the chef must choose one other chef to be eliminated from the competition. The last chef remaining in the competition is the winner.",
- "",
- "The game always begins with chef #1, with the turn order iterating sequentially over the rest of the chefs still in play. Then the cycle repeats from the lowest-numbered chef. All chefs aim to optimize their chances of winning within the rules as stated, assuming that the other chefs behave in the same manner. In the event that a chef has more than one equally-optimal elimination choice, assume that the chosen chef is always the one with the next-closest turn.",
- "",
- "Define Wn(k) as the probability that chef #k wins in a competition with n chefs. If we have S(1) = 0.25, S(2) = 0.5, and S(3) = 1, then W3(1) = 0.29375.",
- "",
- "Going forward, we assign S(k) = Fk/Fn+1 over all 1 ≤ k ≤ n, where Fk is a Fibonacci number: Fk = Fk-1 + Fk-2 with base cases F1 = F2 = 1. Then, for example, when considering a competition with n = 7 chefs, we have W7(1) = 0.08965042, W7(2) = 0.20775702, W7(3) = 0.15291406, W7(4) = 0.14554098, W7(5) = 0.15905291, W7(6) = 0.10261412, and W7(7) = 0.14247050, rounded to 8 decimal places each.",
- "",
- "Let E(n) represent the expected number of dishes cooked in a competition with n chefs. For instance, E(7) = 42.28176050.",
- "",
- "Find E(14) rounded to 8 decimal places."
- ]
- },
- {
- "id": "5900f54f1000cf542c510061",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 482: The incenter of a triangle",
- "tests": [
- "assert.strictEqual(euler482(), TODO: MISSING ANSWER, 'message: euler482() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler482() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler482();"
- ],
- "description": [
- "ABC is an integer sided triangle with incenter I and perimeter p.",
- "The segments IA, IB and IC have integral length as well. ",
- "",
- "",
- "Let L = p + |IA| + |IB| + |IC|. ",
- "",
- "",
- "Let S(P) = ∑L for all such triangles where p ≤ P. For example, S(103) = 3619.",
- "",
- "",
- "Find S(107)."
- ]
- },
- {
- "id": "5900f54f1000cf542c510062",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 483: Repeated permutation",
- "tests": [
- "assert.strictEqual(euler483(), TODO: MISSING ANSWER, 'message: euler483() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler483() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler483();"
- ],
- "description": [
- "We define a permutation as an operation that rearranges the order of the elements {1, 2, 3, ..., n}.",
- "There are n! such permutations, one of which leaves the elements in their initial order.",
- "For n = 3 we have 3! = 6 permutations:",
- "- P1 = keep the initial order",
- "- P2 = exchange the 1st and 2nd elements",
- "- P3 = exchange the 1st and 3rd elements",
- "- P4 = exchange the 2nd and 3rd elements",
- "- P5 = rotate the elements to the right",
- "- P6 = rotate the elements to the left",
- "",
- "",
- "If we select one of these permutations, and we re-apply the same permutation repeatedly, we eventually restore the initial order.For a permutation Pi, let f(Pi) be the number of steps required to restore the initial order by applying the permutation Pi repeatedly.For n = 3, we obtain:- f(P1) = 1 : (1,2,3) → (1,2,3)- f(P2) = 2 : (1,2,3) → (2,1,3) → (1,2,3)- f(P3) = 2 : (1,2,3) → (3,2,1) → (1,2,3)- f(P4) = 2 : (1,2,3) → (1,3,2) → (1,2,3)- f(P5) = 3 : (1,2,3) → (3,1,2) → (2,3,1) → (1,2,3)- f(P6) = 3 : (1,2,3) → (2,3,1) → (3,1,2) → (1,2,3)",
- "",
- "",
- "Let g(n) be the average value of f2(Pi) over all permutations Pi of length n.g(3) = (12 + 22 + 22 + 22 + 32 + 32)/3! = 31/6 ≈ 5.166666667e0g(5) = 2081/120 ≈ 1.734166667e1g(20) = 12422728886023769167301/2432902008176640000 ≈ 5.106136147e3",
- "",
- "",
- "Find g(350) and write the answer in scientific notation rounded to 10 significant digits, using a lowercase e to separate mantissa and exponent, as in the examples above."
- ]
- },
- {
- "id": "5900f5501000cf542c510063",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 484: Arithmetic Derivative",
- "tests": [
- "assert.strictEqual(euler484(), TODO: MISSING ANSWER, 'message: euler484() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler484() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler484();"
- ],
- "description": [
- "The arithmetic derivative is defined by",
- "p' = 1 for any prime p",
- "(ab)' = a'b + ab' for all integers a, b (Leibniz rule)",
- "For example, 20' = 24",
- "",
- "Find ∑ gcd(k,k') for 1 < k ≤ 5·1015",
- "",
- "Note: gcd(x,y) denotes the greatest common divisor of x and y."
- ]
- },
- {
- "id": "5900f5511000cf542c510064",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 485: Maximum number of divisors",
- "tests": [
- "assert.strictEqual(euler485(), 51281274340, 'message: euler485() should return 51281274340.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler485() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler485();"
- ],
- "description": [
- "Let d(n) be the number of divisors of n.",
- "Let M(n,k) be the maximum value of d(j) for n ≤ j ≤ n+k-1.",
- "Let S(u,k) be the sum of M(n,k) for 1 ≤ n ≤ u-k+1.",
- "",
- "",
- "You are given that S(1000,10)=17176.",
- "",
- "",
- "Find S(100 000 000,100 000)."
- ]
- },
- {
- "id": "5900f5531000cf542c510065",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 486: Palindrome-containing strings",
- "tests": [
- "assert.strictEqual(euler486(), 11408450515, 'message: euler486() should return 11408450515.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler486() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler486();"
- ],
- "description": [
- "Let F5(n) be the number of strings s such that:",
- "s consists only of '0's and '1's,",
- "s has length at most n, and",
- "s contains a palindromic substring of length at least 5.",
- "For example, F5(4) = 0, F5(5) = 8, ",
- "F5(6) = 42 and F5(11) = 3844.",
- "",
- "Let D(L) be the number of integers n such that ",
- "5 ≤ n ≤ L and F5(n) is divisible by 87654321.",
- "",
- "For example, D(107) = 0 and D(5·109) = 51.",
- "",
- "Find D(1018)."
- ]
- },
- {
- "id": "5900f5531000cf542c510066",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 487: Sums of power sums",
- "tests": [
- "assert.strictEqual(euler487(), 106650212746, 'message: euler487() should return 106650212746.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler487() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler487();"
- ],
- "description": [
- "Let fk(n) be the sum of the kth powers of the first n positive integers.",
- "",
- "For example, f2(10) = 12 + 22 + 32 + 42 + 52 + 62 + 72 + 82 + 92 + 102 = 385.",
- "",
- "Let Sk(n) be the sum of fk(i) for 1 ≤ i ≤ n. For example, S4(100) = 35375333830.",
- "",
- "What is ∑ (S10000(1012) mod p) over all primes p between 2 ⋅ 109 and 2 ⋅ 109 + 2000?"
- ]
- },
- {
- "id": "5900f5541000cf542c510067",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 488: Unbalanced Nim",
- "tests": [
- "assert.strictEqual(euler488(), TODO: MISSING ANSWER, 'message: euler488() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler488() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler488();"
- ],
- "description": [
- "Alice and Bob have enjoyed playing Nim every day. However, they finally got bored of playing ordinary three-heap Nim.",
- "So, they added an extra rule:",
- "",
- "- Must not make two heaps of the same size.",
- "",
- "The triple (a,b,c) indicates the size of three heaps.",
- "Under this extra rule, (2,4,5) is one of the losing positions for the next player.",
- "",
- "To illustrate:",
- "- Alice moves to (2,4,3)",
- "- Bob moves to (0,4,3)",
- "- Alice moves to (0,2,3)",
- "- Bob moves to (0,2,1)",
- "",
- "Unlike ordinary three-heap Nim, (0,1,2) and its permutations are the end states of this game.",
- "",
- "For an integer N, we define F(N) as the sum of a+b+c for all the losing positions for the next player, with 0 < a < b < c < N.",
- "",
- "For example, F(8) = 42, because there are 4 losing positions for the next player, (1,3,5), (1,4,6), (2,3,6) and (2,4,5).",
- "We can also verify that F(128) = 496062.",
- "",
- "Find the last 9 digits of F(1018)."
- ]
- },
- {
- "id": "5900f5561000cf542c510068",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 489: Common factors between two sequences",
- "tests": [
- "assert.strictEqual(euler489(), TODO: MISSING ANSWER, 'message: euler489() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler489() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler489();"
- ],
- "description": [
- "Let G(a, b) be the smallest non-negative integer n for which gcd(n3 + b, (n + a)3 + b) is maximized.",
- "For example, G(1, 1) = 5 because gcd(n3 + 1, (n + 1)3 + 1) reaches its maximum value of 7 for n = 5, and is smaller for 0 ≤ n < 5.",
- "Let H(m, n) = Σ G(a, b) for 1 ≤ a ≤ m, 1 ≤ b ≤ n.",
- "You are given H(5, 5) = 128878 and H(10, 10) = 32936544.",
- "Find H(18, 1900)."
- ]
- },
- {
- "id": "5900f5561000cf542c510069",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 490: Jumping frog",
- "tests": [
- "assert.strictEqual(euler490(), TODO: MISSING ANSWER, 'message: euler490() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler490() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler490();"
- ],
- "description": [
- "There are n stones in a pond, numbered 1 to n. Consecutive stones are spaced one unit apart.",
- "",
- "A frog sits on stone 1. He wishes to visit each stone exactly once, stopping on stone n. However, he can only jump from one stone to another if they are at most 3 units apart. In other words, from stone i, he can reach a stone j if 1 ≤ j ≤ n and j is in the set {i-3, i-2, i-1, i+1, i+2, i+3}.",
- "",
- "Let f(n) be the number of ways he can do this. For example, f(6) = 14, as shown below:",
- "1 → 2 → 3 → 4 → 5 → 6 ",
- "1 → 2 → 3 → 5 → 4 → 6 ",
- "1 → 2 → 4 → 3 → 5 → 6 ",
- "1 → 2 → 4 → 5 → 3 → 6 ",
- "1 → 2 → 5 → 3 → 4 → 6 ",
- "1 → 2 → 5 → 4 → 3 → 6 ",
- "1 → 3 → 2 → 4 → 5 → 6 ",
- "1 → 3 → 2 → 5 → 4 → 6 ",
- "1 → 3 → 4 → 2 → 5 → 6 ",
- "1 → 3 → 5 → 2 → 4 → 6 ",
- "1 → 4 → 2 → 3 → 5 → 6 ",
- "1 → 4 → 2 → 5 → 3 → 6 ",
- "1 → 4 → 3 → 2 → 5 → 6 ",
- "1 → 4 → 5 → 2 → 3 → 6",
- "",
- "Other examples are f(10) = 254 and f(40) = 1439682432976.",
- "",
- "Let S(L) = ∑ f(n)3 for 1 ≤ n ≤ L.",
- "Examples:",
- "S(10) = 18230635",
- "S(20) = 104207881192114219",
- "S(1 000) mod 109 = 225031475",
- "S(1 000 000) mod 109 = 363486179",
- "",
- "Find S(1014) mod 109."
- ]
- },
- {
- "id": "5900f5591000cf542c51006b",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 491: Double pandigital number divisible by 11",
- "tests": [
- "assert.strictEqual(euler491(), 194505988824000, 'message: euler491() should return 194505988824000.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler491() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler491();"
- ],
- "description": [
- "We call a positive integer double pandigital if it uses all the digits 0 to 9 exactly twice (with no leading zero). For example, 40561817703823564929 is one such number.",
- "",
- "How many double pandigital numbers are divisible by 11?"
- ]
- },
- {
- "id": "5900f5581000cf542c51006a",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 492: Exploding sequence",
- "tests": [
- "assert.strictEqual(euler492(), TODO: MISSING ANSWER, 'message: euler492() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler492() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler492();"
- ],
- "description": [
- "Define the sequence a1, a2, a3, ... as:",
- "a1 = 1",
- "an+1 = 6an2 + 10an + 3 for n ≥ 1.",
- "",
- "Examples:",
- "a3 = 2359",
- "a6 = 269221280981320216750489044576319",
- "a6 mod 1 000 000 007 = 203064689",
- "a100 mod 1 000 000 007 = 456482974",
- "",
- "",
- "",
- "Define B(x,y,n) as ∑ (an mod p) for every prime p such that x ≤ p ≤ x+y.",
- "",
- "",
- "",
- "Examples:",
- "B(109, 103, 103) = 23674718882",
- "B(109, 103, 1015) = 20731563854",
- "",
- "",
- "Find B(109, 107, 1015)."
- ]
- },
- {
- "id": "5900f55a1000cf542c51006c",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 493: Under The Rainbow",
- "tests": [
- "assert.strictEqual(euler493(), 6.818741802, 'message: euler493() should return 6.818741802.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler493() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler493();"
- ],
- "description": [
- "70 colored balls are placed in an urn, 10 for each of the seven rainbow colors.",
- "What is the expected number of distinct colors in 20 randomly picked balls?",
- "Give your answer with nine digits after the decimal point (a.bcdefghij)."
- ]
- },
- {
- "id": "5900f55a1000cf542c51006d",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 494: Collatz prefix families",
- "tests": [
- "assert.strictEqual(euler494(), TODO: MISSING ANSWER, 'message: euler494() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler494() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler494();"
- ],
- "description": [
- "The Collatz sequence is defined as:",
- "$a_{i+1} = \\left\\{ \\large{\\frac {a_i} 2 \\atop 3 a_i+1} {\\text{if }a_i\\text{ is even} \\atop \\text{if }a_i\\text{ is odd}} \\right.$.",
- "",
- "",
- "The Collatz conjecture states that starting from any positive integer, the sequence eventually reaches the cycle 1,4,2,1....",
- "We shall define the sequence prefix p(n) for the Collatz sequence starting with a1 = n as the sub-sequence of all numbers not a power of 2 (20=1 is considered a power of 2 for this problem). For example:p(13) = {13, 40, 20, 10, 5} p(8) = {}",
- "Any number invalidating the conjecture would have an infinite length sequence prefix.",
- "",
- "",
- "Let Sm be the set of all sequence prefixes of length m. Two sequences {a1, a2, ..., am} and {b1, b2, ..., bm} in Sm are said to belong to the same prefix family if ai < aj if and only if bi < bj for all 1 ≤ i,j ≤ m.",
- "",
- "",
- "For example, in S4, {6, 3, 10, 5} is in the same family as {454, 227, 682, 341}, but not {113, 340, 170, 85}.",
- "Let f(m) be the number of distinct prefix families in Sm.",
- "You are given f(5) = 5, f(10) = 55, f(20) = 6771.",
- "",
- "",
- "Find f(90)."
- ]
- },
- {
- "id": "5900f55b1000cf542c51006e",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 495: Writing n as the product of k distinct positive integers",
- "tests": [
- "assert.strictEqual(euler495(), TODO: MISSING ANSWER, 'message: euler495() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler495() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler495();"
- ],
- "description": [
- "Let W(n,k) be the number of ways in which n can be written as the product of k distinct positive integers.",
- "For example, W(144,4) = 7. There are 7 ways in which 144 can be written as a product of 4 distinct positive integers:",
- "144 = 1×2×4×18",
- "144 = 1×2×8×9",
- "144 = 1×2×3×24",
- "144 = 1×2×6×12",
- "144 = 1×3×4×12",
- "144 = 1×3×6×8",
- "144 = 2×3×4×6",
- "Note that permutations of the integers themselves are not considered distinct.",
- "Furthermore, W(100!,10) modulo 1 000 000 007 = 287549200.",
- "Find W(10000!,30) modulo 1 000 000 007."
- ]
- },
- {
- "id": "5900f55d1000cf542c51006f",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 496: Incenter and circumcenter of triangle",
- "tests": [
- "assert.strictEqual(euler496(), 2042473533769142800, 'message: euler496() should return 2042473533769142800.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler496() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler496();"
- ],
- "description": [
- "Given an integer sided triangle ABC:",
- "Let I be the incenter of ABC.",
- "Let D be the intersection between the line AI and the circumcircle of ABC (A ≠ D).",
- "",
- "We define F(L) as the sum of BC for the triangles ABC that satisfy AC = DI and BC ≤ L.",
- "",
- "For example, F(15) = 45 because the triangles ABC with (BC,AC,AB) = (6,4,5), (12,8,10), (12,9,7), (15,9,16) satisfy the conditions.",
- "",
- "Find F(109)."
- ]
- },
- {
- "id": "5900f55f1000cf542c510070",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 497: Drunken Tower of Hanoi",
- "tests": [
- "assert.strictEqual(euler497(), 684901360, 'message: euler497() should return 684901360.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler497() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler497();"
- ],
- "description": [
- "Bob is very familiar with the famous mathematical puzzle/game, \"Tower of Hanoi,\" which consists of three upright rods and disks of different sizes that can slide onto any of the rods. The game begins with a stack of n disks placed on the leftmost rod in descending order by size. The objective of the game is to move all of the disks from the leftmost rod to the rightmost rod, given the following restrictions:",
- "",
- "Only one disk can be moved at a time.",
- "A valid move consists of taking the top disk from one stack and placing it onto another stack (or an empty rod).",
- "No disk can be placed on top of a smaller disk.",
- "Moving on to a variant of this game, consider a long room k units (square tiles) wide, labeled from 1 to k in ascending order. Three rods are placed at squares a, b, and c, and a stack of n disks is placed on the rod at square a.",
- "",
- "Bob begins the game standing at square b. His objective is to play the Tower of Hanoi game by moving all of the disks to the rod at square c. However, Bob can only pick up or set down a disk if he is on the same square as the rod / stack in question.",
- "",
- "Unfortunately, Bob is also drunk. On a given move, Bob will either stumble one square to the left or one square to the right with equal probability, unless Bob is at either end of the room, in which case he can only move in one direction. Despite Bob's inebriated state, he is still capable of following the rules of the game itself, as well as choosing when to pick up or put down a disk.",
- "",
- "The following animation depicts a side-view of a sample game for n = 3, k = 7, a = 2, b = 4, and c = 6:",
- "",
- "",
- "",
- "Let E(n,k,a,b,c) be the expected number of squares that Bob travels during a single optimally-played game. A game is played optimally if the number of disk-pickups is minimized.",
- "",
- "Interestingly enough, the result is always an integer. For example, E(2,5,1,3,5) = 60 and E(3,20,4,9,17) = 2358.",
- "",
- "Find the last nine digits of ∑1≤n≤10000 E(n,10n,3n,6n,9n)."
- ]
- },
- {
- "id": "5900f55f1000cf542c510071",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 498: Remainder of polynomial division",
- "tests": [
- "assert.strictEqual(euler498(), 472294837, 'message: euler498() should return 472294837.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler498() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler498();"
- ],
- "description": [
- "For positive integers n and m, we define two polynomials Fn(x) = xn and Gm(x) = (x-1)m.",
- "We also define a polynomial Rn,m(x) as the remainder of the division of Fn(x) by Gm(x).",
- "For example, R6,3(x) = 15x2 - 24x + 10.",
- "",
- "Let C(n, m, d) be the absolute value of the coefficient of the d-th degree term of Rn,m(x).",
- "We can verify that C(6, 3, 1) = 24 and C(100, 10, 4) = 227197811615775.",
- "",
- "Find C(1013, 1012, 104) mod 999999937."
- ]
- },
- {
- "id": "5900f5611000cf542c510072",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 499: St. Petersburg Lottery",
- "tests": [
- "assert.strictEqual(euler499(), 0.8660312, 'message: euler499() should return 0.8660312.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler499() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler499();"
- ],
- "description": [
- "A gambler decides to participate in a special lottery. In this lottery the gambler plays a series of one or more games.",
- "Each game costs m pounds to play and starts with an initial pot of 1 pound. The gambler flips an unbiased coin. Every time a head appears, the pot is doubled and the gambler continues. When a tail appears, the game ends and the gambler collects the current value of the pot. The gambler is certain to win at least 1 pound, the starting value of the pot, at the cost of m pounds, the initial fee.",
- "",
- "The gambler cannot continue to play if his fortune falls below m pounds.",
- "Let pm(s) denote the probability that the gambler will never run out of money in this lottery given his initial fortune s and the cost per game m.",
- "For example p2(2) ≈ 0.2522, p2(5) ≈ 0.6873 and p6(10 000) ≈ 0.9952 (note: pm(s) = 0 for s < m).",
- "",
- "Find p15(109) and give your answer rounded to 7 decimal places behind the decimal point in the form 0.abcdefg."
- ]
- },
- {
- "id": "5900f5611000cf542c510073",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 500: Problem 500!!!",
- "tests": [
- "assert.strictEqual(euler500(), 35407281, 'message: euler500() should return 35407281.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler500() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler500();"
- ],
- "description": [
- "The number of divisors of 120 is 16.",
- "In fact 120 is the smallest number having 16 divisors.",
- "",
- "",
- "Find the smallest number with 2500500 divisors.",
- "Give your answer modulo 500500507."
- ]
- },
- {
- "id": "5900f5621000cf542c510074",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 501: Eight Divisors",
- "tests": [
- "assert.strictEqual(euler501(), 197912312715, 'message: euler501() should return 197912312715.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler501() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler501();"
- ],
- "description": [
- "The eight divisors of 24 are 1, 2, 3, 4, 6, 8, 12 and 24.",
- "The ten numbers not exceeding 100 having exactly eight divisors are 24, 30, 40, 42, 54, 56, 66, 70, 78 and 88.",
- "Let f(n) be the count of numbers not exceeding n with exactly eight divisors.",
- "You are given f(100) = 10, f(1000) = 180 and f(106) = 224427.",
- "Find f(1012)."
- ]
- },
- {
- "id": "5900f5621000cf542c510075",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 502: Counting Castles",
- "tests": [
- "assert.strictEqual(euler502(), TODO: MISSING ANSWER, 'message: euler502() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler502() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler502();"
- ],
- "description": [
- "We define a block to be a rectangle with a height of 1 and an integer-valued length. Let a castle be a configuration of stacked blocks.",
- "",
- "Given a game grid that is w units wide and h units tall, a castle is generated according to the following rules:",
- "",
- "",
- "Blocks can be placed on top of other blocks as long as nothing sticks out past the edges or hangs out over open space.",
- "All blocks are aligned/snapped to the grid.",
- "Any two neighboring blocks on the same row have at least one unit of space between them.",
- "The bottom row is occupied by a block of length w.",
- "The maximum achieved height of the entire castle is exactly h.",
- "The castle is made from an even number of blocks.",
- "The following is a sample castle for w=8 and h=5:",
- "",
- "",
- "",
- "Let F(w,h) represent the number of valid castles, given grid parameters w and h.",
- "",
- "For example, F(4,2) = 10, F(13,10) = 3729050610636, F(10,13) = 37959702514, and F(100,100) mod 1 000 000 007 = 841913936.",
- "",
- "Find (F(1012,100) + F(10000,10000) + F(100,1012)) mod 1 000 000 007."
- ]
- },
- {
- "id": "5900f5631000cf542c510076",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 503: Compromise or persist",
- "tests": [
- "assert.strictEqual(euler503(), 3.8694550145, 'message: euler503() should return 3.8694550145.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler503() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler503();"
- ],
- "description": [
- "Alice is playing a game with n cards numbered 1 to n.",
- "",
- "A game consists of iterations of the following steps.",
- "(1) Alice picks one of the cards at random.",
- "(2) Alice cannot see the number on it. Instead, Bob, one of her friends, sees the number and tells Alice how many previously-seen numbers are bigger than the number which he is seeing.",
- "(3) Alice can end or continue the game. If she decides to end, the number becomes her score. If she decides to continue, the card is removed from the game and she returns to (1). If there is no card left, she is forced to end the game.",
- "",
- "Let F(n) be the Alice's expected score if she takes the optimized strategy to minimize her score.",
- "",
- "For example, F(3) = 5/3. At the first iteration, she should continue the game. At the second iteration, she should end the game if Bob says that one previously-seen number is bigger than the number which he is seeing, otherwise she should continue the game.",
- "",
- "We can also verify that F(4) = 15/8 and F(10) ≈ 2.5579365079.",
- "",
- "Find F(106). Give your answer rounded to 10 decimal places behind the decimal point."
- ]
- },
- {
- "id": "5900f5641000cf542c510077",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 504: Square on the Inside",
- "tests": [
- "assert.strictEqual(euler504(), 694687, 'message: euler504() should return 694687.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler504() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler504();"
- ],
- "description": [
- "Let ABCD be a quadrilateral whose vertices are lattice points lying on the coordinate axes as follows:",
- "",
- "A(a, 0), B(0, b), C(−c, 0), D(0, −d), where 1 ≤ a, b, c, d ≤ m and a, b, c, d, m are integers.",
- "",
- "It can be shown that for m = 4 there are exactly 256 valid ways to construct ABCD. Of these 256 quadrilaterals, 42 of them strictly contain a square number of lattice points.",
- "",
- "How many quadrilaterals ABCD strictly contain a square number of lattice points for m = 100?"
- ]
- },
- {
- "id": "5900f5661000cf542c510078",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 505: Bidirectional Recurrence",
- "tests": [
- "assert.strictEqual(euler505(), TODO: MISSING ANSWER, 'message: euler505() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler505() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler505();"
- ],
- "description": [
- "Let:",
- "$\\begin{array}{ll} x(0)&=0 \\\\ x(1)&=1 \\\\ x(2k)&=(3x(k)+2x(\\lfloor \\frac k 2 \\rfloor)) \\text{ mod } 2^{60} \\text{ for } k \\ge 1 \\text {, where } \\lfloor \\text { } \\rfloor \\text { is the floor function} \\\\ x(2k+1)&=(2x(k)+3x(\\lfloor \\frac k 2 \\rfloor)) \\text{ mod } 2^{60} \\text{ for } k \\ge 1 \\\\ y_n(k)&=\\left\\{{\\begin{array}{lc} x(k) && \\text{if } k \\ge n \\\\ 2^{60} - 1 - max(y_n(2k),y_n(2k+1)) && \\text{if } k < n \\end{array}} \\right. \\\\ A(n)&=y_n(1) \\end{array}$",
- "You are given:",
- "$\\begin{array}{ll} x(2)&=3 \\\\ x(3)&=2 \\\\ x(4)&=11 \\\\ y_4(4)&=11 \\\\ y_4(3)&=2^{60}-9\\\\ y_4(2)&=2^{60}-12 \\\\ y_4(1)&=A(4)=8 \\\\ A(10)&=2^{60}-34\\\\ A(10^3)&=101881 \\end{array}$",
- "Find $A(10^{12})$."
- ]
- },
- {
- "id": "5900f5671000cf542c510079",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 506: Clock sequence",
- "tests": [
- "assert.strictEqual(euler506(), 18934502, 'message: euler506() should return 18934502.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler506() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler506();"
- ],
- "description": [
- "Consider the infinite repeating sequence of digits:",
- "1234321234321234321...",
- "Amazingly, you can break this sequence of digits into a sequence of integers such that the sum of the digits in the n'th value is n.",
- "The sequence goes as follows:",
- "1, 2, 3, 4, 32, 123, 43, 2123, 432, 1234, 32123, ...",
- "Let vn be the n'th value in this sequence. For example, v2 = 2, v5 = 32 and v11 = 32123.",
- "Let S(n) be v1 + v2 + ... + vn. For example, S(11) = 36120, and S(1000) mod 123454321 = 18232686.",
- "Find S(1014) mod 123454321."
- ]
- },
- {
- "id": "5900f5671000cf542c51007a",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 507: Shortest Lattice Vector",
- "tests": [
- "assert.strictEqual(euler507(), TODO: MISSING ANSWER, 'message: euler507() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler507() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler507();"
- ],
- "description": [
- "Let $t_n$ be the tribonacci numbers defined as:",
- "$t_0 = t_1 = 0$;",
- "$t_2 = 1$;",
- "$t_n = t_{n-1} + t_{n-2} + t_{n-3}$ for $n \\ge 3$",
- "and let $r_n = t_n \\text{ mod } 10^7$.",
- "",
- "",
- "For each pair of Vectors $V_n=(v_1,v_2,v_3)$ and $W_n=(w_1,w_2,w_3)$ with $v_1=r_{12n-11}-r_{12n-10}, v_2=r_{12n-9}+r_{12n-8}, v_3=r_{12n-7} \\cdot r_{12n-6}$ and $w_1=r_{12n-5}-r_{12n-4}, w_2=r_{12n-3}+r_{12n-2}, w_3=r_{12n-1} \\cdot r_{12n}$",
- "",
- "",
- "we define $S(n)$ as the minimal value of the manhattan length of the vector $D=k \\cdot V_n+l \\cdot W_n$ measured as $|k \\cdot v_1+l \\cdot w_1|+|k \\cdot v_2+l \\cdot w_2|+|k \\cdot v_3+l \\cdot w_3|$",
- " for any integers $k$ and $l$ with $(k,l)\\neq (0,0)$.",
- "",
- "The first vector pair is (-1, 3, 28), (-11, 125, 40826).",
- "You are given that $S(1)=32$ and $\\sum_{n=1}^{10} S(n)=130762273722$.",
- "",
- "",
- "Find $\\sum_{n=1}^{20000000} S(n)$."
- ]
- },
- {
- "id": "5900f5691000cf542c51007c",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 508: Integers in base i-1",
- "tests": [
- "assert.strictEqual(euler508(), TODO: MISSING ANSWER, 'message: euler508() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler508() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler508();"
- ],
- "description": [
- "Consider the Gaussian integer i-1. A base i-1 representation of a Gaussian integer a+bi is a finite sequence of digits dn-1dn-2...d1d0 such that:",
- "",
- "a+bi = dn-1(i-1)n-1 + dn-2(i-1)n-2 + ... + d1(i-1) + d0",
- "Each dk is in {0,1}",
- "There are no leading zeroes, i.e. dn-1 ≠ 0, unless a+bi is itself 0",
- "Here are base i-1 representations of a few Gaussian integers:",
- "11+24i → 111010110001101",
- "24-11i → 110010110011",
- "8+0i → 111000000",
- "-5+0i → 11001101",
- "0+0i → 0",
- "",
- "Remarkably, every Gaussian integer has a unique base i-1 representation!",
- "",
- "Define f(a+bi) as the number of 1s in the unique base i-1 representation of a+bi. For example, f(11+24i) = 9 and f(24-11i) = 7.",
- "",
- "Define B(L) as the sum of f(a+bi) for all integers a, b such that |a| ≤ L and |b| ≤ L. For example, B(500) = 10795060.",
- "",
- "Find B(1015) mod 1 000 000 007."
- ]
- },
- {
- "id": "5900f5691000cf542c51007b",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 509: Divisor Nim",
- "tests": [
- "assert.strictEqual(euler509(), 151725678, 'message: euler509() should return 151725678.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler509() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler509();"
- ],
- "description": [
- "Anton and Bertrand love to play three pile Nim.",
- "However, after a lot of games of Nim they got bored and changed the rules somewhat.",
- "They may only take a number of stones from a pile that is a proper divisor of the number of stones present in the pile. E.g. if a pile at a certain moment contains 24 stones they may take only 1,2,3,4,6,8 or 12 stones from that pile.",
- "So if a pile contains one stone they can't take the last stone from it as 1 isn't a proper divisor of 1.",
- "The first player that can't make a valid move loses the game.",
- "Of course both Anton and Bertrand play optimally.",
- "",
- "The triple (a,b,c) indicates the number of stones in the three piles.",
- "Let S(n) be the number of winning positions for the next player for 1 ≤ a, b, c ≤ n.S(10) = 692 and S(100) = 735494.",
- "",
- "Find S(123456787654321) modulo 1234567890."
- ]
- },
- {
- "id": "5900f56b1000cf542c51007d",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 510: Tangent Circles",
- "tests": [
- "assert.strictEqual(euler510(), 315306518862563700, 'message: euler510() should return 315306518862563700.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler510() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler510();"
- ],
- "description": [
- "Circles A and B are tangent to each other and to line L at three distinct points.",
- "Circle C is inside the space between A, B and L, and tangent to all three.",
- "Let rA, rB and rC be the radii of A, B and C respectively.",
- "Let S(n) = Σ rA + rB + rC, for 0 < rA ≤ rB ≤ n where rA, rB and rC are integers.",
- "The only solution for 0 < rA ≤ rB ≤ 5 is rA = 4, rB = 4 and rC = 1, so S(5) = 4 + 4 + 1 = 9.",
- "You are also given S(100) = 3072.",
- "Find S(109)."
- ]
- },
- {
- "id": "5900f56b1000cf542c51007e",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 511: Sequences with nice divisibility properties",
- "tests": [
- "assert.strictEqual(euler511(), 935247012, 'message: euler511() should return 935247012.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler511() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler511();"
- ],
- "description": [
- "Let Seq(n,k) be the number of positive-integer sequences {ai}1≤i≤n of length n such that:",
- "n is divisible by ai for 1 ≤ i ≤ n, and",
- " n + a1 + a2 + ... + an is divisible by k.",
- "Examples:",
- "Seq(3,4) = 4, and the 4 sequences are:",
- "{1, 1, 3}",
- "{1, 3, 1}",
- "{3, 1, 1}",
- "{3, 3, 3}",
- "Seq(4,11) = 8, and the 8 sequences are:",
- "{1, 1, 1, 4}",
- "{1, 1, 4, 1}",
- "{1, 4, 1, 1}",
- "{4, 1, 1, 1}",
- "{2, 2, 2, 1}",
- "{2, 2, 1, 2}",
- "{2, 1, 2, 2}",
- "{1, 2, 2, 2}",
- "The last nine digits of Seq(1111,24) are 840643584.",
- "Find the last nine digits of Seq(1234567898765,4321)."
- ]
- },
- {
- "id": "5900f56d1000cf542c51007f",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 512: Sums of totients of powers",
- "tests": [
- "assert.strictEqual(euler512(), 50660591862310320, 'message: euler512() should return 50660591862310320.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler512() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler512();"
- ],
- "description": [
- "Let $\\varphi(n)$ be Euler's totient function.",
- "Let $f(n)=(\\sum_{i=1}^{n}\\varphi(n^i)) \\text{ mod } (n+1)$.",
- "Let $g(n)=\\sum_{i=1}^{n} f(i)$.",
- "$g(100)=2007$.",
- "",
- "",
- "Find $g(5 \\times 10^8)$."
- ]
- },
- {
- "id": "5900f56e1000cf542c510080",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 513: Integral median",
- "tests": [
- "assert.strictEqual(euler513(), TODO: MISSING ANSWER, 'message: euler513() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler513() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler513();"
- ],
- "description": [
- "ABC is an integral sided triangle with sides a≤b≤c.",
- "mc is the median connecting C and the midpoint of AB. ",
- "F(n) is the number of such triangles with c≤n for which mc has integral length as well.",
- "F(10)=3 and F(50)=165.",
- "",
- "Find F(100000)."
- ]
- },
- {
- "id": "5900f56f1000cf542c510081",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 514: Geoboard Shapes",
- "tests": [
- "assert.strictEqual(euler514(), TODO: MISSING ANSWER, 'message: euler514() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler514() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler514();"
- ],
- "description": [
- "A geoboard (of order N) is a square board with equally-spaced pins protruding from the surface, representing an integer point lattice for coordinates 0 ≤ x,y ≤ N.",
- "",
- "John begins with a pinless geoboard. Each position on the board is a hole that can be filled with a pin. John decides to generate a random integer between 1 and N+1 (inclusive) for each hole in the geoboard. If the random integer is equal to 1 for a given hole, then a pin is placed in that hole.",
- "",
- "After John is finished generating numbers for all (N+1)2 holes and placing any/all corresponding pins, he wraps a tight rubberband around the entire group of pins protruding from the board. Let S represent the shape that is formed. S can also be defined as the smallest convex shape that contains all the pins.",
- "",
- "",
- "",
- "The above image depicts a sample layout for N = 4. The green markers indicate positions where pins have been placed, and the blue lines collectively represent the rubberband. For this particular arrangement, S has an area of 6. If there are fewer than three pins on the board (or if all pins are collinear), S can be assumed to have zero area.",
- "",
- "Let E(N) be the expected area of S given a geoboard of order N. For example, E(1) = 0.18750, E(2) = 0.94335, and E(10) = 55.03013 when rounded to five decimal places each.",
- "",
- "Calculate E(100) rounded to five decimal places."
- ]
- },
- {
- "id": "5900f5711000cf542c510083",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 515: Dissonant Numbers",
- "tests": [
- "assert.strictEqual(euler515(), 2422639000800, 'message: euler515() should return 2422639000800.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler515() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler515();"
- ],
- "description": [
- "Let d(p,n,0) be the multiplicative inverse of n modulo prime p, defined as n × d(p,n,0) = 1 mod p.",
- "Let d(p,n,k) = $\\sum_{i=1}^n$d(p,i,k−1) for k ≥ 1.",
- "Let D(a,b,k) = $\\sum$(d(p,p-1,k) mod p) for all primes a ≤ p < a + b.",
- "You are given:",
- "D(101,1,10) = 45",
- "D(103,102,102) = 8334",
- "D(106,103,103) = 38162302Find D(109,105,105)."
- ]
- },
- {
- "id": "5900f5701000cf542c510082",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 516: 5-smooth totients",
- "tests": [
- "assert.strictEqual(euler516(), 939087315, 'message: euler516() should return 939087315.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler516() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler516();"
- ],
- "description": [
- "5-smooth numbers are numbers whose largest prime factor doesn't exceed 5.",
- "5-smooth numbers are also called Hamming numbers.",
- "Let S(L) be the sum of the numbers n not exceeding L such that Euler's totient function φ(n) is a Hamming number.",
- "S(100)=3728.",
- "",
- "",
- "Find S(1012). Give your answer modulo 232."
- ]
- },
- {
- "id": "5900f5721000cf542c510084",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 517: A real recursion",
- "tests": [
- "assert.strictEqual(euler517(), 581468882, 'message: euler517() should return 581468882.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler517() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler517();"
- ],
- "description": [
- "For every real number $a \\gt 1$ is given the sequence $g_a$ by:",
- "$g_{a}(x)=1$ for $x \\lt a$",
- "$g_{a}(x)=g_{a}(x-1)+g_a(x-a)$ for $x \\ge a$",
- "",
- "$G(n)=g_{\\sqrt {n}}(n)$",
- "$G(90)=7564511$.",
- "",
- "Find $\\sum G(p)$ for $p$ prime and $10000000 \\lt p \\lt 10010000$",
- "Give your answer modulo 1000000007."
- ]
- },
- {
- "id": "5900f5721000cf542c510085",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 518: Prime triples and geometric sequences",
- "tests": [
- "assert.strictEqual(euler518(), 100315739184392, 'message: euler518() should return 100315739184392.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler518() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler518();"
- ],
- "description": [
- "Let S(n) = Σ a+b+c over all triples (a,b,c) such that:",
- "",
- "a, b, and c are prime numbers.",
- "a < b < c < n.",
- "a+1, b+1, and c+1 form a geometric sequence.",
- "For example, S(100) = 1035 with the following triples: ",
- "",
- "(2, 5, 11), (2, 11, 47), (5, 11, 23), (5, 17, 53), (7, 11, 17), (7, 23, 71), (11, 23, 47), (17, 23, 31), (17, 41, 97), (31, 47, 71), (71, 83, 97)",
- "",
- "Find S(108)."
- ]
- },
- {
- "id": "5900f5741000cf542c510086",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 519: Tricolored Coin Fountains",
- "tests": [
- "assert.strictEqual(euler519(), 804739330, 'message: euler519() should return 804739330.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler519() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler519();"
- ],
- "description": [
- "An arrangement of coins in one or more rows with the bottom row being a block without gaps and every coin in a higher row touching exactly two coins in the row below is called a fountain of coins. Let f(n) be the number of possible fountains with n coins. For 4 coins there are three possible arrangements:",
- "",
- "Therefore f(4) = 3 while f(10) = 78.",
- "Let T(n) be the number of all possible colorings with three colors for all f(n) different fountains with n coins, given the condition that no two touching coins have the same color. Below you see the possible colorings for one of the three valid fountains for 4 coins:",
- "",
- "You are given that T(4) = 48 and T(10) = 17760.",
- "Find the last 9 digits of T(20000)."
- ]
- },
- {
- "id": "5900f5751000cf542c510087",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 520: Simbers",
- "tests": [
- "assert.strictEqual(euler520(), 238413705, 'message: euler520() should return 238413705.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler520() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler520();"
- ],
- "description": [
- "We define a simber to be a positive integer in which any odd digit, if present, occurs an odd number of times, and any even digit, if present, occurs an even number of times.",
- "",
- "For example, 141221242 is a 9-digit simber because it has three 1's, four 2's and two 4's. ",
- "",
- "Let Q(n) be the count of all simbers with at most n digits. ",
- "",
- "You are given Q(7) = 287975 and Q(100) mod 1 000 000 123 = 123864868.",
- "",
- "Find (∑1≤u≤39 Q(2u)) mod 1 000 000 123."
- ]
- },
- {
- "id": "5900f5751000cf542c510088",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 521: Smallest prime factor",
- "tests": [
- "assert.strictEqual(euler521(), 44389811, 'message: euler521() should return 44389811.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler521() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler521();"
- ],
- "description": [
- "Let smpf(n) be the smallest prime factor of n.",
- "smpf(91)=7 because 91=7×13 and smpf(45)=3 because 45=3×3×5.",
- "Let S(n) be the sum of smpf(i) for 2 ≤ i ≤ n.",
- "E.g. S(100)=1257.",
- "",
- "",
- "",
- "Find S(1012) mod 109."
- ]
- },
- {
- "id": "5900f5761000cf542c510089",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 522: Hilbert's Blackout",
- "tests": [
- "assert.strictEqual(euler522(), TODO: MISSING ANSWER, 'message: euler522() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler522() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler522();"
- ],
- "description": [
- "Despite the popularity of Hilbert's infinite hotel, Hilbert decided to try managing extremely large finite hotels, instead. ",
- "",
- "To cut costs, Hilbert wished to power the new hotel with his own special generator. Each floor would send power to the floor above it, with the top floor sending power back down to the bottom floor. That way, Hilbert could have the generator placed on any given floor (as he likes having the option) and have electricity flow freely throughout the entire hotel.",
- "",
- "Unfortunately, the contractors misinterpreted the schematics when they built the hotel. They informed Hilbert that each floor sends power to another floor at random, instead. This may compromise Hilbert's freedom to have the generator placed anywhere, since blackouts could occur on certain floors.",
- "",
- "For example, consider a sample flow diagram for a three-story hotel:",
- "",
- "",
- "",
- "If the generator were placed on the first floor, then every floor would receive power. But if it were placed on the second or third floors instead, then there would be a blackout on the first floor. Note that while a given floor can receive power from many other floors at once, it can only send power to one other floor.",
- "",
- "To resolve the blackout concerns, Hilbert decided to have a minimal number of floors rewired. To rewire a floor is to change the floor it sends power to. In the sample diagram above, all possible blackouts can be avoided by rewiring the second floor to send power to the first floor instead of the third floor.",
- "",
- "Let F(n) be the sum of the minimum number of floor rewirings needed over all possible power-flow arrangements in a hotel of n floors. For example, F(3) = 6, F(8) = 16276736, and F(100) mod 135707531 = 84326147.",
- "",
- "Find F(12344321) mod 135707531."
- ]
- },
- {
- "id": "5900fe885726495c153991c8",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 523: First Sort I",
- "tests": [
- "assert.strictEqual(euler523(), TODO: MISSING ANSWER, 'message: euler523() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler523() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler523();"
- ],
- "description": [
- "Consider the following algorithm for sorting a list:",
- "1. Starting from the beginning of the list, check each pair of adjacent elements in turn.",
- "2. If the elements are out of order:",
- "a. Move the smallest element of the pair at the beginning of the list.",
- "b. Restart the process from step 1.",
- "3. If all pairs are in order, stop.For example, the list { 4 1 3 2 } is sorted as follows:",
- "4 1 3 2 (4 and 1 are out of order so move 1 to the front of the list)",
- "1 4 3 2 (4 and 3 are out of order so move 3 to the front of the list)",
- "3 1 4 2 (3 and 1 are out of order so move 1 to the front of the list)",
- "1 3 4 2 (4 and 2 are out of order so move 2 to the front of the list)",
- "2 1 3 4 (2 and 1 are out of order so move 1 to the front of the list)",
- "1 2 3 4 (The list is now sorted)Let F(L) be the number of times step 2a is executed to sort list L. For example, F({ 4 1 3 2 }) = 5.",
- "",
- "Let E(n) be the expected value of F(P) over all permutations P of the integers {1, 2, ..., n}.",
- "You are given E(4) = 3.25 and E(10) = 115.725.",
- "",
- "Find E(30). Give your answer rounded to two digits after the decimal point."
- ]
- },
- {
- "id": "5900fece58d9425c70af4f5e",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 524: First Sort II",
- "tests": [
- "assert.strictEqual(euler524(), TODO: MISSING ANSWER, 'message: euler524() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler524() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler524();"
- ],
- "description": [
- "Consider the following algorithm for sorting a list:",
- "1. Starting from the beginning of the list, check each pair of adjacent elements in turn.",
- "2. If the elements are out of order:",
- "a. Move the smallest element of the pair at the beginning of the list.",
- "b. Restart the process from step 1.",
- "3. If all pairs are in order, stop.For example, the list { 4 1 3 2 } is sorted as follows:",
- "4 1 3 2 (4 and 1 are out of order so move 1 to the front of the list)",
- "1 4 3 2 (4 and 3 are out of order so move 3 to the front of the list)",
- "3 1 4 2 (3 and 1 are out of order so move 1 to the front of the list)",
- "1 3 4 2 (4 and 2 are out of order so move 2 to the front of the list)",
- "2 1 3 4 (2 and 1 are out of order so move 1 to the front of the list)",
- "1 2 3 4 (The list is now sorted)Let F(L) be the number of times step 2a is executed to sort list L. For example, F({ 4 1 3 2 }) = 5.",
- "",
- "We can list all permutations P of the integers {1, 2, ..., n} in lexicographical order, and assign to each permutation an index In(P) from 1 to n! corresponding to its position in the list.",
- "",
- "Let Q(n, k) = min(In(P)) for F(P) = k, the index of the first permutation requiring exactly k steps to sort with First Sort. If there is no permutation for which F(P) = k, then Q(n, k) is undefined.",
- "",
- "For n = 4 we have:",
- "",
- "PI4(P)F(P){1, 2, 3, 4}10Q(4, 0) = 1{1, 2, 4, 3}24Q(4, 4) = 2{1, 3, 2, 4}32Q(4, 2) = 3{1, 3, 4, 2}42{1, 4, 2, 3}56Q(4, 6) = 5{1, 4, 3, 2}64{2, 1, 3, 4}71Q(4, 1) = 7{2, 1, 4, 3}85Q(4, 5) = 8{2, 3, 1, 4}91{2, 3, 4, 1}101{2, 4, 1, 3}115{2, 4, 3, 1}123Q(4, 3) = 12{3, 1, 2, 4}133{3, 1, 4, 2}143{3, 2, 1, 4}152{3, 2, 4, 1}162{3, 4, 1, 2}173{3, 4, 2, 1}182{4, 1, 2, 3}197Q(4, 7) = 19{4, 1, 3, 2}205{4, 2, 1, 3}216{4, 2, 3, 1}224{4, 3, 1, 2}234{4, 3, 2, 1}243Let R(k) = min(Q(n, k)) over all n for which Q(n, k) is defined.",
- "",
- "Find R(1212)."
- ]
- },
- {
- "id": "5900fecf58d9425c70af4f5f",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 525: Rolling Ellipse",
- "tests": [
- "assert.strictEqual(euler525(), TODO: MISSING ANSWER, 'message: euler525() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler525() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler525();"
- ],
- "description": [
- "An ellipse E(a, b) is given at its initial position by equation:",
- "$\\frac {x^2} {a^2} + \\frac {(y - b)^2} {b^2} = 1$",
- "",
- "The ellipse rolls without slipping along the x axis for one complete turn. Interestingly, the length of the curve generated by a focus is independent from the size of the minor axis:",
- "$F(a,b) = 2 \\pi \\text{ } max(a,b)$",
- "",
- "",
- "",
- "This is not true for the curve generated by the ellipse center. Let C(a,b) be the length of the curve generated by the center of the ellipse as it rolls without slipping for one turn.",
- "",
- "",
- "",
- "You are given C(2, 4) ~ 21.38816906.",
- "",
- "Find C(1, 4) + C(3, 4). Give your answer rounded to 8 digits behind the decimal point in the form ab.cdefghij."
- ]
- },
- {
- "id": "5900fed058d9425c70af4f60",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 526: Largest prime factors of consecutive numbers",
- "tests": [
- "assert.strictEqual(euler526(), TODO: MISSING ANSWER, 'message: euler526() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler526() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler526();"
- ],
- "description": [
- "Let f(n) be the largest prime factor of n.",
- "Let g(n) = f(n) + f(n+1) + f(n+2) + f(n+3) + f(n+4) + f(n+5) + f(n+6) + f(n+7) + f(n+8), the sum of the largest prime factor of each of nine consecutive numbers starting with n.",
- "Let h(n) be the maximum value of g(k) for 2 ≤ k ≤ n.",
- "You are given:",
- "f(100) = 5",
- "f(101) = 101",
- "g(100) = 409",
- "h(100) = 417",
- "h(109) = 4896292593Find h(1016)."
- ]
- },
- {
- "id": "5900fed158d9425c70af4f61",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 527: Randomized Binary Search",
- "tests": [
- "assert.strictEqual(euler527(), TODO: MISSING ANSWER, 'message: euler527() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler527() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler527();"
- ],
- "description": [
- "A secret integer t is selected at random within the range 1 ≤ t ≤ n. ",
- "",
- "The goal is to guess the value of t by making repeated guesses, via integer g. After a guess is made, there are three possible outcomes, in which it will be revealed that either g < t, g = t, or g > t. Then the process can repeat as necessary.",
- "",
- "Normally, the number of guesses required on average can be minimized with a binary search: Given a lower bound L and upper bound H (initialized to L = 1 and H = n), let g = ⌊(L+H)/2⌋ where ⌊⋅⌋ is the integer floor function. If g = t, the process ends. Otherwise, if g < t, set L = g+1, but if g > t instead, set H = g−1. After setting the new bounds, the search process repeats, and ultimately ends once t is found. Even if t can be deduced without searching, assume that a search will be required anyway to confirm the value.",
- "",
- "Your friend Bob believes that the standard binary search is not that much better than his randomized variant: Instead of setting g = ⌊(L+H)/2⌋, simply let g be a random integer between L and H, inclusive. The rest of the algorithm is the same as the standard binary search. This new search routine will be referred to as a random binary search.",
- "",
- "Given that 1 ≤ t ≤ n for random t, let B(n) be the expected number of guesses needed to find t using the standard binary search, and let R(n) be the expected number of guesses needed to find t using the random binary search. For example, B(6) = 2.33333333 and R(6) = 2.71666667 when rounded to 8 decimal places.",
- "",
- "Find R(1010) − B(1010) rounded to 8 decimal places."
- ]
- },
- {
- "id": "5900fed258d9425c70af4f62",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 528: Constrained Sums",
- "tests": [
- "assert.strictEqual(euler528(), TODO: MISSING ANSWER, 'message: euler528() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler528() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler528();"
- ],
- "description": [
- "Let S(n,k,b) represent the number of valid solutions to x1 + x2 + ... + xk ≤ n, where 0 ≤ xm ≤ bm for all 1 ≤ m ≤ k.",
- "",
- "For example, S(14,3,2) = 135, S(200,5,3) = 12949440, and S(1000,10,5) mod 1 000 000 007 = 624839075.",
- "",
- "Find (∑10 ≤ k ≤ 15 S(10k,k,k)) mod 1 000 000 007."
- ]
- },
- {
- "id": "5900fed358d9425c70af4f63",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 529: 10-substrings",
- "tests": [
- "assert.strictEqual(euler529(), TODO: MISSING ANSWER, 'message: euler529() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler529() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler529();"
- ],
- "description": [
- "A 10-substring of a number is a substring of its digits that sum to 10. For example, the 10-substrings of the number 3523014 are:",
- "3523014",
- "3523014",
- "3523014",
- "3523014A number is called 10-substring-friendly if every one of its digits belongs to a 10-substring. For example, 3523014 is 10-substring-friendly, but 28546 is not.",
- "Let T(n) be the number of 10-substring-friendly numbers from 1 to 10n (inclusive).",
- "For example T(2) = 9 and T(5) = 3492.",
- "Find T(1018) mod 1 000 000 007."
- ]
- },
- {
- "id": "5900fed458d9425c70af4f64",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 530: GCD of Divisors",
- "tests": [
- "assert.strictEqual(euler530(), TODO: MISSING ANSWER, 'message: euler530() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler530() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler530();"
- ],
- "description": [
- "Every divisor d of a number n has a complementary divisor n/d.",
- "",
- "Let f(n) be the sum of the greatest common divisor of d and n/d over all positive divisors d of n, that is",
- "$f(n)=\\displaystyle\\sum\\limits_{d|n}\\, \\text{gcd}(d,\\frac n d)$.",
- "",
- "Let F be the summatory function of f, that is",
- "$F(k)=\\displaystyle\\sum\\limits_{n=1}^k \\, f(n)$.",
- "",
- "You are given that F(10)=32 and F(1000)=12776.",
- "",
- "Find F(1015)."
- ]
- },
- {
- "id": "5900fed558d9425c70af4f65",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 531: Chinese leftovers",
- "tests": [
- "assert.strictEqual(euler531(), TODO: MISSING ANSWER, 'message: euler531() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler531() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler531();"
- ],
- "description": [
- "Let g(a,n,b,m) be the smallest non-negative solution x to the system:x = a mod nx = b mod m",
- "if such a solution exists, otherwise 0.",
- "",
- "",
- "E.g. g(2,4,4,6)=10, but g(3,4,4,6)=0.",
- "",
- "",
- "Let φ(n) be Euler's totient function.",
- "",
- "",
- "Let f(n,m)=g(φ(n),n,φ(m),m)",
- "",
- "",
- "Find ∑f(n,m) for 1000000 ≤ n < m < 1005000"
- ]
- },
- {
- "id": "5900fed658d9425c70af4f66",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 532: Nanobots on Geodesics",
- "tests": [
- "assert.strictEqual(euler532(), TODO: MISSING ANSWER, 'message: euler532() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler532() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler532();"
- ],
- "description": [
- "Bob is a manufacturer of nanobots and wants to impress his customers by giving them a ball colored by his new nanobots as a present.",
- "",
- "His nanobots can be programmed to select and locate exactly one other bot precisely and, after activation, move towards this bot along the shortest possible path and draw a colored line onto the surface while moving. Placed on a plane, the bots will start to move towards their selected bots in a straight line. In contrast, being placed on a ball, they will start to move along a geodesic as the shortest possible path. However, in both cases, whenever their target moves they will adjust their direction instantaneously to the new shortest possible path. All bots will move at the same speed after their simultaneous activation until each bot reaches its goal.",
- "",
- "Now Bob places n bots on the ball (with radius 1) equidistantly on a small circle with radius 0.999 and programs each of them to move toward the next nanobot sitting counterclockwise on that small circle. After activation, the bots move in a sort of spiral until they finally meet at one point on the ball.",
- "",
- "Using three bots, Bob finds that every bot will draw a line of length 2.84, resulting in a total length of 8.52 for all three bots, each time rounded to two decimal places. The colored ball looks like this:",
- "",
- "",
- "",
- "In order to show off a little with his presents, Bob decides to use just enough bots to make sure that the line each bot draws is longer than 1000. What is the total length of all lines drawn with this number of bots, rounded to two decimal places?"
- ]
- },
- {
- "id": "5900fed758d9425c70af4f67",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 533: Minimum values of the Carmichael function",
- "tests": [
- "assert.strictEqual(euler533(), TODO: MISSING ANSWER, 'message: euler533() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler533() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler533();"
- ],
- "description": [
- "The Carmichael function λ(n) is defined as the smallest positive integer m such that am = 1 modulo n for all integers a coprime with n.",
- "For example λ(8) = 2 and λ(240) = 4.",
- "",
- "Define L(n) as the smallest positive integer m such that λ(k) ≥ n for all k ≥ m.",
- "For example, L(6) = 241 and L(100) = 20 174 525 281.",
- "",
- "Find L(20 000 000). Give the last 9 digits of your answer."
- ]
- },
- {
- "id": "5900fed858d9425c70af4f68",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 534: Weak Queens",
- "tests": [
- "assert.strictEqual(euler534(), TODO: MISSING ANSWER, 'message: euler534() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler534() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler534();"
- ],
- "description": [
- "The classical eight queens puzzle is the well known problem of placing eight chess queens on a 8×8 chessboard so that no two queens threaten each other. Allowing configurations to reappear in rotated or mirrored form, a total of 92 distinct configurations can be found for eight queens. The general case asks for the number of distinct ways of placing n queens on a n×n board, e.g. you can find 2 distinct configurations for n=4.",
- "",
- "Lets define a weak queen on a n×n board to be a piece which can move any number of squares if moved horizontally, but a maximum of n−1−w squares if moved vertically or diagonally, 0≤weuler535() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler535() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler535();"
- ],
- "description": [
- "Consider the infinite integer sequence S starting with:S = 1, 1, 2, 1, 3, 2, 4, 1, 5, 3, 6, 2, 7, 8, 4, 9, 1, 10, 11, 5, ...",
- "",
- "Circle the first occurrence of each integer.S = ①, 1, ②, 1, ③, 2, ④, 1, ⑤, 3, ⑥, 2, ⑦, ⑧, 4, ⑨, 1, ⑩, ⑪, 5, ...",
- "",
- "The sequence is characterized by the following properties:",
- "The circled numbers are consecutive integers starting with 1.",
- "Immediately preceding each non-circled numbers ai, there are exactly ⌊√ai⌋ adjacent circled numbers, where ⌊⌋ is the floor function.",
- "If we remove all circled numbers, the remaining numbers form a sequence identical to S, so S is a fractal sequence.Let T(n) be the sum of the first n elements of the sequence.",
- "You are given T(1) = 1, T(20) = 86, T(103) = 364089 and T(109) = 498676527978348241.",
- "",
- "Find T(1018). Give the last 9 digits of your answer."
- ]
- },
- {
- "id": "5900feda58d9425c70af4f6a",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 536: Modulo power identity",
- "tests": [
- "assert.strictEqual(euler536(), TODO: MISSING ANSWER, 'message: euler536() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler536() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler536();"
- ],
- "description": [
- "Let S(n) be the sum of all positive integers m not exceeding n having the following property:a m+4 ≡ a (mod m) for all integers a.",
- "",
- "",
- "The values of m ≤ 100 that satisfy this property are 1, 2, 3, 5 and 21, thus S(100) = 1+2+3+5+21 = 32.",
- "You are given S(106) = 22868117.",
- "",
- "",
- "Find S(1012)."
- ]
- },
- {
- "id": "5900fedb58d9425c70af4f6b",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 537: Counting tuples",
- "tests": [
- "assert.strictEqual(euler537(), TODO: MISSING ANSWER, 'message: euler537() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler537() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler537();"
- ],
- "description": [
- "Let π(x) be the prime counting function, i.e. the number of prime numbers less than or equal to x.",
- "For example, π(1)=0, π(2)=1, π(100)=25.",
- "",
- "",
- "Let T(n,k) be the number of k-tuples (x1,…,xk) which satisfy:",
- "1. every xi is a positive integer;",
- "2. $\\displaystyle \\sum_{i=1}^k \\pi(x_i)=n$",
- "",
- "",
- "For example T(3,3)=19.",
- "The 19 tuples are (1,1,5), (1,5,1), (5,1,1), (1,1,6), (1,6,1), (6,1,1), (1,2,3), (1,3,2), (2,1,3), (2,3,1), (3,1,2), (3,2,1), (1,2,4), (1,4,2), (2,1,4), (2,4,1), (4,1,2), (4,2,1), (2,2,2).",
- "",
- "",
- "You are given T(10,10) = 869 985 and T(103,103) ≡ 578 270 566 (mod 1 004 535 809).",
- "",
- "Find T(20 000, 20 000) mod 1 004 535 809."
- ]
- },
- {
- "id": "5900fedc58d9425c70af4f6c",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 538: Maximum quadrilaterals",
- "tests": [
- "assert.strictEqual(euler538(), TODO: MISSING ANSWER, 'message: euler538() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler538() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler538();"
- ],
- "description": [
- "Consider a positive integer sequence S = (s1, s2, ..., sn).",
- "",
- "Let f(S) be the perimeter of the maximum-area quadrilateral whose side lengths are 4 elements (si, sj, sk, sl) of S (all i, j, k, l distinct). If there are many quadrilaterals with the same maximum area, then choose the one with the largest perimeter.",
- "",
- "For example, if S = (8, 9, 14, 9, 27), then we can take the elements (9, 14, 9, 27) and form an isosceles trapezium with parallel side lengths 14 and 27 and both leg lengths 9. The area of this quadrilateral is 127.611470879... It can be shown that this is the largest area for any quadrilateral that can be formed using side lengths from S. Therefore, f(S) = 9 + 14 + 9 + 27 = 59.",
- "",
- "Let un = 2B(3n) + 3B(2n) + B(n+1), where B(k) is the number of 1 bits of k in base 2.",
- "For example, B(6) = 2, B(10) = 2 and B(15) = 4, and u5 = 24 + 32 + 2 = 27.",
- "",
- "Also, let Un be the sequence (u1, u2, ..., un).",
- "For example, U10 = (8, 9, 14, 9, 27, 16, 36, 9, 27, 28).",
- "",
- "It can be shown that f(U5) = 59, f(U10) = 118, f(U150) = 3223.",
- "It can also be shown that Σ f(Un) = 234761 for 4 ≤ n ≤ 150.",
- "Find Σ f(Un) for 4 ≤ n ≤ 3 000 000."
- ]
- },
- {
- "id": "5900fedd58d9425c70af4f6d",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 539: Odd elimination",
- "tests": [
- "assert.strictEqual(euler539(), TODO: MISSING ANSWER, 'message: euler539() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler539() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler539();"
- ],
- "description": [
- "Start from an ordered list of all integers from 1 to n. Going from left to right, remove the first number and every other number afterward until the end of the list. Repeat the procedure from right to left, removing the right most number and every other number from the numbers left. Continue removing every other numbers, alternating left to right and right to left, until a single number remains.",
- "",
- "",
- "Starting with n = 9, we have:1 2 3 4 5 6 7 8 9",
- "2 4 6 82 6",
- "6",
- "",
- "",
- "Let P(n) be the last number left starting with a list of length n.",
- "Let $\\displaystyle S(n) = \\sum_{k=1}^n P(k)$.",
- "You are given P(1)=1, P(9) = 6, P(1000)=510, S(1000)=268271.",
- "",
- "",
- "Find S(1018) mod 987654321."
- ]
- },
- {
- "id": "5900fede58d9425c70af4f6e",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 540: Counting primitive Pythagorean triples",
- "tests": [
- "assert.strictEqual(euler540(), TODO: MISSING ANSWER, 'message: euler540() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler540() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler540();"
- ],
- "description": [
- "A Pythagorean triple consists of three positive integers $a, b$ and $c$ satisfying $a^2+b^2=c^2$.",
- "The triple is called primitive if $a, b$ and $c$ are relatively prime.",
- "Let P($n$) be the number of primitive Pythagorean triples with $a < b < c <= n$.",
- "For example P(20) = 3, since there are three triples: (3,4,5), (5,12,13) and (8,15,17).",
- "",
- "",
- "You are given that P(106) = 159139.",
- "Find P(3141592653589793)."
- ]
- },
- {
- "id": "5900fedf58d9425c70af4f6f",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 541: Divisibility of Harmonic Number Denominators",
- "tests": [
- "assert.strictEqual(euler541(), TODO: MISSING ANSWER, 'message: euler541() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler541() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler541();"
- ],
- "description": [
- "The nthharmonic number Hn is defined as the sum of the multiplicative inverses of the first n positive integers, and can be written as a reduced fraction an/bn.",
- "$H_n = \\displaystyle \\sum_{k=1}^n \\frac 1 k = \\frac {a_n} {b_n}$, with $\\text {gcd}(a_n, b_n)=1$.",
- "",
- "Let M(p) be the largest value of n such that bn is not divisible by p.",
- "",
- "For example, M(3) = 68 because $H_{68} = \\frac {a_{68}} {b_{68}} = \\frac {14094018321907827923954201611} {2933773379069966367528193600}$, b68=2933773379069966367528193600 is not divisible by 3, but all larger harmonic numbers have denominators divisible by 3.",
- "",
- "You are given M(7) = 719102.",
- "",
- "Find M(137)."
- ]
- },
- {
- "id": "5900fee058d9425c70af4f70",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 542: Geometric Progression with Maximum Sum",
- "tests": [
- "assert.strictEqual(euler542(), TODO: MISSING ANSWER, 'message: euler542() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler542() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler542();"
- ],
- "description": [
- "Let S(k) be the sum of three or more distinct positive integers having the following properties:",
- "No value exceeds k.",
- "The values form a geometric progression.",
- "The sum is maximal.S(4) = 4 + 2 + 1 = 7S(10) = 9 + 6 + 4 = 19S(12) = 12 + 6 + 3 = 21S(1000) = 1000 + 900 + 810 + 729 = 3439",
- "",
- "Let $T(n) = \\sum_{k=4}^n (-1)^k S(k)$.T(1000) = 2268",
- "",
- "Find T(1017)."
- ]
- },
- {
- "id": "5900fee158d9425c70af4f71",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 543: Prime-Sum Numbers",
- "tests": [
- "assert.strictEqual(euler543(), TODO: MISSING ANSWER, 'message: euler543() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler543() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler543();"
- ],
- "description": [
- "Define function P(n,k) = 1 if n can be written as the sum of k prime numbers (with repetitions allowed), and P(n,k) = 0 otherwise.",
- "",
- "For example, P(10,2) = 1 because 10 can be written as either 3 + 7 or 5 + 5, but P(11,2) = 0 because no two primes can sum to 11.",
- "",
- "Let S(n) be the sum of all P(i,k) over 1 ≤ i,k ≤ n.",
- "",
- "For example, S(10) = 20, S(100) = 2402, and S(1000) = 248838.",
- "",
- "Let F(k) be the kth Fibonacci number (with F(0) = 0 and F(1) = 1).",
- "",
- "Find the sum of all S(F(k)) over 3 ≤ k ≤ 44"
- ]
- },
- {
- "id": "5900fee258d9425c70af4f72",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 544: Chromatic Conundrum",
- "tests": [
- "assert.strictEqual(euler544(), TODO: MISSING ANSWER, 'message: euler544() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler544() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler544();"
- ],
- "description": [
- "Let F(r,c,n) be the number of ways to color a rectangular grid with r rows and c columns using at most n colors such that no two adjacent cells share the same color. Cells that are diagonal to each other are not considered adjacent.",
- "",
- "For example, F(2,2,3) = 18, F(2,2,20) = 130340, and F(3,4,6) = 102923670.",
- "",
- "Let S(r,c,n) = $\\sum_{k=1}^{n}$ F(r,c,k).",
- "",
- "For example, S(4,4,15) mod 109+7 = 325951319.",
- "",
- "Find S(9,10,1112131415) mod 109+7."
- ]
- },
- {
- "id": "5900fee358d9425c70af4f73",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 545: Faulhaber's Formulas",
- "tests": [
- "assert.strictEqual(euler545(), TODO: MISSING ANSWER, 'message: euler545() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler545() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler545();"
- ],
- "description": [
- "The sum of the kth powers of the first n positive integers can be expressed as a polynomial of degree k+1 with rational coefficients, the Faulhaber's Formulas:",
- "$1^k + 2^k + ... + n^k = \\sum_{i=1}^n i^k = \\sum_{i=1}^{k+1} a_{i} n^i = a_{1} n + a_{2} n^2 + ... + a_{k} n^k + a_{k+1} n^{k + 1}$,",
- "where ai's are rational coefficients that can be written as reduced fractions pi/qi (if ai = 0, we shall consider qi = 1).",
- "",
- "For example, $1^4 + 2^4 + ... + n^4 = -\\frac 1 {30} n + \\frac 1 3 n^3 + \\frac 1 2 n^4 + \\frac 1 5 n^5.$",
- "",
- "Define D(k) as the value of q1 for the sum of kth powers (i.e. the denominator of the reduced fraction a1).",
- "Define F(m) as the mth value of k ≥ 1 for which D(k) = 20010.",
- "You are given D(4) = 30 (since a1 = -1/30), D(308) = 20010, F(1) = 308, F(10) = 96404.",
- "",
- "Find F(105)."
- ]
- },
- {
- "id": "5900fee458d9425c70af4f74",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 546: The Floor's Revenge",
- "tests": [
- "assert.strictEqual(euler546(), TODO: MISSING ANSWER, 'message: euler546() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler546() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler546();"
- ],
- "description": [
- "Define fk(n) = $\\sum_{i=0}^{n}$ fk($\\lfloor\\frac{i}{k}\\rfloor$) where fk(0) = 1 and $\\lfloor x \\rfloor$ denotes the floor function.",
- "",
- "For example, f5(10) = 18, f7(100) = 1003, and f2(103) = 264830889564.",
- "",
- "Find $(\\sum_{k=2}^{10}$ fk(1014)$)$ mod (109+7)."
- ]
- },
- {
- "id": "5900fee558d9425c70af4f75",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 547: Distance of random points within hollow square laminae",
- "tests": [
- "assert.strictEqual(euler547(), TODO: MISSING ANSWER, 'message: euler547() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler547() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler547();"
- ],
- "description": [
- "Assuming that two points are chosen randomly (with uniform distribution) within a rectangle, it is possible to determine the expected value of the distance between these two points.",
- "",
- "For example, the expected distance between two random points in a unit square is about 0.521405, while the expected distance between two random points in a rectangle with side lengths 2 and 3 is about 1.317067.",
- "",
- "Now we define a hollow square lamina of size n to be an integer sized square with side length n ≥ 3 consisting of n2 unit squares from which a rectangle consisting of x × y unit squares (1 ≤ x,y ≤ n - 2) within the original square has been removed.",
- "",
- "For n = 3 there exists only one hollow square lamina:",
- "",
- "",
- "",
- "For n = 4 you can find 9 distinct hollow square laminae, allowing shapes to reappear in rotated or mirrored form:",
- "",
- "",
- "",
- "Let S(n) be the sum of the expected distance between two points chosen randomly within each of the possible hollow square laminae of size n. The two points have to lie within the area left after removing the inner rectangle, i.e. the gray-colored areas in the illustrations above.",
- "",
- "For example, S(3) = 1.6514 and S(4) = 19.6564, rounded to four digits after the decimal point.",
- "",
- "Find S(40) rounded to four digits after the decimal point."
- ]
- },
- {
- "id": "5900fee658d9425c70af4f76",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 548: Gozinta Chains",
- "tests": [
- "assert.strictEqual(euler548(), TODO: MISSING ANSWER, 'message: euler548() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler548() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler548();"
- ],
- "description": [
- "A gozinta chain for n is a sequence {1,a,b,...,n} where each element properly divides the next.",
- "There are eight gozinta chains for 12:",
- "{1,12} ,{1,2,12}, {1,2,4,12}, {1,2,6,12}, {1,3,12}, {1,3,6,12}, {1,4,12} and {1,6,12}. ",
- "Let g(n) be the number of gozinta chains for n, so g(12)=8.",
- "g(48)=48 and g(120)=132.",
- "",
- "",
- "Find the sum of the numbers n not exceeding 1016 for which g(n)=n."
- ]
- },
- {
- "id": "5900fee758d9425c70af4f77",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 549: Divisibility of factorials",
- "tests": [
- "assert.strictEqual(euler549(), TODO: MISSING ANSWER, 'message: euler549() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler549() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler549();"
- ],
- "description": [
- "The smallest number m such that 10 divides m! is m=5.",
- "The smallest number m such that 25 divides m! is m=10.",
- "",
- "Let s(n) be the smallest number m such that n divides m!.",
- "So s(10)=5 and s(25)=10.",
- "Let S(n) be ∑s(i) for 2 ≤ i ≤ n.",
- "S(100)=2012.",
- "",
- "",
- "Find S(108)."
- ]
- },
- {
- "id": "5900fee858d9425c70af4f78",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 550: Divisor game",
- "tests": [
- "assert.strictEqual(euler550(), TODO: MISSING ANSWER, 'message: euler550() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler550() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler550();"
- ],
- "description": [
- "Two players are playing a game. There are k piles of stones.",
- "When it is his turn a player has to choose a pile and replace it by two piles of stones under the following two conditions:",
- "",
- "",
- " Both new piles must have a number of stones more than one and less than the number of stones of the original pile.",
- " The number of stones of each of the new piles must be a divisor of the number of stones of the original pile.",
- "The first player unable to make a valid move loses.",
- "",
- "Let f(n,k) be the number of winning positions for the first player, assuming perfect play, when the game is played with k piles each having between 2 and n stones (inclusively).f(10,5)=40085.",
- "",
- "",
- "Find f(107,1012).Give your answer modulo 987654321."
- ]
- },
- {
- "id": "5900fee958d9425c70af4f79",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 551: Sum of digits sequence",
- "tests": [
- "assert.strictEqual(euler551(), TODO: MISSING ANSWER, 'message: euler551() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler551() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler551();"
- ],
- "description": [
- "Let a0, a1, a2, ... be an integer sequence defined by:",
- "a0 = 1;",
- "for n ≥ 1, an is the sum of the digits of all preceding terms.",
- "The sequence starts with 1, 1, 2, 4, 8, 16, 23, 28, 38, 49, ...",
- "You are given a106 = 31054319.",
- "Find a1015."
- ]
- },
- {
- "id": "5900feea58d9425c70af4f7a",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 552: Chinese leftovers II",
- "tests": [
- "assert.strictEqual(euler552(), TODO: MISSING ANSWER, 'message: euler552() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler552() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler552();"
- ],
- "description": [
- "Let An be the smallest positive integer satisfying An mod pi = i for all 1 ≤ i ≤ n, where pi is the",
- "i-th prime.",
- "For example A2 = 5, since this is the smallest positive solution of the system of equations ",
- " A2 mod 2 = 1 ",
- " A2 mod 3 = 2",
- "The system of equations for A3 adds another constraint. That is, A3 is the smallest positive solution of",
- " A3 mod 2 = 1 ",
- " A3 mod 3 = 2",
- " A3 mod 5 = 3",
- "and hence A3 = 23. Similarly, one gets A4 = 53 and A5 = 1523.",
- "",
- "",
- "Let S(n) be the sum of all primes up to n that divide at least one element in the sequence A.",
- "For example, S(50) = 69 = 5 + 23 + 41, since 5 divides A2, 23 divides A3 and 41 divides A10 = 5765999453. No other prime number up to 50 divides an element in A.",
- "",
- "",
- "Find S(300000)."
- ]
- },
- {
- "id": "5900feeb58d9425c70af4f7b",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 553: Power sets of power sets",
- "tests": [
- "assert.strictEqual(euler553(), TODO: MISSING ANSWER, 'message: euler553() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler553() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler553();"
- ],
- "description": [
- "Let P(n) be the set of the first n positive integers {1, 2, ..., n}.",
- "Let Q(n) be the set of all the non-empty subsets of P(n).",
- "Let R(n) be the set of all the non-empty subsets of Q(n).",
- "",
- "An element X ∈ R(n) is a non-empty subset of Q(n), so it is itself a set.",
- "From X we can construct a graph as follows:",
- "",
- "Each element Y ∈ X corresponds to a vertex and labeled with Y;",
- "Two vertices Y1 and Y2 are connected if Y1 ∩ Y2 ≠ ∅.",
- "For example, X = {{1}, {1,2,3}, {3}, {5,6}, {6,7}} results in the following graph:",
- "",
- "",
- "",
- "This graph has two connected components.",
- "",
- "Let C(n,k) be the number of elements of R(n) that have exactly k connected components in their graph.",
- "You are given C(2,1) = 6, C(3,1) = 111, C(4,2) = 486, C(100,10) mod 1 000 000 007 = 728209718.",
- "",
- "Find C(104,10) mod 1 000 000 007."
- ]
- },
- {
- "id": "5900feec58d9425c70af4f7c",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 554: Centaurs on a chess board",
- "tests": [
- "assert.strictEqual(euler554(), TODO: MISSING ANSWER, 'message: euler554() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler554() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler554();"
- ],
- "description": [
- "On a chess board, a centaur moves like a king or a knight. The diagram below shows the valid moves of a centaur (represented by an inverted king) on an 8x8 board.",
- "",
- "",
- "",
- "It can be shown that at most n2 non-attacking centaurs can be placed on a board of size 2n×2n.",
- "Let C(n) be the number of ways to place n2 centaurs on a 2n×2n board so that no centaur attacks another directly.",
- "For example C(1) = 4, C(2) = 25, C(10) = 1477721.",
- "",
- "Let Fi be the ith Fibonacci number defined as F1 = F2 = 1 and Fi = Fi-1 + Fi-2 for i > 2.",
- "",
- "Find $\\displaystyle \\left( \\sum_{i=2}^{90} C(F_i) \\right) \\text{mod } (10^8+7)$."
- ]
- },
- {
- "id": "5900feed58d9425c70af4f7d",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 555: McCarthy 91 function",
- "tests": [
- "assert.strictEqual(euler555(), TODO: MISSING ANSWER, 'message: euler555() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler555() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler555();"
- ],
- "description": [
- "The McCarthy 91 function is defined as follows:",
- "$$",
- "M_{91}(n) = ",
- " \\begin{cases}",
- " n - 10 & \\text{if } n > 100 \\\\",
- " M_{91}(M_{91}(n+11)) & \\text{if } 0 \\leq n \\leq 100",
- " \\end{cases}",
- "$$",
- "",
- "",
- "We can generalize this definition by abstracting away the constants into new variables:",
- "",
- "$$",
- "M_{m,k,s}(n) = ",
- " \\begin{cases}",
- " n - s & \\text{if } n > m \\\\",
- " M_{m,k,s}(M_{m,k,s}(n+k)) & \\text{if } 0 \\leq n \\leq m",
- " \\end{cases}",
- "$$",
- "",
- "",
- "This way, we have $M_{91} = M_{100,11,10}$.",
- "",
- "",
- "Let $F_{m,k,s}$ be the set of fixed points of $M_{m,k,s}$. That is, ",
- "",
- "$$F_{m,k,s}= \\left\\{ n \\in \\mathbb{N} \\, | \\, M_{m,k,s}(n) = n \\right\\}$$",
- "",
- "",
- "For example, the only fixed point of $M_{91}$ is $n = 91$. In other words, $F_{100,11,10}= \\{91\\}$.",
- "",
- "",
- "Now, define $SF(m,k,s)$ as the sum of the elements in $F_{m,k,s}$ and let $S(p,m) = \\displaystyle \\sum_{1 \\leq s < k \\leq p}{SF(m,k,s)}$.",
- "",
- "",
- "For example, $S(10, 10) = 225$ and $S(1000, 1000)=208724467$.",
- "",
- "",
- "Find $S(10^6, 10^6)$."
- ]
- },
- {
- "id": "5900feee58d9425c70af4f7e",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 556: Squarefree Gaussian Integers",
- "tests": [
- "assert.strictEqual(euler556(), TODO: MISSING ANSWER, 'message: euler556() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler556() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler556();"
- ],
- "description": [
- "A Gaussian integer is a number z = a + bi where a, b are integers and i2 = -1.",
- "Gaussian integers are a subset of the complex numbers, and the integers are the subset of Gaussian integers for which b = 0.",
- "",
- "A Gaussian integer unit is one for which a2 + b2 = 1, i.e. one of 1, i, -1, -i.",
- "Let's define a proper Gaussian integer as one for which a > 0 and b ≥ 0.",
- "",
- "A Gaussian integer z1 = a1 + b1i is said to be divisible by z2 = a2 + b2i if z3 = a3 + b3i = z1/z2 is a Gaussian integer.",
- "$\\frac {z_1} {z_2} = \\frac {a_1 + b_1 i} {a_2 + b_2 i} = \\frac {(a_1 + b_1 i)(a_2 - b_2 i)} {(a_2 + b_2 i)(a_2 - b_2 i)} = \\frac {a_1 a_2 + b_1 b_2} {a_2^2 + b_2^2} + \\frac {a_2 b_1 - a_1 b_2} {a_2^2 + b_2^2}i = a_3 + b_3 i$",
- "So, z1 is divisible by z2 if $\\frac {a_1 a_2 + b_1 b_2} {a_2^2 + b_2^2}$ and $\\frac {a_2 b_1 - a_1 b_2} {a_2^2 + b_2^2}$ are integers.",
- "For example, 2 is divisible by 1 + i because 2/(1 + i) = 1 - i is a Gaussian integer.",
- "",
- "A Gaussian prime is a Gaussian integer that is divisible only by a unit, itself or itself times a unit.",
- "For example, 1 + 2i is a Gaussian prime, because it is only divisible by 1, i, -1, -i, 1 + 2i, i(1 + 2i) = i - 2, -(1 + 2i) = -1 - 2i and -i(1 + 2i) = 2 - i.",
- "2 is not a Gaussian prime as it is divisible by 1 + i.",
- "",
- "A Gaussian integer can be uniquely factored as the product of a unit and proper Gaussian primes.",
- "For example 2 = -i(1 + i)2 and 1 + 3i = (1 + i)(2 + i).",
- "A Gaussian integer is said to be squarefree if its prime factorization does not contain repeated proper Gaussian primes.",
- "So 2 is not squarefree over the Gaussian integers, but 1 + 3i is.",
- "Units and Gaussian primes are squarefree by definition.",
- "",
- "Let f(n) be the count of proper squarefree Gaussian integers with a2 + b2 ≤ n.",
- "For example f(10) = 7 because 1, 1 + i, 1 + 2i, 1 + 3i = (1 + i)(2 + i), 2 + i, 3 and 3 + i = -i(1 + i)(1 + 2i) are squarefree, while 2 = -i(1 + i)2 and 2 + 2i = -i(1 + i)3 are not.",
- "You are given f(102) = 54, f(104) = 5218 and f(108) = 52126906.",
- "",
- "Find f(1014)."
- ]
- },
- {
- "id": "5900feef58d9425c70af4f7f",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 557: Cutting triangles",
- "tests": [
- "assert.strictEqual(euler557(), TODO: MISSING ANSWER, 'message: euler557() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler557() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler557();"
- ],
- "description": [
- "A triangle is cut into four pieces by two straight lines, each starting at one vertex and ending on the opposite edge. This results in forming three smaller triangular pieces, and one quadrilateral. If the original triangle has an integral area, it is often possible to choose cuts such that all of the four pieces also have integral area. For example, the diagram below shows a triangle of area 55 that has been cut in this way.",
- "",
- "",
- "",
- "Representing the areas as a, b, c and d, in the example above, the individual areas are a = 22, b = 8, c = 11 and d = 14. It is also possible to cut a triangle of area 55 such that a = 20, b = 2, c = 24, d = 9.",
- "",
- "Define a triangle cutting quadruple (a, b, c, d) as a valid integral division of a triangle, where a is the area of the triangle between the two cut vertices, d is the area of the quadrilateral and b and c are the areas of the two other triangles, with the restriction that b ≤ c. The two solutions described above are (22,8,11,14) and (20,2,24,9). These are the only two possible quadruples that have a total area of 55.",
- "",
- "",
- "Define S(n) as the sum of the area of the uncut triangles represented by all valid quadruples with a+b+c+d ≤ n. For example, S(20) = 259. ",
- "",
- "",
- "Find S(10000)."
- ]
- },
- {
- "id": "5900fef058d9425c70af4f80",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 558: Irrational base",
- "tests": [
- "assert.strictEqual(euler558(), TODO: MISSING ANSWER, 'message: euler558() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler558() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler558();"
- ],
- "description": [
- "Let r be the real root of the equation x3 = x2 + 1.",
- "Every positive integer can be written as the sum of distinct increasing powers of r.",
- "If we require the number of terms to be finite and the difference between any two exponents to be three or more, then the representation is unique.",
- "For example, 3 = r -10 + r -5 + r -1 + r 2 and 10 = r -10 + r -7 + r 6.",
- "Interestingly, the relation holds for the complex roots of the equation.",
- "",
- "Let w(n) be the number of terms in this unique representation of n. Thus w(3) = 4 and w(10) = 3.",
- "",
- "More formally, for all positive integers n, we have:n = $\\displaystyle \\sum_{k=-\\infty}^{\\infty}$ bk rk",
- "under the conditions that:bk is 0 or 1 for all k;bk + bk+1 + bk+2 ≤ 1 for all k;w(n) = $\\displaystyle \\sum_{k=-\\infty}^{\\infty}$ bk is finite.",
- "",
- "Let S(m) = $\\displaystyle \\sum_{j=1}^{m}$ w(j2).",
- "You are given S(10) = 61 and S(1000) = 19403.",
- "",
- "Find S(5 000 000)."
- ]
- },
- {
- "id": "5900fef158d9425c70af4f81",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 559: Permuted Matrices",
- "tests": [
- "assert.strictEqual(euler559(), TODO: MISSING ANSWER, 'message: euler559() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler559() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler559();"
- ],
- "description": [
- "An ascent of a column j in a matrix occurs if the value of column j is smaller than the value of column j+1 in all rows.",
- "",
- "Let P(k, r, n) be the number of r x n matrices with the following properties:",
- "",
- "The rows are permutations of {1, 2, 3, ... , n}.",
- " Numbering the first column as 1, a column ascent occurs at column jeuler560() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler560() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler560();"
- ],
- "description": [
- "Coprime Nim is just like ordinary normal play Nim, but the players may only remove a number of stones from a pile that is coprime with the current size of the pile. Two players remove stones in turn. The player who removes the last stone wins.",
- "",
- "Let L(n, k) be the number of losing starting positions for the first player, assuming perfect play, when the game is played with k piles, each having between 1 and n - 1 stones inclusively.",
- "",
- "For example, L(5, 2) = 6 since the losing initial positions are (1, 1), (2, 2), (2, 4), (3, 3), (4, 2) and (4, 4).",
- "You are also given L(10, 5) = 9964, L(10, 10) = 472400303, L(103, 103) mod 1 000 000 007 = 954021836.",
- "",
- "Find L(107, 107) mod 1 000 000 007"
- ]
- },
- {
- "id": "5900fef358d9425c70af4f83",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 561: Divisor Pairs",
- "tests": [
- "assert.strictEqual(euler561(), TODO: MISSING ANSWER, 'message: euler561() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler561() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler561();"
- ],
- "description": [
- "Let $S(n)$ be the number of pairs $(a,b)$ of distinct divisors of $n$ such that $a$ divides $b$.",
- "For $n=6$ we get the following pairs: $(1,2), (1,3), (1,6),( 2,6)$ and $(3,6)$. So $S(6)=5$.",
- "Let $p_m\\#$ be the product of the first $m$ prime numbers, so $p_2\\# = 2*3 = 6$.",
- "Let $E(m, n)$ be the highest integer $k$ such that $2^k$ divides $S((p_m\\#)^n)$.",
- "$E(2,1) = 0$ since $2^0$ is the highest power of 2 that divides S(6)=5.",
- "Let $Q(n)=\\sum_{i=1}^{n} E(904961, i)$",
- "$Q(8)=2714886$.",
- "",
- "",
- "Evaluate $Q(10^{12})$."
- ]
- },
- {
- "id": "5900fef458d9425c70af4f84",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 562: Maximal perimeter",
- "tests": [
- "assert.strictEqual(euler562(), TODO: MISSING ANSWER, 'message: euler562() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler562() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler562();"
- ],
- "description": [
- "Construct triangle ABC such that:",
- "Vertices A, B and C are lattice points inside or on the circle of radius r centered at the origin;",
- "the triangle contains no other lattice point inside or on its edges;",
- "the perimeter is maximum.Let R be the circumradius of triangle ABC and T(r) = R/r.",
- "For r = 5, one possible triangle has vertices (-4,-3), (4,2) and (1,0) with perimeter $\\sqrt{13}+\\sqrt{34}+\\sqrt{89}$ and circumradius R = $\\sqrt {\\frac {19669} 2 }$, so T(5) =$\\sqrt {\\frac {19669} {50} }$.",
- "You are given T(10) ~ 97.26729 and T(100) ~ 9157.64707.",
- "",
- "Find T(107). Give your answer rounded to the nearest integer."
- ]
- },
- {
- "id": "5900fef558d9425c70af4f85",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 563: Robot Welders",
- "tests": [
- "assert.strictEqual(euler563(), TODO: MISSING ANSWER, 'message: euler563() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler563() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler563();"
- ],
- "description": [
- "A company specialises in producing large rectangular metal sheets, starting from unit square metal plates. The welding is performed by a range of robots of increasing size. Unfortunately, the programming options of these robots are rather limited. Each one can only process up to 25 identical rectangles of metal, which they can weld along either edge to produce a larger rectangle. The only programmable variables are the number of rectangles to be processed (up to and including 25), and whether to weld the long or short edge.",
- "",
- "For example, the first robot could be programmed to weld together 11 raw unit square plates to make a 11×1 strip. The next could take 10 of these 11×1 strips, and weld them either to make a longer 110×1 strip, or a 11×10 rectangle. Many, but not all, possible dimensions of metal sheets can be constructed in this way.",
- "",
- "One regular customer has a particularly unusual order. He always demands that the finished product should have an exact area, and that the long side must not be more than 10% larger than the short side. If these requirements can be met in more than one way, in terms of the exact dimensions of the two sides, then he demands that all variants are produced. For example, if he were to ask for metal sheet of area 889200, then there are three final dimensions that can be produced: 900×988, 912×975 and 936×950. The target area of 889200 is the smallest area which can be manufactured in three different variants, within the limitations of the robot welders.",
- "",
- "Let M(n) be the minimal area that can be manufactured in exactly n variants with the longer edge not greater than 10% bigger than the shorter edge. Hence M(3) = 889200.",
- "",
- "Find $ \\sum_{n=2}^{100} M(n)$."
- ]
- },
- {
- "id": "5900fef658d9425c70af4f86",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 564: Maximal polygons",
- "tests": [
- "assert.strictEqual(euler564(), TODO: MISSING ANSWER, 'message: euler564() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler564() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler564();"
- ],
- "description": [
- "A line segment of length $2n-3$ is randomly split into $n$ segments of integer length ($n \\ge 3$). In the sequence given by this split, the segments are then used as consecutive sides of a convex $n$-polygon, formed in such a way that its area is maximal. All of the $\\binom{2n-4} {n-1}$ possibilities for splitting up the initial line segment occur with the same probability. ",
- "",
- "Let $E(n)$ be the expected value of the area that is obtained by this procedure.",
- "For example, for $n=3$ the only possible split of the line segment of length $3$ results in three line segments with length $1$, that form an equilateral triangle with an area of $\\frac 1 4 \\sqrt{3}$. Therefore $E(3)=0.433013$, rounded to $6$ decimal places.",
- "For $n=4$ you can find $4$ different possible splits, each of which is composed of three line segments with length $1$ and one line segment with length $2$. All of these splits lead to the same maximal quadrilateral with an area of $\\frac 3 4 \\sqrt{3}$, thus $E(4)=1.299038$, rounded to $6$ decimal places.",
- "",
- "Let $S(k)=\\displaystyle \\sum_{n=3}^k E(n)$.",
- "For example, $S(3)=0.433013$, $S(4)=1.732051$, $S(5)=4.604767$ and $S(10)=66.955511$, rounded to $6$ decimal places each.",
- "",
- "Find $S(50)$, rounded to $6$ decimal places."
- ]
- },
- {
- "id": "5900fef758d9425c70af4f87",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 565: Divisibility of sum of divisors",
- "tests": [
- "assert.strictEqual(euler565(), TODO: MISSING ANSWER, 'message: euler565() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler565() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler565();"
- ],
- "description": [
- "Let $\\sigma(n)$ be the sum of the divisors of $n$.",
- "E.g. the divisors of 4 are 1, 2 and 4, so $\\sigma(4)=7$.",
- "",
- "",
- "The numbers $n$ not exceeding 20 such that 7 divides $\\sigma(n)$ are: 4,12,13 and 20, the sum of these numbers being 49.",
- "",
- "",
- "Let $S(n , d)$ be the sum of the numbers $i$ not exceeding $n$ such that $d$ divides $\\sigma(i)$.",
- "So $S(20 , 7)=49$.",
- "",
- "",
- "",
- "You are given: $S(10^6,2017)=150850429$ and $S(10^9 , 2017)=249652238344557$.",
- "",
- "",
- "Find $S(10^{11} , 2017)$"
- ]
- },
- {
- "id": "5900fef858d9425c70af4f88",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 566: Cake Icing Puzzle",
- "tests": [
- "assert.strictEqual(euler566(), TODO: MISSING ANSWER, 'message: euler566() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler566() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler566();"
- ],
- "description": [
- "Adam plays the following game with his birthday cake.",
- "",
- "He cuts a piece forming a circular sector of 60 degrees and flips the piece upside down, with the icing on the bottom.",
- "He then rotates the cake by 60 degrees counterclockwise, cuts an adjacent 60 degree piece and flips it upside down.",
- "He keeps repeating this, until after a total of twelve steps, all the icing is back on top.",
- "",
- "Amazingly, this works for any piece size, even if the cutting angle is an irrational number: all the icing will be back on top after a finite number of steps.",
- "",
- "Now, Adam tries something different: he alternates cutting pieces of size $x=\\frac{360}{9}$ degrees, $y=\\frac{360}{10}$ degrees and $z=\\frac{360 }{\\sqrt{11}}$ degrees. The first piece he cuts has size x and he flips it. The second has size y and he flips it. The third has size z and he flips it. He repeats this with pieces of size x, y and z in that order until all the icing is back on top, and discovers he needs 60 flips altogether.",
- "",
- "",
- "",
- "Let F(a, b, c) be the minimum number of piece flips needed to get all the icing back on top for pieces of size $x=\\frac{360}{a}$ degrees, $y=\\frac{360}{b}$ degrees and $z=\\frac{360}{\\sqrt{c}}$ degrees.",
- "Let $G(n) = \\sum_{9 \\le a < b < c \\le n} F(a,b,c)$, for integers a, b and c.",
- "",
- "You are given that F(9, 10, 11) = 60, F(10, 14, 16) = 506, F(15, 16, 17) = 785232.",
- "You are also given G(11) = 60, G(14) = 58020 and G(17) = 1269260.",
- "",
- "Find G(53)."
- ]
- },
- {
- "id": "5900fef958d9425c70af4f89",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 567: Reciprocal games I",
- "tests": [
- "assert.strictEqual(euler567(), TODO: MISSING ANSWER, 'message: euler567() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler567() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler567();"
- ],
- "description": [
- "Tom has built a random generator that is connected to a row of $n$ light bulbs. Whenever the random generator is activated each of the $n$ lights is turned on with the probability of $\\frac 1 2$, independently of its former state or the state of the other light bulbs.",
- "",
- "While discussing with his friend Jerry how to use his generator, they invent two different games, they call the reciprocal games:",
- "Both games consist of $n$ turns. Each turn is started by choosing a number $k$ randomly between (and including) $1$ and $n$, with equal probability of $\\frac 1 n$ for each number, while the possible win for that turn is the reciprocal of $k$, that is $\\frac 1 k$.",
- "",
- "In game A, Tom activates his random generator once in each turn. If the number of lights turned on is the same as the previously chosen number $k$, Jerry wins and gets $\\frac 1 k$, otherwise he will receive nothing for that turn. Jerry's expected win after playing the total game A consisting of $n$ turns is called $J_A(n)$. For example $J_A(6)=0.39505208$, rounded to 8 decimal places.",
- "",
- "For each turn in game B, after $k$ has been randomly selected, Tom keeps reactivating his random generator until exactly $k$ lights are turned on. After that Jerry takes over and reactivates the random generator until he, too, has generated a pattern with exactly $k$ lights turned on. If this pattern is identical to Tom's last pattern, Jerry wins and gets $\\frac 1 k$, otherwise he will receive nothing. Jerry's expected win after the total game B consisting of $n$ turns is called $J_B(n)$. For example $J_B(6)=0.43333333$, rounded to 8 decimal places.",
- "",
- "Let $\\displaystyle S(m)=\\sum_{n=1}^m (J_A(n)+J_B(n))$. For example $S(6)=7.58932292$, rounded to 8 decimal places.",
- "",
- "Find S(123456789), rounded to 8 decimal places."
- ]
- },
- {
- "id": "5900fefa58d9425c70af4f8a",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 568: Reciprocal games II",
- "tests": [
- "assert.strictEqual(euler568(), TODO: MISSING ANSWER, 'message: euler568() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler568() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler568();"
- ],
- "description": [
- "Tom has built a random generator that is connected to a row of $n$ light bulbs. Whenever the random generator is activated each of the $n$ lights is turned on with the probability of $\\frac 1 2$, independently of its former state or the state of the other light bulbs.",
- "",
- "While discussing with his friend Jerry how to use his generator, they invent two different games, they call the reciprocal games:",
- "Both games consist of $n$ turns. Each turn is started by choosing a number $k$ randomly between (and including) $1$ and $n$, with equal probability of $\\frac 1 n$ for each number, while the possible win for that turn is the reciprocal of $k$, that is $\\frac 1 k$.",
- "",
- "In game A, Tom activates his random generator once in each turn. If the number of lights turned on is the same as the previously chosen number $k$, Jerry wins and gets $\\frac 1 k$, otherwise he will receive nothing for that turn. Jerry's expected win after playing the total game A consisting of $n$ turns is called $J_A(n)$. For example $J_A(6)=0.39505208$, rounded to 8 decimal places.",
- "",
- "For each turn in game B, after $k$ has been randomly selected, Tom keeps reactivating his random generator until exactly $k$ lights are turned on. After that Jerry takes over and reactivates the random generator until he, too, has generated a pattern with exactly $k$ lights turned on. If this pattern is identical to Tom's last pattern, Jerry wins and gets $\\frac 1 k$, otherwise he will receive nothing. Jerry's expected win after the total game B consisting of $n$ turns is called $J_B(n)$. For example $J_B(6)=0.43333333$, rounded to 8 decimal places.",
- "",
- "Let $D(n)=J_B(n)−J_A(n)$. For example, $D(6) = 0.03828125$.",
- "",
- "Find the 7 most significant digits of $D(123456789)$ after removing all leading zeros.",
- "(If, for example, we had asked for the 7 most significant digits of $D(6)$, the answer would have been 3828125.)"
- ]
- },
- {
- "id": "5900fefb58d9425c70af4f8b",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 569: Prime Mountain Range",
- "tests": [
- "assert.strictEqual(euler569(), TODO: MISSING ANSWER, 'message: euler569() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler569() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler569();"
- ],
- "description": [
- "A mountain range consists of a line of mountains with slopes of exactly 45°, and heights governed by the prime numbers, pn. The up-slope of the kth mountain is of height p2k−1, and the downslope is p2k. The first few foot-hills of this range are illustrated below.",
- "",
- "",
- "",
- "",
- "Tenzing sets out to climb each one in turn, starting from the lowest. At the top of each peak, he looks back and counts how many of the previous peaks he can see. In the example above, the eye-line from the third mountain is drawn in red, showing that he can only see the peak of the second mountain from this viewpoint. Similarly, from the 9th mountain, he can see three peaks, those of the 5th, 7th and 8th mountain.",
- "",
- "Let P(k) be the number of peaks that are visible looking back from the kth mountain. Hence P(3)=1 and P(9)=3.",
- "Also $\\displaystyle \\sum_{k=1}^{100} P(k) = 227$.",
- "",
- "Find $\\displaystyle \\sum_{k=1}^{2500000} P(k)$."
- ]
- },
- {
- "id": "5900fefc58d9425c70af4f8c",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 570: Snowflakes",
- "tests": [
- "assert.strictEqual(euler570(), TODO: MISSING ANSWER, 'message: euler570() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler570() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler570();"
- ],
- "description": [
- "A snowflake of order n is formed by overlaying an equilateral triangle (rotated by 180 degrees) onto each equilateral triangle of the same size in a snowflake of order n-1. A snowflake of order 1 is a single equilateral triangle.",
- "",
- "",
- "",
- "",
- "",
- "",
- "Some areas of the snowflake are overlaid repeatedly. In the above picture, blue represents the areas that are one layer thick, red two layers thick, yellow three layers thick, and so on. ",
- "",
- "For an order n snowflake, let A(n) be the number of triangles that are one layer thick, and let B(n) be the number of triangles that are three layers thick. Define G(n) = gcd(A(n), B(n)).",
- "",
- "E.g. A(3) = 30, B(3) = 6, G(3)=6",
- "A(11) = 3027630, B(11) = 19862070, G(11) = 30",
- "",
- "Further, G(500) = 186 and $\\sum_{n=3}^{500}G(n)=5124$",
- "",
- "Find $\\displaystyle \\sum_{n=3}^{10^7}G(n)$."
- ]
- },
- {
- "id": "5900fefd58d9425c70af4f8d",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 571: Super Pandigital Numbers",
- "tests": [
- "assert.strictEqual(euler571(), TODO: MISSING ANSWER, 'message: euler571() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler571() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler571();"
- ],
- "description": [
- "A positive number is pandigital in base b if it contains all digits from 0 to b - 1 at least once when written in base b.",
- "",
- "A n-super-pandigital number is a number that is simultaneously pandigital in all bases from 2 to n inclusively.",
- "For example 978 = 11110100102 = 11000203 = 331024 = 124035 is the smallest 5-super-pandigital number.",
- "Similarly, 1093265784 is the smallest 10-super-pandigital number.",
- "The sum of the 10 smallest 10-super-pandigital numbers is 20319792309.",
- "",
- "What is the sum of the 10 smallest 12-super-pandigital numbers?"
- ]
- },
- {
- "id": "5900fefe58d9425c70af4f8e",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 572: Idempotent matrices",
- "tests": [
- "assert.strictEqual(euler572(), TODO: MISSING ANSWER, 'message: euler572() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler572() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler572();"
- ],
- "description": [
- "A matrix $M$ is called idempotent if $M^2 = M$.",
- "Let $M$ be a three by three matrix : ",
- "$M=\\begin{pmatrix} ",
- " a & b & c\\\\ ",
- " d & e & f\\\\",
- " g &h &i\\\\",
- "\\end{pmatrix}$.",
- "Let C(n) be the number of idempotent three by three matrices $M$ with integer elements such that",
- "$ -n \\le a,b,c,d,e,f,g,h,i \\le n$.",
- "",
- "C(1)=164 and C(2)=848.",
- "",
- "",
- "Find C(200)."
- ]
- },
- {
- "id": "5900feff58d9425c70af4f8f",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 573: Unfair race",
- "tests": [
- "assert.strictEqual(euler573(), TODO: MISSING ANSWER, 'message: euler573() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler573() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler573();"
- ],
- "description": [
- "$n$ runners in very different training states want to compete in a race. Each one of them is given a different starting number $k$ $(1\\leq k \\leq n)$ according to his (constant) individual racing speed being $v_k=\\frac{k}{n}$.",
- "In order to give the slower runners a chance to win the race, $n$ different starting positions are chosen randomly (with uniform distribution) and independently from each other within the racing track of length $1$. After this, the starting position nearest to the goal is assigned to runner $1$, the next nearest starting position to runner $2$ and so on, until finally the starting position furthest away from the goal is assigned to runner $n$. The winner of the race is the runner who reaches the goal first.",
- "",
- "Interestingly, the expected running time for the winner is $\\frac{1}{2}$, independently of the number of runners. Moreover, while it can be shown that all runners will have the same expected running time of $\\frac{n}{n+1}$, the race is still unfair, since the winning chances may differ significantly for different starting numbers:",
- "",
- "Let $P_{n,k}$ be the probability for runner $k$ to win a race with $n$ runners and $E_n = \\sum_{k=1}^n k P_{n,k}$ be the expected starting number of the winner in that race. It can be shown that, for example,",
- "$P_{3,1}=\\frac{4}{9}$, $P_{3,2}=\\frac{2}{9}$, $P_{3,3}=\\frac{1}{3}$ and $E_3=\\frac{17}{9}$ for a race with $3$ runners. ",
- "You are given that $E_4=2.21875$, $E_5=2.5104$ and $E_{10}=3.66021568$.",
- "",
- "Find $E_{1000000}$ rounded to 4 digits after the decimal point."
- ]
- },
- {
- "id": "5900ff0058d9425c70af4f90",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 574: Verifying Primes",
- "tests": [
- "assert.strictEqual(euler574(), TODO: MISSING ANSWER, 'message: euler574() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler574() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler574();"
- ],
- "description": [
- "Let $q$ be a prime and $A \\ge B >0$ be two integers with the following properties:",
- " $A$ and $B$ have no prime factor in common, that is $\\text{gcd}(A,B)=1$.",
- " The product $AB$ is divisible by every prime less than q.",
- "",
- "It can be shown that, given these conditions, any sum $A+Beuler575() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler575() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler575();"
- ],
- "description": [
- "It was quite an ordinary day when a mysterious alien vessel appeared as if from nowhere. After waiting several hours and receiving no response it is decided to send a team to investigate, of which you are included. Upon entering the vessel you are met by a friendly holographic figure, Katharina, who explains the purpose of the vessel, Eulertopia.",
- "",
- "She claims that Eulertopia is almost older than time itself. Its mission was to take advantage of a combination of incredible computational power and vast periods of time to discover the answer to life, the universe, and everything. Hence the resident cleaning robot, Leonhard, along with his housekeeping responsibilities, was built with a powerful computational matrix to ponder the meaning of life as he wanders through a massive 1000 by 1000 square grid of rooms. She goes on to explain that the rooms are numbered sequentially from left to right, row by row. So, for example, if Leonhard was wandering around a 5 by 5 grid then the rooms would be numbered in the following way.",
- "",
- "",
- "",
- "",
- "Many millennia ago Leonhard reported to Katharina to have found the answer and he is willing to share it with any life form who proves to be worthy of such knowledge.",
- "",
- "Katharina further explains that the designers of Leonhard were given instructions to program him with equal probability of remaining in the same room or travelling to an adjacent room. However, it was not clear to them if this meant (i) an equal probability being split equally between remaining in the room and the number of available routes, or, (ii) an equal probability (50%) of remaining in the same room and then the other 50% was to be split equally between the number of available routes.",
- "",
- "",
- "",
- "",
- "(i) Probability of remaining related to number of exits",
- "(ii) Fixed 50% probability of remaining",
- "",
- "",
- "The records indicate that they decided to flip a coin. Heads would mean that the probability of remaining was dynamically related to the number of exits whereas tails would mean that they program Leonhard with a fixed 50% probability of remaining in a particular room. Unfortunately there is no record of the outcome of the coin, so without further information we would need to assume that there is equal probability of either of the choices being implemented.",
- "",
- "Katharina suggests it should not be too challenging to determine that the probability of finding him in a square numbered room in a 5 by 5 grid after unfathomable periods of time would be approximately 0.177976190476 [12 d.p.].",
- "",
- "In order to prove yourself worthy of visiting the great oracle you must calculate the probability of finding him in a square numbered room in the 1000 by 1000 lair in which he has been wandering.",
- "(Give your answer rounded to 12 decimal places)"
- ]
- },
- {
- "id": "5900ff0258d9425c70af4f92",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 576: Irrational jumps",
- "tests": [
- "assert.strictEqual(euler576(), TODO: MISSING ANSWER, 'message: euler576() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler576() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler576();"
- ],
- "description": [
- "A bouncing point moves counterclockwise along a circle with circumference $1$ with jumps of constant length $l<1$, until it hits a gap of length $g<1$, that is placed in a distance $d$ counterclockwise from the starting point. The gap does not include the starting point, that is $g+d<1$.",
- "",
- "Let $S(l,g,d)$ be the sum of the length of all jumps, until the point falls into the gap. It can be shown that $S(l,g,d)$ is finite for any irrational jump size $l$, regardless of the values of $g$ and $d$.",
- "Examples: ",
- "$S(\\sqrt{\\frac 1 2}, 0.06, 0.7)=0.7071 \\dots$, $S(\\sqrt{\\frac 1 2}, 0.06, 0.3543)=1.4142 \\dots$ and $S(\\sqrt{\\frac 1 2}, 0.06, 0.2427)=16.2634 \\dots$.",
- "",
- "Let $M(n, g)$ be the maximum of $ \\sum S(\\sqrt{\\frac 1 p}, g, d)$ for all primes $p \\le n$ and any valid value of $d$.",
- "Examples:",
- "$M(3, 0.06) =29.5425 \\dots$, since $S(\\sqrt{\\frac 1 2}, 0.06, 0.2427)+S(\\sqrt{\\frac 1 3}, 0.06, 0.2427)=29.5425 \\dots$ is the maximal reachable sum for $g=0.06$. ",
- "$M(10, 0.01)=266.9010 \\dots$ ",
- "",
- "Find $M(100, 0.00002)$, rounded to 4 decimal places."
- ]
- },
- {
- "id": "5900ff0358d9425c70af4f93",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 577: Counting hexagons",
- "tests": [
- "assert.strictEqual(euler577(), TODO: MISSING ANSWER, 'message: euler577() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler577() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler577();"
- ],
- "description": [
- "An equilateral triangle with integer side length $n \\ge 3$ is divided into $n^2$ equilateral triangles with side length 1 as shown in the diagram below.",
- "The vertices of these triangles constitute a triangular lattice with $\\frac{(n+1)(n+2)} 2$ lattice points.",
- "Let $H(n)$ be the number of all regular hexagons that can be found by connecting 6 of these points. ",
- "",
- "",
- "",
- "",
- "For example, $H(3)=1$, $H(6)=12$ and $H(20)=966$.",
- "",
- "Find $\\displaystyle \\sum_{n=3}^{12345} H(n)$."
- ]
- },
- {
- "id": "5900ff0458d9425c70af4f94",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 578: Integers with decreasing prime powers",
- "tests": [
- "assert.strictEqual(euler578(), TODO: MISSING ANSWER, 'message: euler578() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler578() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler578();"
- ],
- "description": [
- "Any positive integer can be written as a product of prime powers: p1a1 × p2a2 × ... × pkak,",
- "where pi are distinct prime integers, ai > 0 and pi < pj if i < j.",
- "",
- "A decreasing prime power positive integer is one for which ai ≥ aj if i < j.",
- "For example, 1, 2, 15=3×5, 360=23×32×5 and 1000=23×53 are decreasing prime power integers.",
- "",
- "Let C(n) be the count of decreasing prime power positive integers not exceeding n.",
- "C(100) = 94 since all positive integers not exceeding 100 have decreasing prime powers except 18, 50, 54, 75, 90 and 98.",
- "You are given C(106) = 922052.",
- "",
- "Find C(1013)."
- ]
- },
- {
- "id": "5900ff0558d9425c70af4f95",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 579: Lattice points in lattice cubes",
- "tests": [
- "assert.strictEqual(euler579(), TODO: MISSING ANSWER, 'message: euler579() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler579() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler579();"
- ],
- "description": [
- "A lattice cube is a cube in which all vertices have integer coordinates. Let C(n) be the number of different lattice cubes in which the coordinates of all vertices range between (and including) 0 and n. Two cubes are hereby considered different if any of their vertices have different coordinates.",
- "For example, C(1)=1, C(2)=9, C(4)=100, C(5)=229, C(10)=4469 and C(50)=8154671.",
- "",
- "Different cubes may contain different numbers of lattice points.",
- "",
- "For example, the cube with the vertices",
- "(0, 0, 0), (3, 0, 0), (0, 3, 0), (0, 0, 3), (0, 3, 3), (3, 0, 3), (3, 3, 0), (3, 3, 3) contains 64 lattice points (56 lattice points on the surface including the 8 vertices and 8 points within the cube). ",
- "In contrast, the cube with the vertices",
- "(0, 2, 2), (1, 4, 4), (2, 0, 3), (2, 3, 0), (3, 2, 5), (3, 5, 2), (4, 1, 1), (5, 3, 3) contains only 40 lattice points (20 points on the surface and 20 points within the cube), although both cubes have the same side length 3.",
- "",
- "",
- "Let S(n) be the sum of the lattice points contained in the different lattice cubes in which the coordinates of all vertices range between (and including) 0 and n.",
- "",
- "For example, S(1)=8, S(2)=91, S(4)=1878, S(5)=5832, S(10)=387003 and S(50)=29948928129.",
- "",
- "Find S(5000) mod 109."
- ]
- },
- {
- "id": "5900ff0658d9425c70af4f96",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 580: Squarefree Hilbert numbers",
- "tests": [
- "assert.strictEqual(euler580(), TODO: MISSING ANSWER, 'message: euler580() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler580() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler580();"
- ],
- "description": [
- "A Hilbert number is any positive integer of the form $4k+1$ for integer $k\\geq 0$. We shall define a squarefree Hilbert number as a Hilbert number which is not divisible by the square of any Hilbert number other than one. For example, $117$ is a squarefree Hilbert number, equaling $9\\times13$. However $6237$ is a Hilbert number that is not squarefree in this sense, as it is divisible by $9^2$. The number $3969$ is also not squarefree, as it is divisible by both $9^2$ and $21^2$. ",
- "",
- "",
- "There are $2327192$ squarefree Hilbert numbers below $10^7$. ",
- "How many squarefree Hilbert numbers are there below $10^{16}$?"
- ]
- },
- {
- "id": "5900ff0758d9425c70af4f97",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 581: 47-smooth triangular numbers",
- "tests": [
- "assert.strictEqual(euler581(), TODO: MISSING ANSWER, 'message: euler581() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler581() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler581();"
- ],
- "description": [
- "A number is p-smooth if it has no prime factors larger than p.",
- "Let T be the sequence of triangular numbers, ie T(n)=n(n+1)/2.",
- "Find the sum of all indices n such that T(n) is 47-smooth."
- ]
- },
- {
- "id": "5900ff0858d9425c70af4f98",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 582: Nearly isosceles 120 degree triangles",
- "tests": [
- "assert.strictEqual(euler582(), TODO: MISSING ANSWER, 'message: euler582() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler582() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler582();"
- ],
- "description": [
- "Let a, b and c be the sides of an integer sided triangle with one angle of 120 degrees, a≤b≤c and b-a≤100.",
- "Let T(n) be the number of such triangles with c≤n.",
- "T(1000)=235 and T(108)=1245.",
- "Find T(10100)."
- ]
- },
- {
- "id": "5900ff0958d9425c70af4f99",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 583: Heron Envelopes",
- "tests": [
- "assert.strictEqual(euler583(), TODO: MISSING ANSWER, 'message: euler583() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler583() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler583();"
- ],
- "description": [
- "A standard envelope shape is a convex figure consisting of an isosceles triangle (the flap) placed on top of a rectangle. An example of an envelope with integral sides is shown below. Note that to form a sensible envelope, the perpendicular height of the flap (BCD) must be smaller than the height of the rectangle (ABDE). ",
- "",
- "",
- "",
- "",
- "",
- "",
- "In the envelope illustrated, not only are all the sides integral, but also all the diagonals (AC, AD, BD, BE and CE) are integral too. Let us call an envelope with these properties a Heron envelope.",
- "",
- "",
- "",
- "Let S(p) be the sum of the perimeters of all the Heron envelopes with a perimeter less than or equal to p. ",
- "",
- "",
- "You are given that S(104) = 884680. Find S(107)."
- ]
- },
- {
- "id": "5900ff0a58d9425c70af4f9a",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 584: Birthday Problem Revisited",
- "tests": [
- "assert.strictEqual(euler584(), TODO: MISSING ANSWER, 'message: euler584() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler584() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler584();"
- ],
- "description": [
- "A long long time ago in a galaxy far far away, the Wimwians, inhabitants of planet WimWi, discovered an unmanned drone that had landed on their planet. On examining the drone, they uncovered a device that sought the answer for the so called \"Birthday Problem\". The description of the problem was as follows:",
- "",
- "If people on your planet were to enter a very large room one by one, what will be the expected number of people in the room when you first find 3 people with Birthdays within 1 day from each other.",
- "",
- "The description further instructed them to enter the answer into the device and send the drone into space again. Startled by this turn of events, the Wimwians consulted their best mathematicians. Each year on Wimwi has 10 days and the mathematicians assumed equally likely birthdays and ignored leap years (leap years in Wimwi have 11 days), and found 5.78688636 to be the required answer. As such, the Wimwians entered this answer and sent the drone back into space.",
- "",
- "",
- "After traveling light years away, the drone then landed on planet Joka. The same events ensued except this time, the numbers in the device had changed due to some unknown technical issues. The description read:",
- "",
- "If people on your planet were to enter a very large room one by one, what will be the expected number of people in the room when you first find 3 people with Birthdays within 7 days from each other.",
- "",
- "With a 100-day year on the planet, the Jokars (inhabitants of Joka) found the answer to be 8.48967364 (rounded to 8 decimal places because the device allowed only 8 places after the decimal point) assuming equally likely birthdays. They too entered the answer into the device and launched the drone into space again.",
- "",
- "",
- "This time the drone landed on planet Earth. As before the numbers in the problem description had changed. It read:",
- "",
- "If people on your planet were to enter a very large room one by one, what will be the expected number of people in the room when you first find 4 people with Birthdays within 7 days from each other.",
- "",
- "What would be the answer (rounded to eight places after the decimal point) the people of Earth have to enter into the device for a year with 365 days? Ignore leap years. Also assume that all birthdays are equally likely and independent of each other."
- ]
- },
- {
- "id": "5900ff0b58d9425c70af4f9b",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 585: Nested square roots",
- "tests": [
- "assert.strictEqual(euler585(), TODO: MISSING ANSWER, 'message: euler585() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler585() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler585();"
- ],
- "description": [
- "Consider the term $\\small \\sqrt{x+\\sqrt{y}+\\sqrt{z}}$ that is representing a nested square root. $x$, $y$ and $z$ are positive integers and $y$ and $z$ are not allowed to be perfect squares, so the number below the outer square root is irrational. Still it can be shown that for some combinations of $x$, $y$ and $z$ the given term can be simplified into a sum and/or difference of simple square roots of integers, actually denesting the square roots in the initial expression. ",
- "",
- "Here are some examples of this denesting:",
- "$\\small \\sqrt{3+\\sqrt{2}+\\sqrt{2}}=\\sqrt{2}+\\sqrt{1}=\\sqrt{2}+1$",
- "$\\small \\sqrt{8+\\sqrt{15}+\\sqrt{15}}=\\sqrt{5}+\\sqrt{3}$",
- "$\\small \\sqrt{20+\\sqrt{96}+\\sqrt{12}}=\\sqrt{9}+\\sqrt{6}+\\sqrt{3}-\\sqrt{2}=3+\\sqrt{6}+\\sqrt{3}-\\sqrt{2}$",
- "$\\small \\sqrt{28+\\sqrt{160}+\\sqrt{108}}=\\sqrt{15}+\\sqrt{6}+\\sqrt{5}-\\sqrt{2}$",
- "As you can see the integers used in the denested expression may also be perfect squares resulting in further simplification.",
- "",
- "Let F($n$) be the number of different terms $\\small \\sqrt{x+\\sqrt{y}+\\sqrt{z}}$, that can be denested into the sum and/or difference of a finite number of square roots, given the additional condition that $0euler586() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler586() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler586();"
- ],
- "description": [
- "The number 209 can be expressed as $a^2 + 3ab + b^2$ in two distinct ways:",
- "",
- "",
- "$ \\qquad 209 = 8^2 + 3\\cdot 8\\cdot 5 + 5^2$ ",
- "$ \\qquad 209 = 13^2 + 3\\cdot13\\cdot 1 + 1^2$",
- "",
- "",
- "Let $f(n,r)$ be the number of integers $k$ not exceeding $n$ that can be expressed as $k=a^2 + 3ab + b^2$, with $a\\gt b>0$ integers, in exactly $r$ different ways.",
- "",
- "",
- "You are given that $f(10^5, 4) = 237$ and $f(10^8, 6) = 59517$.",
- "",
- "",
- "Find $f(10^{15}, 40)$."
- ]
- },
- {
- "id": "5900ff0d58d9425c70af4f9d",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 587: Concave triangle",
- "tests": [
- "assert.strictEqual(euler587(), TODO: MISSING ANSWER, 'message: euler587() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler587() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler587();"
- ],
- "description": [
- "A square is drawn around a circle as shown in the diagram below on the left.",
- "We shall call the blue shaded region the L-section.",
- "A line is drawn from the bottom left of the square to the top right as shown in the diagram on the right.",
- "We shall call the orange shaded region a concave triangle.",
- "",
- "",
- "",
- "",
- "It should be clear that the concave triangle occupies exactly half of the L-section.",
- "",
- "",
- "",
- "Two circles are placed next to each other horizontally, a rectangle is drawn around both circles, and a line is drawn from the bottom left to the top right as shown in the diagram below.",
- "",
- "",
- "",
- "",
- "This time the concave triangle occupies approximately 36.46% of the L-section.",
- "",
- "",
- "If n circles are placed next to each other horizontally, a rectangle is drawn around the n circles, and a line is drawn from the bottom left to the top right, then it can be shown that the least value of n for which the concave triangle occupies less than 10% of the L-section is n = 15.",
- "",
- "",
- "What is the least value of n for which the concave triangle occupies less than 0.1% of the L-section?"
- ]
- },
- {
- "id": "5900ff0e58d9425c70af4f9e",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 588: Quintinomial coefficients",
- "tests": [
- "assert.strictEqual(euler588(), TODO: MISSING ANSWER, 'message: euler588() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler588() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler588();"
- ],
- "description": [
- "The coefficients in the expansion of $(x+1)^k$ are called binomial coefficients.",
- "Analoguously the coefficients in the expansion of $(x^4+x^3+x^2+x+1)^k$ are called quintinomial coefficients. (quintus= Latin for fifth).",
- "",
- "",
- "Consider the expansion of $(x^4+x^3+x^2+x+1)^3$:",
- "$x^{12}+3x^{11}+6x^{10}+10x^9+15x^8+18x^7+19x^6+18x^5+15x^4+10x^3+6x^2+3x+1$",
- "As we can see 7 out of the 13 quintinomial coefficients for $k=3$ are odd.",
- "",
- "",
- "Let $Q(k)$ be the number of odd coefficients in the expansion of $(x^4+x^3+x^2+x+1)^k$.",
- "So $Q(3)=7$.",
- "",
- "",
- "You are given $Q(10)=17$ and $Q(100)=35$.",
- "",
- "Find $\\sum_{k=1}^{18}Q(10^k) $."
- ]
- },
- {
- "id": "5900ff0f58d9425c70af4f9f",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 589: Poohsticks Marathon",
- "tests": [
- "assert.strictEqual(euler589(), TODO: MISSING ANSWER, 'message: euler589() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler589() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler589();"
- ],
- "description": [
- "Christopher Robin and Pooh Bear love the game of Poohsticks so much that they invented a new version which allows them to play for longer before one of them wins and they have to go home for tea. The game starts as normal with both dropping a stick simultaneously on the upstream side of a bridge. But rather than the game ending when one of the sticks emerges on the downstream side, instead they fish their sticks out of the water, and drop them back in again on the upstream side. The game only ends when one of the sticks emerges from under the bridge ahead of the other one having also 'lapped' the other stick - that is, having made one additional journey under the bridge compared to the other stick.",
- "",
- "",
- "On a particular day when playing this game, the time taken for a stick to travel under the bridge varies between a minimum of 30 seconds, and a maximum of 60 seconds. The time taken to fish a stick out of the water and drop it back in again on the other side is 5 seconds. The current under the bridge has the unusual property that the sticks' journey time is always an integral number of seconds, and it is equally likely to emerge at any of the possible times between 30 and 60 seconds (inclusive). It turns out that under these circumstances, the expected time for playing a single game is 1036.15 seconds (rounded to 2 decimal places). This time is measured from the point of dropping the sticks for the first time, to the point where the winning stick emerges from under the bridge having lapped the other.",
- "",
- "",
- "The stream flows at different rates each day, but maintains the property that the journey time in seconds is equally distributed amongst the integers from a minimum, $n$, to a maximum, $m$, inclusive. Let the expected time of play in seconds be $E(m,n)$. Hence $E(60,30)=1036.15...$",
- "",
- "",
- "Let $S(k)=\\sum_{m=2}^k\\sum_{n=1}^{m-1}E(m,n)$.",
- "",
- "",
- "For example $S(5)=7722.82$ rounded to 2 decimal places.",
- "",
- "",
- "Find $S(100)$ and give your answer rounded to 2 decimal places."
- ]
- },
- {
- "id": "5900ff1058d9425c70af4fa0",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 590: Sets with a given Least Common Multiple",
- "tests": [
- "assert.strictEqual(euler590(), TODO: MISSING ANSWER, 'message: euler590() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler590() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler590();"
- ],
- "description": [
- "Let H(n) denote the number of sets of positive integers such that the least common multiple of the integers in the set equals n.",
- "E.g.:",
- "The integers in the following ten sets all have a least common multiple of 6:",
- "{2,3}, {1,2,3}, {6}, {1,6}, {2,6} ,{1,2,6}, {3,6}, {1,3,6}, {2,3,6} and {1,2,3,6}.",
- "Thus H(6)=10.",
- "",
- "",
- "Let L(n) denote the least common multiple of the numbers 1 through n.",
- "E.g. L(6) is the least common multiple of the numbers 1,2,3,4,5,6 and L(6) equals 60.",
- "",
- "",
- "Let HL(n) denote H(L(n)).",
- "You are given HL(4)=H(12)=44.",
- "",
- "",
- "Find HL(50000). Give your answer modulo 109."
- ]
- },
- {
- "id": "5900ff1158d9425c70af4fa1",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 591: Best Approximations by Quadratic Integers",
- "tests": [
- "assert.strictEqual(euler591(), TODO: MISSING ANSWER, 'message: euler591() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler591() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler591();"
- ],
- "description": [
- "Given a non-square integer $d$, any real $x$ can be approximated arbitrarily close by quadratic integers $a+b\\sqrt{d}$, where $a,b$ are integers. For example, the following inequalities approximate $\\pi$ with precision $10^{-13}$:",
- "$$4375636191520\\sqrt{2}-6188084046055 < \\pi < 721133315582\\sqrt{2}-1019836515172 $$ ",
- "We call $BQA_d(x,n)$ the quadratic integer closest to $x$ with the absolute values of $a,b$ not exceeding $n$. We also define the integral part of a quadratic integer as $I_d(a+b\\sqrt{d}) = a$.",
- "",
- "You are given that:",
- "$BQA_2(\\pi,10) = 6 - 2\\sqrt{2}$",
- "$BQA_5(\\pi,100)=26\\sqrt{5}-55$",
- "$BQA_7(\\pi,10^6)=560323 - 211781\\sqrt{7}$",
- "$I_2(BQA_2(\\pi,10^{13}))=-6188084046055$Find the sum of $|I_d(BQA_d(\\pi,10^{13}))|$ for all non-square positive integers less than 100."
- ]
- },
- {
- "id": "5900ff1258d9425c70af4fa2",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 592: Factorial trailing digits 2",
- "tests": [
- "assert.strictEqual(euler592(), TODO: MISSING ANSWER, 'message: euler592() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler592() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler592();"
- ],
- "description": [
- "For any N, let f(N) be the last twelve hexadecimal digits before the trailing zeroes in N!.",
- "",
- "For example, the hexadecimal representation of 20! is 21C3677C82B40000,",
- "so f(20) is the digit sequence 21C3677C82B4.",
- "",
- "Find f(20!). Give your answer as twelve hexadecimal digits, using uppercase for the digits A to F."
- ]
- },
- {
- "id": "5900ff1358d9425c70af4fa3",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 593: Fleeting Medians",
- "tests": [
- "assert.strictEqual(euler593(), TODO: MISSING ANSWER, 'message: euler593() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler593() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler593();"
- ],
- "description": [
- "We define two sequences $S = \\{S(1), S(2), ..., S(n)\\}$ and $S_2 = \\{S_2(1), S_2(2), ..., S_2(n)\\}$:",
- "",
- "$S(k) = (p_k)^k$ mod $10007$ where $p_k$ is the $k$th prime number.",
- "",
- "$S_2(k) = S(k) + S(\\lfloor\\frac{k}{10000}\\rfloor + 1)$ where $\\lfloor \\cdot \\rfloor$ denotes the floor function.",
- "",
- "Then let $M(i, j)$ be the median of elements $S_2(i)$ through $S_2(j)$, inclusive. For example, $M(1, 10) = 2021.5$ and $M(10^2, 10^3) = 4715.0$.",
- "",
- "Let $F(n, k) = \\sum_{i=1}^{n-k+1} M(i, i + k - 1)$. For example, $F(100, 10) = 463628.5$ and $F(10^5, 10^4) = 675348207.5$.",
- "",
- "Find $F(10^7, 10^5)$. If the sum is not an integer, use $.5$ to denote a half. Otherwise, use $.0$ instead."
- ]
- },
- {
- "id": "5900ff1458d9425c70af4fa4",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 594: Rhombus Tilings",
- "tests": [
- "assert.strictEqual(euler594(), TODO: MISSING ANSWER, 'message: euler594() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler594() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler594();"
- ],
- "description": [
- "For a polygon $P$, let $t(P)$ be the number of ways in which $P$ can be tiled using rhombi and squares with edge length 1. Distinct rotations and reflections are counted as separate tilings.",
- "",
- "",
- "For example, if $O$ is a regular octagon with edge length 1, then $t(O) = 8$. As it happens, all these 8 tilings are rotations of one another:",
- "",
- "",
- "",
- "",
- "Let $O_{a,b}$ be the equal-angled convex octagon whose edges alternate in length between $a$ and $b$.",
- "",
- "For example, here is $O_{2,1}$, with one of its tilings:",
- "",
- "",
- "",
- "",
- "",
- "You are given that $t(O_{1,1})=8$, $t(O_{2,1})=76$ and $t(O_{3,2})=456572$.",
- "",
- "",
- "Find $t(O_{4,2})$."
- ]
- },
- {
- "id": "5900ff1558d9425c70af4fa5",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 595: Incremental Random Sort",
- "tests": [
- "assert.strictEqual(euler595(), TODO: MISSING ANSWER, 'message: euler595() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler595() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler595();"
- ],
- "description": [
- "A deck of cards numbered from 1 to n is shuffled randomly such that each permutation is equally likely.",
- "",
- "",
- "The cards are to be sorted into ascending order using the following technique:",
- " Look at the initial sequence of cards. If it is already sorted, then there is no need for further action. Otherwise, if any subsequences of cards happen to be in the correct place relative to one another (ascending with no gaps), then those subsequences are fixed by attaching the cards together. For example, with 7 cards initially in the order 4123756, the cards labelled 1, 2 and 3 would be attached together, as would 5 and 6.",
- " The cards are 'shuffled' by being thrown into the air, but note that any correctly sequenced cards remain attached, so their orders are maintained. The cards (or bundles of attached cards) are then picked up randomly. You should assume that this randomisation is unbiased, despite the fact that some cards are single, and others are grouped together. ",
- " Repeat steps 1 and 2 until the cards are sorted. ",
- "",
- " Let S(n) be the expected number of shuffles needed to sort the cards. Since the order is checked before the first shuffle, S(1) = 0. You are given that S(2) = 1, and S(5) = 4213/871.",
- "",
- "",
- "Find S(52), and give your answer rounded to 8 decimal places."
- ]
- },
- {
- "id": "5900ff1658d9425c70af4fa6",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 596: Number of lattice points in a hyperball",
- "tests": [
- "assert.strictEqual(euler596(), TODO: MISSING ANSWER, 'message: euler596() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler596() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler596();"
- ],
- "description": [
- "Let T(r) be the number of integer quadruplets x, y, z, t such that x2 + y2 + z2 + t2 ≤ r2. In other words, T(r) is the number of lattice points in the four-dimensional hyperball of radius r.",
- "",
- "You are given that T(2) = 89, T(5) = 3121, T(100) = 493490641 and T(104) = 49348022079085897.",
- "",
- "Find T(108) mod 1000000007."
- ]
- },
- {
- "id": "5900ff1758d9425c70af4fa7",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 597: Torpids",
- "tests": [
- "assert.strictEqual(euler597(), TODO: MISSING ANSWER, 'message: euler597() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler597() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler597();"
- ],
- "description": [
- "The Torpids are rowing races held annually in Oxford, following some curious rules:",
- "",
- "",
- "A division consists of $n$ boats (typically 13), placed in order based on past performance.",
- "",
- "All boats within a division start at 40 metre intervals along the river, in order with the highest-placed boat starting furthest upstream.",
- "",
- "The boats all start rowing simultaneously, upstream, trying to catch the boat in front while avoiding being caught by boats behind.",
- "",
- "Each boat continues rowing until either it reaches the finish line or it catches up with (\"bumps\") a boat in front.",
- "",
- "The finish line is a distance $L$ metres (the course length, in reality about 1800 metres) upstream from the starting position of the lowest-placed boat. (Because of the staggered starting positions, higher-placed boats row a slightly shorter course than lower-placed boats.)",
- "",
- "When a \"bump\" occurs, the \"bumping\" boat takes no further part in the race. The \"bumped\" boat must continue, however, and may even be \"bumped\" again by boats that started two or more places behind it.",
- "",
- "After the race, boats are assigned new places within the division, based on the bumps that occurred. Specifically, for any boat $A$ that started in a lower place than $B$, then $A$ will be placed higher than $B$ in the new order if and only if one of the following occurred:",
- " $A$ bumped $B$ directly ",
- " $A$ bumped another boat that went on to bump $B$ ",
- " $A$ bumped another boat, that bumped yet another boat, that bumped $B$ ",
- " etc NOTE: For the purposes of this problem you may disregard the boats' lengths, and assume that a bump occurs precisely when the two boats draw level. (In reality, a bump is awarded as soon as physical contact is made, which usually occurs when there is much less than a full boat length's overlap.)",
- "",
- "",
- "Suppose that, in a particular race, each boat $B_j$ rows at a steady speed $v_j = -$log$X_j$ metres per second, where the $X_j$ are chosen randomly (with uniform distribution) between 0 and 1, independently from one another. These speeds are relative to the riverbank: you may disregard the flow of the river.",
- "",
- "",
- "Let $p(n,L)$ be the probability that the new order is an even permutation of the starting order, when there are $n$ boats in the division and $L$ is the course length.",
- "",
- "",
- "For example, with $n=3$ and $L=160$, labelling the boats as $A$,$B$,$C$ in starting order with $C$ highest, the different possible outcomes of the race are as follows:",
- "",
- " Bumps occurring ",
- " New order ",
- " Permutation ",
- " Probability ",
- " none ",
- " $A$, $B$, $C$ ",
- " even ",
- " $4/15$ ",
- " $B$ bumps $C$ ",
- " $A$, $C$, $B$ ",
- " odd ",
- " $8/45$ ",
- " $A$ bumps $B$ ",
- " $B$, $A$, $C$ ",
- " odd ",
- " $1/3$ ",
- " $B$ bumps $C$, then $A$ bumps $C$ ",
- " $C$, $A$, $B$ ",
- " even ",
- " $4/27$ ",
- " $A$ bumps $B$, then $B$ bumps $C$ ",
- " $C$, $B$, $A$ ",
- " odd ",
- " $2/27$ ",
- "",
- "Therefore, $p(3,160) = 4/15 + 4/27 = 56/135$.",
- "",
- "",
- "You are also given that $p(4,400)=0.5107843137$, rounded to 10 digits after the decimal point.",
- "",
- "",
- "Find $p(13,1800)$ rounded to 10 digits after the decimal point."
- ]
- },
- {
- "id": "5900ff1858d9425c70af4fa8",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 598: Split Divisibilities",
- "tests": [
- "assert.strictEqual(euler598(), TODO: MISSING ANSWER, 'message: euler598() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler598() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler598();"
- ],
- "description": [
- "Consider the number 48.",
- "There are five pairs of integers $a$ and $b$ ($a \\leq b$) such that $a \\times b=48$: (1,48), (2,24), (3,16), (4,12) and (6,8).",
- "It can be seen that both 6 and 8 have 4 divisors.",
- "So of those five pairs one consists of two integers with the same number of divisors.",
- "",
- "In general:",
- "Let $C(n)$ be the number of pairs of positive integers $a \\times b=n$, ($a \\leq b$) such that $a$ and $b$ have the same number of divisors; so $C(48)=1$.",
- "",
- "",
- "You are given $C(10!)=3$: (1680, 2160), (1800, 2016) and (1890,1920). ",
- "Find $C(100!)$"
- ]
- },
- {
- "id": "5900ff1958d9425c70af4fa9",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 599: Distinct Colourings of a Rubik's Cube",
- "tests": [
- "assert.strictEqual(euler599(), TODO: MISSING ANSWER, 'message: euler599() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler599() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler599();"
- ],
- "description": [
- "The well-known Rubik's Cube puzzle has many fascinating mathematical properties. The 2×2×2 variant has 8 cubelets with a total of 24 visible faces, each with a coloured sticker. Successively turning faces will rearrange the cubelets, although not all arrangements of cubelets are reachable without dismantling the puzzle.",
- "",
- "",
- "Suppose that we wish to apply new stickers to a 2×2×2 Rubik's cube in a non-standard colouring. Specifically, we have $n$ different colours available (with an unlimited supply of stickers of each colour), and we place one sticker on each of the 24 faces in any arrangement that we please. We are not required to use all the colours, and if desired the same colour may appear in more than one face of a single cubelet.",
- "",
- "",
- "We say that two such colourings $c_1,c_2$ are essentially distinct if a cube coloured according to $c_1$ cannot be made to match a cube coloured according to $c_2$ by performing mechanically possible Rubik's Cube moves.",
- "",
- "",
- "For example, with two colours available, there are 183 essentially distinct colourings.",
- "",
- "",
- "How many essentially distinct colourings are there with 10 different colours available?"
- ]
- },
- {
- "id": "5900ff1a58d9425c70af4faa",
- "challengeType": 5,
- "type": "bonfire",
- "title": "Problem 600: Integer sided equiangular hexagons",
- "tests": [
- "assert.strictEqual(euler600(), TODO: MISSING ANSWER, 'message: euler600() should return TODO: MISSING ANSWER.');"
- ],
- "solutions": [],
- "translations": {},
- "challengeSeed": [
- "function euler600() {",
- " // Good luck!",
- " return true;",
- "}",
- "",
- "euler600();"
- ],
- "description": [
- "Let H(n) be the number of distinct integer sided equiangular convex hexagons with perimeter not exceeding n.",
- "Hexagons are distinct if and only if they are not congruent.",
- "",
- "You are given H(6) = 1, H(12) = 10, H(100) = 31248.",
- "Find H(55106).",
- "",
- "",
- "Equiangular hexagons with perimeter not exceeding 12"
- ]
- }
-]
\ No newline at end of file
diff --git a/curriculum/requiresTests/rosetta-code-problems.json b/curriculum/requiresTests/rosetta-code-problems.json
deleted file mode 100644
index 456477a4d7..0000000000
--- a/curriculum/requiresTests/rosetta-code-problems.json
+++ /dev/null
@@ -1,38441 +0,0 @@
-[
- {
- "title": "24 game/Solve",
- "type": "Waypoint",
- "description": [
- "task:",
- "
Write a program that takes four digits, either from user input or by random generation, and computes arithmetic expressions following the rules of the 24 game.
Show examples of solutions generated by the program.
In object-oriented programming an object is active when its state depends on clock. Usually an active object encapsulates a task that updates the object's state. To the outer world the object looks like a normal object with methods that can be called from outside. Implementation of such methods must have a certain synchronization mechanism with the encapsulated task in order to prevent object's state corruption.
A typical instance of an active object is an animation widget. The widget state changes with the time, while as an object it has all properties of a normal widget.
The task
Implement an active integrator object. The object has an input and output. The input can be set using the method Input. The input is a function of time. The output can be queried using the method Output. The object integrates its input over the time and the result becomes the object's output. So if the input is K(t) and the output is S, the object state S is changed to S + (K(t1) + K(t0)) * (t1 - t0) / 2, i.e. it integrates K using the trapeze method. Initially K is constant 0 and S is 0.
In order to test the object:
",
- "set its input to sin (2π f t), where the frequency f=0.5Hz. The phase is irrelevant.",
- "wait 2s",
- "set the input to constant 0",
- "wait 0.5s",
- "
Verify that now the object's output is approximately 0 (the sine has the period of 2s). The accuracy of the result will depend on the OS scheduler time slicing and the accuracy of the clock.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "",
- "{{trans|E}}",
- "",
- "function Integrator(sampleIntervalMS) {",
- " var inputF = function () { return 0.0 };",
- " var sum = 0.0;",
- " ",
- " var t1 = new Date().getTime();",
- " var input1 = inputF(t1 / 1000);",
- " ",
- " function update() {",
- " var t2 = new Date().getTime();",
- " var input2 = inputF(t2 / 1000);",
- " var dt = (t2 - t1) / 1000;",
- " ",
- " sum += (input1 + input2) * dt / 2;",
- " ",
- " t1 = t2;",
- " input1 = input2;",
- " }",
- " ",
- " var updater = setInterval(update, sampleIntervalMS);",
- " ",
- " return ({",
- " input: function (newF) { inputF = newF },",
- " output: function () { return sum },",
- " shutdown: function () { clearInterval(updater) },",
- " });",
- "}",
- "",
- "Test program as a HTML fragment:",
- "",
- "
Test running...-
",
- "",
- "",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7d6e",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "function Integrator(sampleIntervalMS) {\n var inputF = function () { return 0.0 };\n var sum = 0.0;\n \n var t1 = new Date().getTime();\n var input1 = inputF(t1 / 1000);\n \n function update() {\n var t2 = new Date().getTime();\n var input2 = inputF(t2 / 1000);\n var dt = (t2 - t1) / 1000;\n \n sum += (input1 + input2) * dt / 2;\n \n t1 = t2;\n input1 = input2;\n }\n \n var updater = setInterval(update, sampleIntervalMS);\n \n return ({\n input: function (newF) { inputF = newF },\n output: function () { return sum },\n shutdown: function () { clearInterval(updater) },\n });\n}\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "AKS test for primes",
- "type": "Waypoint",
- "description": [
- "
The AKS algorithm for testing whether a number is prime is a polynomial-time algorithm based on an elementary theorem about Pascal triangles.
The theorem on which the test is based can be stated as follows:
a number $p$ is prime if and only if all the coefficients of the polynomial expansion of:: $(x-1)^p - (x^p - 1)$",
- "
are divisible by $p$.
",
- "Example:",
- "
Using $p=3$:
(x-1)^3 - (x^3 - 1)
",
- "
= (x^3 - 3x^2 + 3x - 1) - (x^3 - 1)
",
- "
= -3x^2 + 3x
",
- "
And all the coefficients are divisible by 3, so 3 is prime.
",
- "Task:",
- "Create a function/subroutine/method that given $p$ generates the coefficients of the expanded polynomial representation of $(x-1)^p$.",
- "Use the function to show here the polynomial expansions of $(x-1)^p$ for $p$ in the range 0 to at least 7, inclusive.",
- "Use the previous function in creating another function that when given $p$ returns whether $p$ is prime using the theorem.",
- "Use your test to generate a list of all primes under 35.",
- "As a stretch goal, generate all primes under 50 (needs integers larger than 31-bit).References:",
- "Agrawal-Kayal-Saxena (AKS) primality test (Wikipedia) ",
- "Fool-Proof Test for Primes - Numberphile (Video). The accuracy of this video is disputed -- at best it is an oversimplification."
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "{{trans|CoffeeScript}}",
- "var i, p, pascal, primerow, primes, show, _i;",
- "",
- "pascal = function() {",
- " var a;",
- " a = [];",
- " return function() {",
- " var b, i;",
- " if (a.length === 0) {",
- " return a = [1];",
- " } else {",
- " b = (function() {",
- " var _i, _ref, _results;",
- " _results = [];",
- " for (i = _i = 0, _ref = a.length - 1; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {",
- " _results.push(a[i] + a[i + 1]);",
- " }",
- " return _results;",
- " })();",
- " return a = [1].concat(b).concat([1]);",
- " }",
- " };",
- "};",
- "",
- "show = function(a) {",
- " var degree, i, sgn, show_x, str, _i, _ref;",
- " show_x = function(e) {",
- " switch (e) {",
- " case 0:",
- " return \"\";",
- " case 1:",
- " return \"x\";",
- " default:",
- " return \"x^\" + e;",
- " }",
- " };",
- " degree = a.length - 1;",
- " str = \"(x - 1)^\" + degree + \" =\";",
- " sgn = 1;",
- " for (i = _i = 0, _ref = a.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {",
- " str += ' ' + (sgn > 0 ? \"+\" : \"-\") + ' ' + a[i] + show_x(degree - i);",
- " sgn = -sgn;",
- " }",
- " return str;",
- "};",
- "",
- "primerow = function(row) {",
- " var degree;",
- " degree = row.length - 1;",
- " return row.slice(1, degree).every(function(x) {",
- " return x % degree === 0;",
- " });",
- "};",
- "",
- "p = pascal();",
- "",
- "for (i = _i = 0; _i <= 7; i = ++_i) {",
- " console.log(show(p()));",
- "}",
- "",
- "p = pascal();",
- "",
- "p();",
- "",
- "p();",
- "",
- "primes = (function() {",
- " var _j, _results;",
- " _results = [];",
- " for (i = _j = 1; _j <= 49; i = ++_j) {",
- " if (primerow(p())) {",
- " _results.push(i + 1);",
- " }",
- " }",
- " return _results;",
- "})();",
- "",
- "console.log(\"\");",
- "",
- "console.log(\"The primes upto 50 are: \" + primes);",
- "{{out}}",
- "
The Amb operator expresses nondeterminism. This doesn't refer to randomness (as in \"nondeterministic universe\") but is closely related to the term as it is used in automata theory (\"non-deterministic finite automaton\").
The Amb operator takes a variable number of expressions (or values if that's simpler in the language) and yields a correct one which will satisfy a constraint in some future computation, thereby avoiding failure.
Problems whose solution the Amb operator naturally expresses can be approached with other tools, such as explicit nested iterations over data sets, or with pattern matching. By contrast, the Amb operator appears integrated into the language. Invocations of Amb are not wrapped in any visible loops or other search patterns; they appear to be independent.
Essentially Amb(x, y, z) splits the computation into three possible futures: a future in which the value x is yielded, a future in which the value y is yielded and a future in which the value z is yielded. The future which leads to a successful subsequent computation is chosen. The other \"parallel universes\" somehow go away. Amb called with no arguments fails.
For simplicity, one of the domain values usable with Amb may denote failure, if that is convenient. For instance, it is convenient if a Boolean false denotes failure, so that Amb(false) fails, and thus constraints can be expressed using Boolean expressions like Amb(x * y == 8) which unless x and y add to four.
A pseudo-code program which satisfies this constraint might look like:
let x = Amb(1, 2, 3)",
- "let y = Amb(7, 6, 4, 5)",
- "Amb(x * y = 8)",
- "print x, y
The output is 2 4 because Amb(1, 2, 3) correctly chooses the future in which x has value 2, Amb(7, 6, 4, 5) chooses 4 and consequently Amb(x * y = 8) produces a success.
Alternatively, failure could be represented using strictly Amb():
unless x * y = 8 do Amb()
Or else Amb could take the form of two operators or functions: one for producing values and one for enforcing constraints:
let x = Ambsel(1, 2, 3)",
- "let y = Ambsel(4, 5, 6)",
- "Ambassert(x * y = 8)",
- "print x, y
where Ambassert behaves like Amb() if the Boolean expression is false, otherwise it allows the future computation to take place, without yielding any value.
The task is to somehow implement Amb, and demonstrate it with a program which chooses one word from each of the following four sets of character strings to generate a four-word sentence:
The constraint to be satisfied is that the last character of each word (other than the last) is the same as the first character of its successor.
The only successful sentence is \"that thing grows slowly\"; other combinations do not satisfy the constraint and thus fail.
The goal of this task isn't to simply process the four lists of words with explicit, deterministic program flow such as nested iteration, to trivially demonstrate the correct output. The goal is to implement the Amb operator, or a facsimile thereof that is possible within the language limitations.
====
",
- "
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
",
- "
with Ada.Text_IO; use Ada.Text_IO;
procedure Test_Amb is
",
- "
type Alternatives is array (Positive range <>) of Unbounded_String;
type Amb (Count : Positive) is record
",
- "
This : Positive := 1;
",
- "
Left : access Amb;
",
- "
List : Alternatives (1..Count);
",
- "
end record;
function Image (L : Amb) return String is
",
- "
begin
",
- "
return To_String (L.List (L.This));
",
- "
end Image;
function \"/\" (L, R : String) return Amb is
",
- "
Result : Amb (2);
",
- "
begin
",
- "
Append (Result.List (1), L);
",
- "
Append (Result.List (2), R);
",
- "
return Result;
",
- "
end \"/\";
function \"/\" (L : Amb; R : String) return Amb is
",
- "
Result : Amb (L.Count + 1);
",
- "
begin
",
- "
Result.List (1..L.Count) := L.List ;
",
- "
Append (Result.List (Result.Count), R);
",
- "
return Result;
",
- "
end \"/\";
function \"=\" (L, R : Amb) return Boolean is
",
- "
Left : Unbounded_String renames L.List (L.This);
",
- "
begin
",
- "
return Element (Left, Length (Left)) = Element (R.List (R.This), 1);
",
- "
end \"=\";
procedure Failure (L : in out Amb) is
",
- "
begin
",
- "
loop
",
- "
if L.This < L.Count then
",
- "
L.This := L.This + 1;
",
- "
else
",
- "
L.This := 1;
",
- "
Failure (L.Left.all);
",
- "
end if;
",
- "
exit when L.Left = null or else L.Left.all = L;
",
- "
end loop;
",
- "
end Failure;
procedure Join (L : access Amb; R : in out Amb) is
",
- "
begin
",
- "
R.Left := L;
",
- "
while L.all /= R loop
",
- "
Failure (R);
",
- "
end loop;
",
- "
end Join;
W_1 : aliased Amb := \"the\" / \"that\" / \"a\";
",
- "
W_2 : aliased Amb := \"frog\" / \"elephant\" / \"thing\";
",
- "
W_3 : aliased Amb := \"walked\" / \"treaded\" / \"grows\";
Two or more words are said to be anagrams if they have the same characters, but in a different order.
By analogy with derangements we define a deranged anagram as two words with the same characters, but in which the same character does not appear in the same position in both words.
",
- "
Use the word list at unixdict to find and display the longest deranged anagram.
",
- "Permutations/Derangements",
- "Best shuffle"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "",
- "=== Spidermonkey ===",
- "",
- "This example is a little long because ",
- "it tries to emphasize generality and clarity over",
- "brevity.",
- "",
- "#!/usr/bin/env js",
- "",
- "function main() {",
- " var wordList = read('unixdict.txt').split(/\\s+/);",
- " var anagrams = findAnagrams(wordList);",
- " var derangedAnagrams = findDerangedAnagrams(anagrams);",
- " var longestPair = findLongestDerangedPair(derangedAnagrams);",
- " print(longestPair.join(' '));",
- " ",
- "}",
- "",
- "function findLongestDerangedPair(danas) {",
- " var longestLen = danas[0][0].length;",
- " var longestPair = danas[0];",
- " for (var i in danas) {",
- " if (danas[i][0].length > longestLen) {",
- " longestLen = danas[i][0].length;",
- " longestPair = danas[i];",
- " }",
- " }",
- " return longestPair;",
- "}",
- "",
- "function findDerangedAnagrams(anagrams) {",
- " var deranged = [];",
- " ",
- " function isDeranged(w1, w2) {",
- " for (var c = 0; c < w1.length; c++) {",
- " if (w1[c] == w2[c]) {",
- " return false;",
- " }",
- " }",
- " return true;",
- " }",
- "",
- " function findDeranged(anas) {",
- " for (var a = 0; a < anas.length; a++) {",
- " for (var b = a + 1; b < anas.length; b++) {",
- " if (isDeranged(anas[a], anas[b])) {",
- " deranged.push([anas[a], anas[b]]);",
- " } ",
- " }",
- " }",
- " }",
- " ",
- " for (var a in anagrams) {",
- " var anas = anagrams[a];",
- " findDeranged(anas);",
- " }",
- " ",
- " return deranged;",
- "}",
- " ",
- "function findAnagrams(wordList) {",
- " var anagrams = {};",
- "",
- " for (var wordNum in wordList) {",
- " var word = wordList[wordNum];",
- " var key = word.split('').sort().join('');",
- " if (!(key in anagrams)) {",
- " anagrams[key] = [];",
- " }",
- " anagrams[key].push(word);",
- " }",
- "",
- " for (var a in anagrams) {",
- " if (anagrams[a].length < 2) {",
- " delete(anagrams[a]);",
- " }",
- " }",
- "",
- " return anagrams;",
- "}",
- "",
- "main();",
- "",
- "",
- "",
- "{{out}}",
- " excitation intoxicate",
- "",
- "=== Gecko ===",
- "Word file is saved locally because browser won't fetch it cross-site. Tested on Gecko.",
- "Intoxication",
- "",
- "",
- "",
- "{{Out|Output (in a browser window)}}",
- "
intoxicate,excitation
",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7d77",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "#!/usr/bin/env js\n\nfunction main() {\n var wordList = read('unixdict.txt').split(/\\s+/);\n var anagrams = findAnagrams(wordList);\n var derangedAnagrams = findDerangedAnagrams(anagrams);\n var longestPair = findLongestDerangedPair(derangedAnagrams);\n print(longestPair.join(' '));\n \n}\n\nfunction findLongestDerangedPair(danas) {\n var longestLen = danas[0][0].length;\n var longestPair = danas[0];\n for (var i in danas) {\n if (danas[i][0].length > longestLen) {\n longestLen = danas[i][0].length;\n longestPair = danas[i];\n }\n }\n return longestPair;\n}\n\nfunction findDerangedAnagrams(anagrams) {\n var deranged = [];\n \n function isDeranged(w1, w2) {\n for (var c = 0; c < w1.length; c++) {\n if (w1[c] == w2[c]) {\n return false;\n }\n }\n return true;\n }\n\n function findDeranged(anas) {\n for (var a = 0; a < anas.length; a++) {\n for (var b = a + 1; b < anas.length; b++) {\n if (isDeranged(anas[a], anas[b])) {\n deranged.push([anas[a], anas[b]]);\n } \n }\n }\n }\n \n for (var a in anagrams) {\n var anas = anagrams[a];\n findDeranged(anas);\n }\n \n return deranged;\n}\n \nfunction findAnagrams(wordList) {\n var anagrams = {};\n\n for (var wordNum in wordList) {\n var word = wordList[wordNum];\n var key = word.split('').sort().join('');\n if (!(key in anagrams)) {\n anagrams[key] = [];\n }\n anagrams[key].push(word);\n }\n\n for (var a in anagrams) {\n if (anagrams[a].length < 2) {\n delete(anagrams[a]);\n }\n }\n\n return anagrams;\n}\n\nmain();\n\n\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Anagrams",
- "type": "Waypoint",
- "description": [
- "
When two or more words are composed of the same characters, but in a different order, they are called anagrams.
",
- "
Using the word list at http://www.puzzlers.org/pub/wordlists/unixdict.txt,
",
- "find the sets of words that share the same characters that contain the most words in them.",
- ""
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "{{Works with|Node.js}}",
- "var fs = require('fs');",
- "var words = fs.readFileSync('unixdict.txt', 'UTF-8').split('\\n');",
- "",
- "var i, item, max = 0,",
- " anagrams = {};",
- " ",
- "for (i = 0; i < words.length; i += 1) {",
- " var key = words[i].split('').sort().join('');",
- " if (!anagrams.hasOwnProperty(key)) {//check if property exists on current obj only",
- " anagrams[key] = [];",
- " }",
- " var count = anagrams[key].push(words[i]); //push returns new array length",
- " max = Math.max(count, max);",
- "}",
- "",
- "//note, this returns all arrays that match the maximum length",
- "for (item in anagrams) {",
- " if (anagrams.hasOwnProperty(item)) {//check if property exists on current obj only",
- " if (anagrams[item].length === max) {",
- " console.log(anagrams[item].join(' '));",
- " }",
- " }",
- "}",
- "",
- "{{Out}}",
- "
",
- "",
- "==Alternative Using Reduce==",
- "var fs = require('fs');",
- "var dictionary = fs.readFileSync('unixdict.txt', 'UTF-8').split('\\n');",
- "",
- "//group anagrams",
- "var sortedDict = dictionary.reduce(function (acc, word) {",
- " var sortedLetters = word.split('').sort().join('');",
- " if (acc[sortedLetters] === undefined) { acc[sortedLetters] = []; }",
- " acc[sortedLetters].push(word);",
- " return acc;",
- "}, {});",
- "",
- "//sort list by frequency",
- "var keysSortedByFrequency = Object.keys(sortedDict).sort(function (keyA, keyB) {",
- " if (sortedDict[keyA].length < sortedDict[keyB].length) { return 1; }",
- " if (sortedDict[keyA].length > sortedDict[keyB].length) { return -1; }",
- " return 0;",
- "});",
- "",
- "//print first 10 anagrams by frequency",
- "keysSortedByFrequency.slice(0, 10).forEach(function (key) {",
- " console.log(sortedDict[key].join(' '));",
- "});",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7d78",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "var fs = require('fs');\nvar words = fs.readFileSync('unixdict.txt', 'UTF-8').split('\\n');\n\nvar i, item, max = 0,\n anagrams = {};\n \nfor (i = 0; i < words.length; i += 1) {\n var key = words[i].split('').sort().join('');\n if (!anagrams.hasOwnProperty(key)) {//check if property exists on current obj only\n anagrams[key] = [];\n }\n var count = anagrams[key].push(words[i]); //push returns new array length\n max = Math.max(count, max);\n}\n\n//note, this returns all arrays that match the maximum length\nfor (item in anagrams) {\n if (anagrams.hasOwnProperty(item)) {//check if property exists on current obj only\n if (anagrams[item].length === max) {\n console.log(anagrams[item].join(' '));\n }\n }\n}\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Arbitrary-precision integers (included)",
- "type": "Waypoint",
- "description": [
- "
Using the in-built capabilities of your language, calculate the integer value of:
$5^{4^{3^2}}$
Confirm that the first and last twenty digits of the answer are: 62060698786608744707...92256259918212890625",
- " Find and show the number of decimal digits in the answer.",
- "
Note: Do not submit an implementation of arbitrary precision arithmetic. The intention is to show the capabilities of the language as supplied. If a language has a single, overwhelming, library of varied modules that is endorsed by its home site – such as CPAN for Perl or Boost for C++ – then that may be used instead.
",
- "Strictly speaking, this should not be solved by fixed-precision numeric libraries where the precision has to be manually set to a large value; although if this is the only recourse then it may be used with a note explaining that the precision must be set manually to a large enough value.",
- "See also:",
- "Long multiplication",
- "Exponentiation order"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": "null",
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7d7e",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Arithmetic/Complex",
- "type": "Waypoint",
- "description": [
- "
Typically, complex numbers are represented as a pair of real numbers called the \"imaginary part\" and \"real part\", where the imaginary part is the number to be multiplied by $i$.
",
- "Task:",
- "Show addition, multiplication, negation, and inversion of complex numbers in separate functions. (Subtraction and division operations can be made with pairs of these operations.) ",
- "Print the results for each operation tested.",
- "Optional: Show complex conjugation.",
- "
Some languages have complex number libraries available. If your language does, show the operations. If your language does not, also show the definition of this type.
Create a reasonably complete implementation of rational arithmetic in the particular language using the idioms of the language.
",
- "Example:",
- "
Define a new type called frac with binary operator \"//\" of two integers that returns a structure made up of the numerator and the denominator (as per a rational number).
Further define the appropriate rational unary operators abs and '-', with the binary operators for addition '+', subtraction '-', multiplication '×', division '/', integer division '÷', modulo division, the comparison operators (e.g. '<', '≤', '>', & '≥') and equality operators (e.g. '=' & '≠').
Define standard coercion operators for casting int to frac etc.
If space allows, define standard increment and decrement operators (e.g. '+:=' & '-:=' etc.).
Finally test the operators:
",
- "
Use the new type frac to find all perfect numbers less than 219 by summing the reciprocal of the factors.
Create a stateful function/class/instance that takes a period and returns a routine that takes a number as argument and returns a simple moving average of its arguments so far.
",
- "
A simple moving average is a method for computing an average of a stream of numbers by only averaging the last P numbers from the stream, where P is known as the period.
It can be implemented by calling an initialing routine with P as its argument, I(P), which should then return a routine that when called with individual, successive members of a stream of numbers, computes the mean of (up to), the last P of them, lets call this SMA().
The word stateful in the task description refers to the need for SMA() to remember certain information between calls to it:
",
- " The period, P",
- " An ordered container of at least the last P numbers from each of its individual calls.",
- "
Stateful also means that successive calls to I(), the initializer, should return separate routines that do not share saved state so they could be used on two independent streams of data.
Pseudo-code for an implementation of SMA is:
",
- "
",
- "function SMA(number: N):",
- " stateful integer: P",
- " stateful list: stream",
- " number: average stream.append_last(N)",
- " if stream.length() > P:",
- " # Only average the last P elements of the stream",
- " stream.delete_first()",
- " if stream.length() == 0:",
- " average = 0",
- " else: ",
- " average = sum( stream.values() ) / stream.length()",
- " return average",
- "
",
- ""
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "===Using for loop===",
- "function simple_moving_averager(period) {",
- " var nums = [];",
- " return function(num) {",
- " nums.push(num);",
- " if (nums.length > period)",
- " nums.splice(0,1); // remove the first element of the array",
- " var sum = 0;",
- " for (var i in nums)",
- " sum += nums[i];",
- " var n = period;",
- " if (nums.length < period)",
- " n = nums.length;",
- " return(sum/n);",
- " }",
- "}",
- "",
- "var sma3 = simple_moving_averager(3);",
- "var sma5 = simple_moving_averager(5);",
- "var data = [1,2,3,4,5,5,4,3,2,1];",
- "for (var i in data) {",
- " var n = data[i];",
- " // using WSH",
- " WScript.Echo(\"Next number = \" + n + \", SMA_3 = \" + sma3(n) + \", SMA_5 = \" + sma5(n));",
- "}",
- "{{out}}",
- "
Next number = 1, SMA_3 = 1, SMA_5 = 1",
- "Next number = 2, SMA_3 = 1.5, SMA_5 = 1.5",
- "Next number = 3, SMA_3 = 2, SMA_5 = 2",
- "Next number = 4, SMA_3 = 3, SMA_5 = 2.5",
- "Next number = 5, SMA_3 = 4, SMA_5 = 3",
- "Next number = 5, SMA_3 = 4.666666666666667, SMA_5 = 3.8",
- "Next number = 4, SMA_3 = 4.666666666666667, SMA_5 = 4.2",
- "Next number = 3, SMA_3 = 4, SMA_5 = 4.2",
- "Next number = 2, SMA_3 = 3, SMA_5 = 3.8",
- "Next number = 1, SMA_3 = 2, SMA_5 = 3
",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7d96",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "function simple_moving_averager(period) {\n var nums = [];\n return function(num) {\n nums.push(num);\n if (nums.length > period)\n nums.splice(0,1); // remove the first element of the array\n var sum = 0;\n for (var i in nums)\n sum += nums[i];\n var n = period;\n if (nums.length < period)\n n = nums.length;\n return(sum/n);\n }\n}\n\nvar sma3 = simple_moving_averager(3);\nvar sma5 = simple_moving_averager(5);\nvar data = [1,2,3,4,5,5,4,3,2,1];\nfor (var i in data) {\n var n = data[i];\n // using WSH\n WScript.Echo(\"Next number = \" + n + \", SMA_3 = \" + sma3(n) + \", SMA_5 = \" + sma5(n));\n}\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Best shuffle",
- "type": "Waypoint",
- "description": [
- "Task:",
- "
Shuffle the characters of a string in such a way that as many of the character values are in a different position as possible.
A shuffle that produces a randomized result among the best choices is to be preferred. A deterministic approach that produces the same sequence every time is acceptable as an alternative.
Display the result as follows:
original string, shuffled string, (score)
The score gives the number of positions whose character value did not change.
",
- "Example:",
- "
tree, eetr, (0)
",
- "Test cases:",
- "
abracadabra
",
- "
seesaw
",
- "
elk
",
- "
grrrrrr
",
- "
up
",
- "
a
",
- "Related tasks",
- " Anagrams/Deranged anagrams",
- " Permutations/Derangements"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "",
- "Based on the J implementation (and this would be a lot more concise if we used something like jQuery):",
- "",
- "function raze(a) { // like .join('') except producing an array instead of a string",
- " var r= [];",
- " for (var j= 0; j",
- "",
- "Example:",
- "",
- "",
- "",
- "",
- "Produced:",
- "
Write a routine to perform a bitwise AND, OR, and XOR on two integers, a bitwise NOT on the first integer, a left shift, right shift, right arithmetic shift, left rotate, and right rotate.
All shifts and rotates should be done on the first integer with a shift/rotate amount of the second integer.
If any operation is not available in your language, note it.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "There are no integers in Javascript, but there are still bitwise operators. They will convert their number operands into integers before performing they task. In other languages, these operators are very close to the hardware and very fast. In JavaScript, they are very far from the hardware and very slow and rarely used.",
- "",
- "function bitwise(a, b){",
- " alert(\"a AND b: \" + (a & b));",
- " alert(\"a OR b: \"+ (a | b));",
- " alert(\"a XOR b: \"+ (a ^ b));",
- " alert(\"NOT a: \" + ~a);",
- " alert(\"a << b: \" + (a << b)); // left shift",
- " alert(\"a >> b: \" + (a >> b)); // arithmetic right shift",
- " alert(\"a >>> b: \" + (a >>> b)); // logical right shift",
- "}",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7db0",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "function bitwise(a, b){\n alert(\"a AND b: \" + (a & b));\n alert(\"a OR b: \"+ (a | b));\n alert(\"a XOR b: \"+ (a ^ b));\n alert(\"NOT a: \" + ~a);\n alert(\"a << b: \" + (a << b)); // left shift\n alert(\"a >> b: \" + (a >> b)); // arithmetic right shift\n alert(\"a >>> b: \" + (a >>> b)); // logical right shift\n}\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Brace expansion",
- "type": "Waypoint",
- "description": [
- "
Brace expansion is a type of parameter expansion made popular by Unix shells, where it allows users to specify multiple similar string parameters without having to type them all out. E.g. the parameter enable_{audio,video} would be interpreted as if both enable_audio and enable_video had been specified.
",
- "
Write a function that can perform brace expansion on any input string, according to the following specification.
",
- "
Demonstrate how it would be used, and that it passes the four test cases given below.
",
- "
In the input string, balanced pairs of braces containing comma-separated substrings (details below) represent alternations that specify multiple alternatives which are to appear at that position in the output. In general, one can imagine the information conveyed by the input string as a tree of nested alternations interspersed with literal substrings, as shown in the middle part of the following diagram:
",
- "
",
- "It{{em,alic}iz,erat}e{d,}",
- "
",
- "parse―――――▶",
- "
",
- "
",
- "
",
- "
It
",
- "
",
- "
",
- "
",
- "
",
- "
⎧⎨⎩
",
- "
",
- "
",
- "
",
- "
",
- "
",
- "
⎧⎨⎩
",
- "
",
- "
em
",
- "
",
- "
⎫⎬⎭
",
- "
",
- "
",
- "
alic
",
- "
",
- "
",
- "
",
- "
iz
",
- "
",
- "
",
- "
⎫⎬⎭
",
- "
",
- "
",
- "
erat
",
- "
",
- "
",
- "
e
",
- "
",
- "
",
- "
",
- "
",
- "
⎧⎨⎩
",
- "
",
- "
d
",
- "
",
- "
⎫⎬⎭
",
- "
",
- "
",
- "
",
- "
",
- "
",
- "
",
- "
",
- "
",
- "expand―――――▶",
- "
ItemizedItemizeItalicizedItalicize",
- "
IteratedIterate
",
- "
",
- "
",
- "
input string
",
- "
",
- "
alternation tree
",
- "
",
- "
output (list of strings)
",
- "
",
- "
This tree can in turn be transformed into the intended list of output strings by, colloquially speaking, determining all the possible ways to walk through it from left to right while only descending into one branch of each alternation one comes across (see the right part of the diagram). When implementing it, one can of course combine the parsing and expansion into a single algorithm, but this specification discusses them separately for the sake of clarity.
Expansion of alternations can be more rigorously described by these rules:
",
- "
",
- "
",
- "
",
- "
",
- "
a
",
- "
",
- "
",
- "
",
- "
",
- "
⎧⎨⎩
",
- "
",
- "
2
",
- "
",
- "
⎫⎬⎭
",
- "
",
- "
",
- "
1
",
- "
",
- "
",
- "
b
",
- "
",
- "
",
- "
",
- "
",
- "
⎧⎨⎩
",
- "
",
- "
X
",
- "
",
- "
⎫⎬⎭
",
- "
",
- "
",
- "
Y
",
- "
X
",
- "
",
- "
",
- "
c
",
- "
",
- "
",
- "
",
- "
⟶
",
- "
",
- "
a2bXc
",
- "
a2bYc
",
- "
a2bXc
",
- "
a1bXc
",
- "
a1bYc
",
- "
a1bXc
",
- "
",
- "
",
- "",
- "
An alternation causes the list of alternatives that will be produced by its parent branch to be increased 𝑛-fold, each copy featuring one of the 𝑛 alternatives produced by the alternation's child branches, in turn, at that position.
",
- "
This means that multiple alternations inside the same branch are cumulative (i.e. the complete list of alternatives produced by a branch is the string-concatenating \"Cartesian product\" of its parts).
",
- "
All alternatives (even duplicate and empty ones) are preserved, and they are ordered like the examples demonstrate (i.e. \"lexicographically\" with regard to the alternations).
",
- "
The alternatives produced by the root branch constitute the final output.
",
- "
Parsing the input string involves some additional complexity to deal with escaped characters and \"incomplete\" brace pairs:
",
- "
",
- "
a\\\\{\\\\\\{b,c\\,d}
",
- "
⟶
",
- "
",
- "
a\\\\
",
- "
",
- "
",
- "
",
- "
",
- "
⎧⎨⎩
",
- "
",
- "
\\\\\\{b
",
- "
",
- "
⎫⎬⎭
",
- "
",
- "
",
- "
c\\,d
",
- "
",
- "
",
- "
",
- "
",
- "
",
- "
{a,b{c{,{d}}e}f
",
- "
⟶
",
- "
",
- "
",
- "
{a,b{c
",
- "
",
- "
",
- "
",
- "
",
- "
⎧⎨⎩
",
- "
",
- "
",
- "
",
- "
⎫⎬⎭
",
- "
",
- "
",
- "
{d}
",
- "
",
- "
",
- "
e}f
",
- "
",
- "
",
- "
",
- "",
- "
An unescaped backslash which precedes another character, escapes that character (to force it to be treated as literal). The backslashes are passed along to the output unchanged.
",
- "
Balanced brace pairs are identified by, conceptually, going through the string from left to right and associating each unescaped closing brace that is encountered with the nearest still unassociated unescaped opening brace to its left (if any). Furthermore, each unescaped comma is associated with the innermost brace pair that contains it (if any). With that in mind:
",
- "
Each brace pair that has at least one comma associated with it, forms an alternation (whose branches are the brace pair's contents split at its commas). The associated brace and comma characters themselves do not become part of the output.
",
- "
Brace characters from pairs without any associated comma, as well as unassociated brace and comma characters, as well as all characters that are not covered by the preceding rules, are instead treated as literals.
",
- "
For every possible input string, your implementation should produce exactly the output which this specification mandates. Please comply with this even when it's inconvenient, to ensure that all implementations are comparable. However, none of the above should be interpreted as instructions (or even recommendations) for how to implement it. Try to come up with a solution that is idiomatic in your programming language. (See #Perl for a reference implementation.)
",
- "
{| style=\"white-space: nowrap;\"
",
- "
|-
",
- "
! Input(single string)
",
- "
! Output(list/array of strings)
",
- "
|- style=\"vertical-align:top\"
",
- "
|
",
- "
~/{Downloads,Pictures}/*.{jpg,gif,png}
",
- "
|
",
- "
~/Downloads/*.jpg
",
- "
~/Downloads/*.gif
",
- "
~/Downloads/*.png
",
- "
~/Pictures/*.jpg
",
- "
~/Pictures/*.gif
",
- "
~/Pictures/*.png
",
- "
|- style=\"vertical-align:top\"
",
- "
|
",
- "
It{{em,alic}iz,erat}e{d,}, please.
",
- "
|
",
- "
Itemized, please.
",
- "
Itemize, please.
",
- "
Italicized, please.
",
- "
Italicize, please.
",
- "
Iterated, please.
",
- "
Iterate, please.
",
- "
|- style=\"vertical-align:top\"
",
- "
|
",
- "
{,{,gotta have{ ,\\, again\\, }}more }cowbell!
",
- "
|
",
- "
cowbell!
",
- "
more cowbell!
",
- "
gotta have more cowbell!
",
- "
gotta have\\, again\\, more cowbell!
",
- "
|- style=\"vertical-align:top\"
",
- "
|
",
- "
{}} some }{,{\\\\{ edge, edge} \\,}{ cases, {here} \\\\\\\\\\}
",
- "
|
",
- "
{}} some }{,{\\\\ edge \\,}{ cases, {here} \\\\\\\\\\}
",
- "
{}} some }{,{\\\\ edge \\,}{ cases, {here} \\\\\\\\\\}
",
- "
|}
",
- ""
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "",
- "===ES5 Functional===",
- "",
- "Without importing Node.js libraries, JavaScript doesn't immediately have access to anything like Haskell's Parsec, but using a functional idiom of JavaScript, and emphasising clarity more than optimisation, we can separate out the tokenizing from the parsing, and the parsing from the generation of strings, to build a function which:",
- ":#returns the set of expansions for each brace expression, and ",
- ":#logs a pretty-printed abstract syntax tree for each expression to the console (in a JSON format).",
- "",
- "Each node of the parse tree consists of one of two simple functions (AND: syntagmatic concatenation, OR: flattening of paradigms) with a set of arguments, each of which may be a plain string or an AND or OR subtree. The expansions are derived by evaluating the parse tree as an expression.",
- "",
- "(function () {",
- " 'use strict'",
- "",
- " // Index of any closing brace matching the opening brace at iPosn",
- " // with the indices of any immediately-enclosed commas",
- " function bracePair(tkns, iPosn, iNest, lstCommas) {",
- " if (iPosn >= tkns.length || iPosn < 0) return null;",
- "",
- " var t = tkns[iPosn],",
- " n = (t === '{') ? iNest + 1 : (t === '}' ? iNest - 1 : iNest),",
- " lst = (t === ',' && iNest === 1) ? lstCommas.concat(iPosn) : lstCommas;",
- "",
- " return n ? bracePair(tkns, iPosn + 1, n, lst) : {",
- " close: iPosn,",
- " commas: lst",
- " };",
- " }",
- "",
- " // Parse of a SYNTAGM subtree",
- " function andTree(dctSofar, tkns) {",
- " if (!tkns.length) return [dctSofar, []];",
- "",
- " var dctParse = dctSofar ? dctSofar : {",
- " fn: and,",
- " args: []",
- " },",
- "",
- " head = tkns[0],",
- " tail = head ? tkns.slice(1) : [],",
- "",
- " dctBrace = head === '{' ? bracePair(",
- " tkns, 0, 0, []",
- " ) : null,",
- "",
- " lstOR = dctBrace && dctBrace.close && dctBrace.commas.length ? (",
- " splitAt(dctBrace.close + 1, tkns)",
- " ) : null;",
- "",
- " return andTree({",
- " fn: and,",
- " args: dctParse.args.concat(",
- " lstOR ? orTree(dctParse, lstOR[0], dctBrace.commas) : head",
- " )",
- " }, lstOR ? lstOR[1] : tail);",
- " }",
- "",
- " // Parse of a PARADIGM subtree",
- " function orTree(dctSofar, tkns, lstCommas) {",
- " if (!tkns.length) return [dctSofar, []];",
- " var iLast = lstCommas.length;",
- "",
- " return {",
- " fn: or,",
- " args: splitsAt(",
- " lstCommas, tkns",
- " ).map(function (x, i) {",
- " var ts = x.slice(1, i === iLast ? -1 : void 0);",
- "",
- " return ts.length ? ts : [''];",
- " }).map(function (ts) {",
- " return ts.length > 1 ? andTree(null, ts)[0] : ts[0];",
- " })",
- " };",
- " }",
- "",
- " // List of unescaped braces and commas, and remaining strings",
- " function tokens(str) {",
- " // Filter function excludes empty splitting artefacts",
- " var toS = function (x) {",
- " return x.toString();",
- " };",
- "",
- " return str.split(/(\\\\\\\\)/).filter(toS).reduce(function (a, s) {",
- " return a.concat(s.charAt(0) === '\\\\' ? s : s.split(",
- " /(\\\\*[{,}])/",
- " ).filter(toS));",
- " }, []);",
- " }",
- "",
- " // PARSE TREE OPERATOR (1 of 2)",
- " // Each possible head * each possible tail",
- " function and(args) {",
- " var lng = args.length,",
- " head = lng ? args[0] : null,",
- " lstHead = \"string\" === typeof head ? [head] : head;",
- "",
- " return lng ? (",
- " 1 < lng ? lstHead.reduce(function (a, h) {",
- " return a.concat(and(args.slice(1)).map(function (t) {",
- " return h + t;",
- " }));",
- " }, []) : lstHead",
- " ) : [];",
- " }",
- "",
- " // PARSE TREE OPERATOR (2 of 2)",
- " // Each option flattened",
- " function or(args) {",
- " return args.reduce(function (a, b) {",
- " return a.concat(b);",
- " }, []);",
- " }",
- "",
- " // One list split into two (first sublist length n)",
- " function splitAt(n, lst) {",
- " return n < lst.length + 1 ? [lst.slice(0, n), lst.slice(n)] : [lst, []];",
- " }",
- "",
- " // One list split into several (sublist lengths [n])",
- " function splitsAt(lstN, lst) {",
- " return lstN.reduceRight(function (a, x) {",
- " return splitAt(x, a[0]).concat(a.slice(1));",
- " }, [lst]);",
- " }",
- "",
- " // Value of the parse tree",
- " function evaluated(e) {",
- " return typeof e === 'string' ? e :",
- " e.fn(e.args.map(evaluated));",
- " }",
- "",
- " // JSON prettyprint (for parse tree, token list etc)",
- " function pp(e) {",
- " return JSON.stringify(e, function (k, v) {",
- " return typeof v === 'function' ? (",
- " '[function ' + v.name + ']'",
- " ) : v;",
- " }, 2)",
- " }",
- "",
- "",
- " // MAIN",
- "",
- " // s -> [s]",
- " function expansions(s) {",
- " // BRACE EXPRESSION PARSED",
- " var dctParse = andTree(null, tokens(s))[0];",
- "",
- " // ABSTRACT SYNTAX TREE LOGGED",
- " console.log(pp(dctParse));",
- "",
- " // AST EVALUATED TO LIST OF STRINGS",
- " return evaluated(dctParse);",
- " }",
- "",
- "",
- " // Sample expressions, double-escaped for quotation in source code.",
- " var lstTests = [",
- " '~/{Downloads,Pictures}/*.{jpg,gif,png}',",
- " 'It{{em,alic}iz,erat}e{d,}, please.',",
- " '{,{,gotta have{ ,\\\\, again\\\\, }}more }cowbell!',",
- " '{}} some }{,{\\\\\\\\{ edge, edge} \\\\,}{ cases, {here} \\\\\\\\\\\\\\\\\\\\}'",
- " ];",
- "",
- "",
- " // 1. Return each expression with an indented list of its expansions, while",
- " // 2. logging each parse tree to the console.log() stream",
- "",
- " return lstTests.map(function (s) {",
- " return s + '\\n\\n' + expansions(s).map(function (x) {",
- " return ' ' + x;",
- " }).join('\\n');",
- " }).join('\\n\\n');",
- "",
- "})();",
- "",
- "Value returned by function:",
- "",
- "
Also demonstrate, using your function/method, that the product of an empty list with any other list is empty.
",
- "
: {1, 2} × {} = {}
",
- "
: {} × {1, 2} = {}
For extra credit, show or write a function returning the n-ary product of an arbitrary number of lists, each of arbitrary length. Your function might, for example, accept a single argument which is itself a list of lists, and return the n-ary product of those lists.
Write a procedure (say $\\mathit{co9}(x)$) which implements Casting Out Nines as described by returning the checksum for $x$. Demonstrate the procedure using the examples given there, or others you may consider lucky.
Part 2",
- "
Notwithstanding past Intel microcode errors, checking computer calculations like this would not be sensible. To find a computer use for your procedure:
note that $318682$ has the same checksum as ($101558 + 217124$);
",
- "
note that $101558217124$ has the same checksum as ($101558 + 217124$) because for a Kaprekar they are made up of the same digits (sometimes with extra zeroes);
",
- "
note that this implies that for Kaprekar numbers the checksum of $k$ equals the checksum of $k^2$.
Demonstrate that your procedure can be used to generate or filter a range of numbers with the property $\\mathit{co9}(k) = \\mathit{co9}(k^2)$ and show that this subset is a small proportion of the range and contains all the Kaprekar in the range.
Part 3",
- "
Considering this MathWorld page, produce a efficient algorithm based on the more mathematical treatment of Casting Out Nines, and realizing:
",
- "
$\\mathit{co9}(x)$ is the residual of $x$ mod $9$;
",
- "
the procedure can be extended to bases other than 9.
Demonstrate your algorithm by generating or filtering a range of numbers with the property $k%(\\mathit{Base}-1) == (k^2)%(\\mathit{Base}-1)$ and show that this subset is a small proportion of the range and contains all the Kaprekar in the range.
')\n\n function castOutNine() {\n for (var n = s, k = 0, bsm1 = bs - 1; n <= e; n += 1)\n if (n % bsm1 == (n * n) % bsm1) k += 1,\n document.write(toString(n), ' ')\n document.write(' trying ', k, ' numbers instead of ', n = e - s + 1,\n ' numbers saves ', (100 - k / n * 100)\n .toFixed(3), '%')\n }\n\n function kaprekar() {\n for (var n = s; n <= e; n += 1)\n if (isKaprekar(n)) document.write(toString(n), ' ')\n\n function isKaprekar(n) {\n if (n < 1) return false\n if (n == 1) return true\n var s = (n * n)\n .toString(bs)\n for (var i = 1, e = s.length; i < e; i += 1) {\n var a = parseInt(s.substr(0, i), bs)\n var b = parseInt(s.substr(i), bs)\n if (b && a + b == n) return true\n }\n return false\n }\n }\n\n function toString(n) {\n return n.toString(pbs)\n .toUpperCase()\n }\n}\nmain(1, 10 * 10 - 1)\nmain(1, 16 * 16 - 1, 16)\nmain(1, 17 * 17 - 1, 17)\nmain(parseInt('10', 17), parseInt('gg', 17), 17, 17)\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Combinations with repetitions",
- "type": "Waypoint",
- "description": [
- "
The set of combinations with repetitions is computed from a set, $S$ (of cardinality $n$), and a size of resulting selection, $k$, by reporting the sets of cardinality $k$ where each member of those sets is chosen from $S$.
",
- "
In the real world, it is about choosing sets where there is a “large” supply of each type of element and where the order of choice does not matter.
",
- "
For example:
",
- "
Q: How many ways can a person choose two doughnuts from a store selling three types of doughnut: iced, jam, and plain? (i.e., $S$ is $\\{\\mathrm{iced}, \\mathrm{jam}, \\mathrm{plain}\\}$, $|S| = 3$, and $k = 2$.)
Note that both the order of items within a pair, and the order of the pairs given in the answer is not significant; the pairs represent multisets.
",
- "Also note that doughnut can also be spelled donut. ",
- "Task:",
- "Write a function/program/routine/.. to generate all the combinations with repetitions of $n$ types of things taken $k$ at a time and use it to show an answer to the doughnut example above.",
- "For extra credit, use the function to compute and show just the number of ways of choosing three doughnuts from a choice of ten types of doughnut. Do not show the individual choices for this part.References:",
- "k-combination with repetitionsSee also:"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "===ES5===",
- "====Imperative====",
- "Donuts",
- "",
- "{{out}}",
- "
The Game of Life is a cellular automaton devised by the British mathematician John Horton Conway in 1970. It is the best-known example of a cellular automaton.
A cell C is represented by a 1 when alive, or 0 when dead, in an m-by-m (or m×m) square array of cells.
We calculate N - the sum of live cells in C's eight-location neighbourhood, then cell C is alive or dead in the next generation based on the following table:
",
- "
C N new C
",
- "
1 0,1 -> 0 # Lonely
",
- "
1 4,5,6,7,8 -> 0 # Overcrowded
",
- "
1 2,3 -> 1 # Lives
",
- "
0 3 -> 1 # It takes three to give birth!
",
- "
0 0,1,2,4,5,6,7,8 -> 0 # Barren
Assume cells beyond the boundary are always dead.
The \"game\" is actually a zero-player game, meaning that its evolution is determined by its initial state, needing no input from human players. One interacts with the Game of Life by creating an initial configuration and observing how it evolves.
",
- "Task:",
- "
Although you should test your implementation on more complex examples such as the glider in a larger universe, show the action of the blinker (three adjoining cells in a row all alive), over three generations, in a 3 by 3 grid.
",
- "References:",
- " Its creator John Conway, explains the game of life. Video from numberphile on youtube.",
- " John Conway Inventing Game of Life - Numberphile video.See also:",
- " Langton's ant - another well known cellular automaton."
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "{{works with|SpiderMonkey}}",
- "{{works with|V8}}",
- "function GameOfLife () {",
- "",
- "\tthis.init = function (turns,width,height) {",
- "\t\tthis.board = new Array(height);",
- "\t\tfor (var x = 0; x < height; x++) {",
- "\t\t\tthis.board[x] = new Array(width);",
- "\t\t\tfor (var y = 0; y < width; y++) {",
- "\t\t\t\tthis.board[x][y] = Math.round(Math.random());",
- "\t\t\t}",
- "\t\t}",
- "\t\tthis.turns = turns;",
- "\t}",
- "",
- "\tthis.nextGen = function() {",
- "\t\tthis.boardNext = new Array(this.board.length);",
- "\t\tfor (var i = 0; i < this.board.length; i++) {",
- "\t\t\tthis.boardNext[i] = new Array(this.board[i].length);",
- "\t\t}",
- "\t\tfor (var x = 0; x < this.board.length; x++) {",
- "\t\t\tfor (var y = 0; y < this.board[x].length; y++) {",
- "\t\t\t\tvar n = 0;",
- "\t\t\t\tfor (var dx = -1; dx <= 1; dx++) {",
- "\t\t\t\t\tfor (var dy = -1; dy <= 1; dy++) {",
- "\t\t\t\t\t\tif ( dx == 0 && dy == 0){}",
- "\t\t\t\t\t\telse if (typeof this.board[x+dx] !== 'undefined'",
- "\t\t\t\t\t\t\t\t&& typeof this.board[x+dx][y+dy] !== 'undefined'",
- "\t\t\t\t\t\t\t\t&& this.board[x+dx][y+dy]) {",
- "\t\t\t\t\t\t\tn++;",
- "\t\t\t\t\t\t}",
- "\t\t\t\t\t}\t",
- "\t\t\t\t}",
- "\t\t\t\tvar c = this.board[x][y];",
- "\t\t\t\tswitch (n) {",
- "\t\t\t\t\tcase 0:",
- "\t\t\t\t\tcase 1:",
- "\t\t\t\t\t\tc = 0;",
- "\t\t\t\t\t\tbreak;",
- "\t\t\t\t\tcase 2:",
- "\t\t\t\t\t\tbreak; ",
- "\t\t\t\t\tcase 3:",
- "\t\t\t\t\t\tc = 1;",
- "\t\t\t\t\t\tbreak;",
- "\t\t\t\t\tdefault:",
- "\t\t\t\t\t\tc = 0;",
- "\t\t\t\t}",
- "\t\t\t\tthis.boardNext[x][y] = c;",
- "\t\t\t}",
- "\t\t}",
- "\t\tthis.board = this.boardNext.slice();",
- "\t}",
- "",
- "\tthis.print = function() {",
- "\t\tfor (var x = 0; x < this.board.length; x++) {",
- "\t\t\tvar l = \"\";",
- "\t\t\tfor (var y = 0; y < this.board[x].length; y++) {",
- "\t\t\t\tif (this.board[x][y])",
- "\t\t\t\t\tl += \"X\";",
- "\t\t\t\telse",
- "\t\t\t\t\tl += \" \";",
- "\t\t\t}",
- "\t\t\tprint(l);",
- "\t\t}",
- "\t}",
- "",
- "\tthis.start = function() {",
- "\t\tfor (var t = 0; t < this.turns; t++) {",
- "\t\t\tprint(\"---\\nTurn \"+(t+1));",
- "\t\t\tthis.print();",
- "\t\t\tthis.nextGen()",
- "\t\t}",
- "\t}",
- "",
- "}",
- "",
- "",
- "var game = new GameOfLife();",
- "",
- "print(\"---\\n3x3 Blinker over three turns.\");",
- "game.init(3);",
- "game.board = [",
- "\t[0,0,0],",
- "\t[1,1,1],",
- "\t[0,0,0]];",
- "game.start();",
- "",
- "print(\"---\\n10x6 Glider over five turns.\");",
- "game.init(5);",
- "game.board = [",
- "\t[0,0,0,0,0,0,0,0,0,0],",
- "\t[0,0,1,0,0,0,0,0,0,0],",
- "\t[0,0,0,1,0,0,0,0,0,0],",
- "\t[0,1,1,1,0,0,0,0,0,0],",
- "\t[0,0,0,0,0,0,0,0,0,0],",
- "\t[0,0,0,0,0,0,0,0,0,0]];",
- "game.start();",
- "",
- "print(\"---\\nRandom 5x10\");",
- "game.init(5,5,10);",
- "game.start();",
- "{{out}}",
- "
Write a stateful function, class, generator or co-routine that takes a series of floating point numbers, one at a time, and returns the running standard deviation of the series.
The task implementation should use the most natural programming style of those listed for the function in the implementation language; the task must state which is being used.
Do not apply Bessel's correction; the returned standard deviation should always be computed as if the sample seen so far is the entire population.
Use this to compute the standard deviation of this demonstration set, $\\{2, 4, 4, 4, 5, 5, 7, 9\\}$, which is $2$.
Create a simple demonstrative example of Currying in the specific language.
Add any historic details as to how the feature made its way into the language.
",
- ""
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "",
- "===ES5===",
- "",
- "====Partial application====",
- " function addN(n) {",
- " var curry = function(x) {",
- " return x + n;",
- " };",
- " return curry;",
- " }",
- "",
- " add2 = addN(2);",
- " alert(add2);",
- " alert(add2(7));",
- "",
- "====Generic currying====",
- "",
- "Basic case - returning a curried version of a function of two arguments",
- "",
- "(function () {",
- "",
- " // curry :: ((a, b) -> c) -> a -> b -> c",
- " function curry(f) {",
- " return function (a) {",
- " return function (b) {",
- " return f(a, b);",
- " };",
- " };",
- " }",
- "",
- "",
- " // TESTS",
- "",
- " // product :: Num -> Num -> Num",
- " function product(a, b) {",
- " return a * b;",
- " }",
- "",
- " // return typeof curry(product);",
- " // --> function",
- "",
- " // return typeof curry(product)(7)",
- " // --> function",
- "",
- " //return typeof curry(product)(7)(9)",
- " // --> number",
- "",
- " return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]",
- " .map(curry(product)(7))",
- "",
- " // [7, 14, 21, 28, 35, 42, 49, 56, 63, 70]",
- "",
- "})();",
- "",
- "",
- "{{Out}}",
- "[7, 14, 21, 28, 35, 42, 49, 56, 63, 70]",
- "",
- "",
- "Functions of arbitrary arity can also be curried:",
- "",
- "(function () {",
- "",
- " // (arbitrary arity to fully curried)",
- " // extraCurry :: Function -> Function",
- " function extraCurry(f) {",
- "",
- " // Recursive currying",
- " function _curry(xs) {",
- " return xs.length >= intArgs ? (",
- " f.apply(null, xs)",
- " ) : function () {",
- " return _curry(xs.concat([].slice.apply(arguments)));",
- " };",
- " }",
- "",
- " var intArgs = f.length;",
- "",
- " return _curry([].slice.call(arguments, 1));",
- " }",
- "",
- "",
- " // TEST",
- "",
- " // product3:: Num -> Num -> Num -> Num",
- " function product3(a, b, c) {",
- " return a * b * c;",
- " }",
- "",
- " return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]",
- " .map(extraCurry(product3)(7)(2))",
- "",
- " // [14, 28, 42, 56, 70, 84, 98, 112, 126, 140]",
- "",
- "})();",
- "",
- "{{Out}}",
- "[14, 28, 42, 56, 70, 84, 98, 112, 126, 140]",
- "",
- "===ES6===",
- "",
- "====Y combinator====",
- "Using a definition of currying that does not imply partial application, only conversion of a function of multiple arguments, e.g.: (a,b) => expr_using_a_and_binto a function that takes a series of as many function applications as that function took arguments, e.g.:a => b => expr_using_a_and_b",
- "",
- "One version for functions of a set amount of arguments that takes no rest arguments, and one version for functions with rest argument. The caveat being that if the rest argument would be empty, it still requires a separate application, and multiple rest arguments cannot be curried into multiple applications, since we have to figure out the number of applications from the function signature, not the amount of arguments the user might want to send it.",
- "let",
- " fix = // This is a variant of the Applicative order Y combinator",
- " f => (f => f(f))(g => f((...a) => g(g)(...a))),",
- " curry =",
- " f => (",
- " fix(",
- " z => (n,...a) => (",
- " n>0",
- " ?b => z(n-1,...a,b)",
- " :f(...a)))",
- " (f.length)),",
- " curryrest =",
- " f => (",
- " fix(",
- " z => (n,...a) => (",
- " n>0",
- " ?b => z(n-1,...a,b)",
- " :(...b) => f(...a,...b)))",
- " (f.length)),",
- " curriedmax=curry(Math.max),",
- " curryrestedmax=curryrest(Math.max);",
- "print(curriedmax(8)(4),curryrestedmax(8)(4)(),curryrestedmax(8)(4)(9,7,2));",
- "// 8,8,9",
- "",
- "Neither of these handle propagation of the this value for methods, as ECMAScript 2015 (ES6) fat arrow syntax doesn't allow for this value propagation. Versions could easily be written for those cases using an outer regular function expression and use of Function.prototype.call or Function.prototype.apply. Use of Y combinator could also be removed through use of an inner named function expression instead of the anonymous fat arrow function syntax.",
- "",
- "====Simple 2 and N argument versions====",
- "",
- "In the most rudimentary form, for example for mapping a two-argument function over an array:",
- "",
- "(() => {",
- "",
- " // curry :: ((a, b) -> c) -> a -> b -> c",
- " let curry = f => a => b => f(a, b);",
- "",
- "",
- " // TEST",
- "",
- " // product :: Num -> Num -> Num",
- " let product = (a, b) => a * b,",
- "",
- " // Int -> Int -> Maybe Int -> [Int]",
- " range = (m, n, step) => {",
- " let d = (step || 1) * (n >= m ? 1 : -1);",
- "",
- " return Array.from({",
- " length: Math.floor((n - m) / d) + 1",
- " }, (_, i) => m + (i * d));",
- " }",
- "",
- "",
- " return range(1, 10)",
- " .map(curry(product)(7))",
- "",
- " // [7, 14, 21, 28, 35, 42, 49, 56, 63, 70]",
- "",
- "})();",
- "",
- "{{Out}}",
- "[7, 14, 21, 28, 35, 42, 49, 56, 63, 70]",
- "",
- "",
- "Or, recursively currying functions of arbitrary arity:",
- "",
- "(() => {",
- "",
- " // (arbitrary arity to fully curried)",
- " // extraCurry :: Function -> Function",
- " let extraCurry = (f, ...args) => {",
- " let intArgs = f.length;",
- "",
- " // Recursive currying",
- " let _curry = (xs, ...arguments) =>",
- " xs.length >= intArgs ? (",
- " f.apply(null, xs)",
- " ) : function () {",
- " return _curry(xs.concat([].slice.apply(arguments)));",
- " };",
- "",
- " return _curry([].slice.call(args, 1));",
- " };",
- "",
- " // TEST",
- "",
- " // product3:: Num -> Num -> Num -> Num",
- " let product3 = (a, b, c) => a * b * c;",
- "",
- " return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]",
- " .map(extraCurry(product3)(7)(2))",
- "",
- " // [14, 28, 42, 56, 70, 84, 98, 112, 126, 140]",
- "",
- "})();",
- "",
- "{{Out}}",
- "[14, 28, 42, 56, 70, 84, 98, 112, 126, 140]",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e04",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- " function addN(n) {\n var curry = function(x) {\n return x + n;\n };\n return curry;\n }\n\n add2 = addN(2);\n alert(add2);\n alert(add2(7));\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "CUSIP",
- "type": "Waypoint",
- "description": [
- "
A CUSIP is a nine-character alphanumeric code that identifies a North American financial security for the purposes of facilitating clearing and settlement of trades. The CUSIP was adopted as an American National Standard under Accredited Standards X9.6.
",
- "Task:",
- "
Ensure the last digit (i.e., the check digit) of the CUSIP code (the 1st column) is correct, against the following:
",
- " 037833100 Apple Incorporated ",
- " 17275R102 Cisco Systems ",
- " 38259P508 Google Incorporated ",
- " 594918104 Microsoft Corporation ",
- " 68389X106 Oracle Corporation (incorrect)",
- " 68389X105 Oracle Corporation Example pseudo-code below.",
- "
algorithm Cusip-Check-Digit(cusip) is
",
- "
Input: an 8-character CUSIP
sum := 0
",
- "
for 1 ≤ i ≤ 8 do
",
- "
c := the ith character of cusip
",
- "
if c is a digit then
",
- "
v := numeric value of the digit c
",
- "
else if c is a letter then
",
- "
p := ordinal position of c in the alphabet (A=1, B=2...)
A given rectangle is made from m × n squares. If m and n are not both odd, then it is possible to cut a path through the rectangle along the square edges such that the rectangle splits into two connected pieces with the same shape (after rotating one of the pieces by 180°). All such paths for 2 × 2 and 4 × 3 rectangles are shown below.
This task is a straightforward generalization of Deconvolution/1D to higher dimensions. For example, the one dimensional case would be applicable to audio signals, whereas two dimensions would pertain to images. Define the discrete convolution in $\\mathit d$ dimensions of two functions
$H,F:\\mathbb{Z}^d\\rightarrow\\mathbb{R}$
taking $\\mathit d$-tuples of integers to real numbers as the function
$G:\\mathbb{Z}^d\\rightarrow\\mathbb{R}$
also taking $\\mathit d$-tuples of integers to reals and satisfying
for all $\\mathit d$-tuples of integers $(n_0, \\dots, n_{d-1})\\in\\mathbb{Z}^d$. Assume
",
- "
$\\mathit F$ and $\\mathit H$ (and therefore $\\mathit G$) are non-zero over only a finite domain bounded by the origin, hence possible to represent as finite multi-dimensional arrays or nested lists $\\mathit f$, $\\mathit h$, and $\\mathit g$.
For this task, implement a function (or method, procedure, subroutine, etc.) deconv to perform deconvolution (i.e., the inverse of convolution) by solving for $\\mathit{h}$ given $\\mathit{f}$ and $\\mathit{g}$. (See Deconvolution/1D for details.)
",
- "The function should work for $\\mathit{g}$ of arbitrary length in each dimension (i.e., not hard coded or constant) and $\\mathit{f}$ of any length up to that of $\\mathit{g}$ in the corresponding dimension.",
- "The deconv function will need to be parameterized by the dimension $\\mathit d$ unless the dimension can be inferred from the data structures representing $\\mathit g$ and $\\mathit f$.",
- "There may be more equations than unknowns. If convenient, use a function from a library that finds the best fitting solution to an overdetermined system of linear equations (as in the Multiple regression task). Otherwise, prune the set of equations as needed and solve as in the Reduced row echelon form task.",
- "Debug your solution using this test data, of which a portion is shown below. Be sure to verify both that the deconvolution of $\\mathit g$ with $\\mathit f$ is $\\mathit h$ and that the deconvolution of $\\mathit g$ with $\\mathit h$ is $\\mathit f$. Display the results in a human readable form for the three dimensional case only.",
- "
A delegate is a helper object used by another object. The delegator may send the delegate certain messages, and provide a default implementation when there is no delegate or the delegate does not respond to a message. This pattern is heavily used in Cocoa framework on Mac OS X. See also [[wp:Delegation pattern]].
Objects responsibilities:
Delegator:
",
- "Keep an optional delegate instance.",
- "Implement \"operation\" method, returning the delegate \"thing\" if the delegate respond to \"thing\", or the string \"default implementation\".",
- "
Delegate:
",
- "Implement \"thing\" and return the string \"delegate implementation\"",
- "
Show how objects are created and used. First, without a delegate, then with a delegate that does not implement \"thing\", and last with a delegate that implements \"thing\".
Create a boolean function which takes in a string and tells whether it is a numeric string (floating point and negative numbers included) in the syntax the language uses for numeric literals or numbers converted from strings.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "A far better validator can be found on StackOverflow[http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric]",
- "function isNumeric(n) {",
- " return !isNaN(parseFloat(n)) && isFinite(n);",
- "}",
- "var value = \"123.45e7\"; // Assign string literal to value",
- "if (isNumeric(value)) {",
- " // value is a number",
- "}",
- "//Or, in web browser in address field:",
- "// javascript:function isNumeric(n) {return !isNaN(parseFloat(n)) && isFinite(n);}; value=\"123.45e4\"; if(isNumeric(value)) {alert('numeric')} else {alert('non-numeric')}",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e14",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "function isNumeric(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nvar value = \"123.45e7\"; // Assign string literal to value\nif (isNumeric(value)) {\n // value is a number\n}\n//Or, in web browser in address field:\n// javascript:function isNumeric(n) {return !isNaN(parseFloat(n)) && isFinite(n);}; value=\"123.45e4\"; if(isNumeric(value)) {alert('numeric')} else {alert('non-numeric')}\n\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Digital root",
- "type": "Waypoint",
- "description": [
- "
The digital root, $X$, of a number, $n$, is calculated:
",
- "
find $X$ as the sum of the digits of $n$
",
- "
find a new $X$ by summing the digits of $X$, repeating until $X$ has only one digit.
The additive persistence is the number of summations required to obtain the single digit.
The task is to calculate the additive persistence and the digital root of a number, e.g.:
",
- "
$627615$ has additive persistence $2$ and digital root of $9$;
",
- "
$39390$ has additive persistence $2$ and digital root of $6$;
",
- "
$588225$ has additive persistence $2$ and digital root of $3$;
",
- "
$393900588225$ has additive persistence $2$ and digital root of $9$;
The digital root may be calculated in bases other than 10.
Solve Dinesman's multiple dwelling problem but in a way that most naturally follows the problem statement given below.
Solutions are allowed (but not required) to parse and interpret the problem text, but should remain flexible and should state what changes to the problem text are allowed. Flexibility and ease of expression are valued.
Examples may be be split into \"setup\", \"problem statement\", and \"output\" sections where the ease and naturalness of stating the problem and getting an answer, as well as the ease and flexibility of modifying the problem are the primary concerns.
Example output should be shown here, as well as any comments on the examples flexibility.
",
- "The problem",
- "
Baker, Cooper, Fletcher, Miller, and Smith live on different floors of an apartment house that contains only five floors.
",
- "Baker does not live on the top floor.",
- "Cooper does not live on the bottom floor. ",
- "Fletcher does not live on either the top or the bottom floor.",
- "Miller lives on a higher floor than does Cooper.",
- "Smith does not live on a floor adjacent to Fletcher's. ",
- "Fletcher does not live on a floor adjacent to Cooper's.Where does everyone live?"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "",
- "===ES6===",
- "",
- "====More flexibility====",
- "",
- "(Full occupancy and no cohabitation included in the predicate)",
- "",
- "The generality of nesting '''concatMap''', and returning values enclosed in a list (empty where the test fails, populated otherwise), is the same as that of a using a list comprehension, to which it is formally equivalent. (concatMap is the bind operator for the list monad, and '''(a -> [a])''' is the type of the 'return' function for a list monad. The effect is to define a cartesian product, and apply a predicate to each member of that product. Any empty lists returned where a predicate yields ''false'' are eliminated by the concatenation component of concatMap.",
- "",
- "The predicates here can be varied, and the depth of concatMap nestings can be adjusted to match the number of unknowns in play, with each concatMap binding one name, and defining the list of its possible values.",
- "",
- "(() => {",
- " 'use strict';",
- "",
- " // concatMap :: (a -> [b]) -> [a] -> [b]",
- " const concatMap = (f, xs) => [].concat.apply([], xs.map(f));",
- "",
- " // range :: Int -> Int -> [Int]",
- " const range = (m, n) =>",
- " Array.from({",
- " length: Math.floor(n - m) + 1",
- " }, (_, i) => m + i);",
- "",
- " // and :: [Bool] -> Bool",
- " const and = xs => {",
- " let i = xs.length;",
- " while (i--)",
- " if (!xs[i]) return false;",
- " return true;",
- " }",
- "",
- " // nubBy :: (a -> a -> Bool) -> [a] -> [a]",
- " const nubBy = (p, xs) => {",
- " const x = xs.length ? xs[0] : undefined;",
- " return x !== undefined ? [x].concat(",
- " nubBy(p, xs.slice(1)",
- " .filter(y => !p(x, y)))",
- " ) : [];",
- " }",
- "",
- " // PROBLEM DECLARATION",
- "",
- " const floors = range(1, 5);",
- "",
- " return concatMap(b =>",
- " concatMap(c =>",
- " concatMap(f =>",
- " concatMap(m =>",
- " concatMap(s =>",
- " and([ // CONDITIONS",
- " nubBy((a, b) => a === b, [b, c, f, m, s]) // all floors singly occupied",
- " .length === 5,",
- " b !== 5, c !== 1, f !== 1, f !== 5,",
- " m > c, Math.abs(s - f) > 1, Math.abs(c - f) > 1",
- " ]) ? [{",
- " Baker: b,",
- " Cooper: c,",
- " Fletcher: f,",
- " Miller: m,",
- " Smith: s",
- " }] : [],",
- " floors), floors), floors), floors), floors);",
- "",
- " // --> [{\"Baker\":3, \"Cooper\":2, \"Fletcher\":4, \"Miller\":5, \"Smith\":1}]",
- "})();",
- "",
- "{{Out}}",
- "[{\"Baker\":3, \"Cooper\":2, \"Fletcher\":4, \"Miller\":5, \"Smith\":1}]",
- "",
- "====Less flexibility====",
- "",
- "For a different trade-off between efficiency and generality, we can take full occupancy and no cohabitation out of the predicate, and assume them in the shape of the search space.",
- "",
- "In the version above, with nested applications of concatMap, the requirement that all apartments are occupied by one person only is included in the test conditions. ",
- "Alternatively, we can remove any flexibility about such civic virtues from the predicate, and restrict the universe of conceivable living arrangements, by using concatMap just once, and applying it only to the various permutations of full and distinct occupancy. ",
- "",
- "ES6 splat assignment allows us to bind all five names in a single application of concatMap. We now also need a '''permutations''' function of some kind.",
- "",
- "(() => {",
- " 'use strict';",
- "",
- " // concatMap :: (a -> [b]) -> [a] -> [b]",
- " const concatMap = (f, xs) => [].concat.apply([], xs.map(f));",
- "",
- " // range :: Int -> Int -> [Int]",
- " const range = (m, n) =>",
- " Array.from({",
- " length: Math.floor(n - m) + 1",
- " }, (_, i) => m + i);",
- "",
- " // and :: [Bool] -> Bool",
- " const and = xs => {",
- " let i = xs.length;",
- " while (i--)",
- " if (!xs[i]) return false;",
- " return true;",
- " }",
- "",
- " // permutations :: [a] -> [[a]]",
- " const permutations = xs =>",
- " xs.length ? concatMap(x => concatMap(ys => [",
- " [x].concat(ys)",
- " ],",
- " permutations(delete_(x, xs))), xs) : [",
- " []",
- " ];",
- "",
- " // delete :: a -> [a] -> [a]",
- " const delete_ = (x, xs) =>",
- " deleteBy((a, b) => a === b, x, xs);",
- "",
- " // deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]",
- " const deleteBy = (f, x, xs) =>",
- " xs.reduce((a, y) => f(x, y) ? a : a.concat(y), []);",
- "",
- " // PROBLEM DECLARATION",
- "",
- " const floors = range(1, 5);",
- "",
- " return concatMap(([c, b, f, m, s]) =>",
- " and([ // CONDITIONS (assuming full occupancy, no cohabitation)",
- " b !== 5, c !== 1, f !== 1, f !== 5,",
- " m > c, Math.abs(s - f) > 1, Math.abs(c - f) > 1",
- " ]) ? [{",
- " Baker: b,",
- " Cooper: c,",
- " Fletcher: f,",
- " Miller: m,",
- " Smith: s",
- " }] : [], permutations(floors));",
- "",
- " // --> [{\"Baker\":3, \"Cooper\":2, \"Fletcher\":4, \"Miller\":5, \"Smith\":1}]",
- "})();",
- "",
- "",
- "[{\"Baker\":3, \"Cooper\":2, \"Fletcher\":4, \"Miller\":5, \"Smith\":1}]",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e18",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "(() => {\n 'use strict';\n\n // concatMap :: (a -> [b]) -> [a] -> [b]\n const concatMap = (f, xs) => [].concat.apply([], xs.map(f));\n\n // range :: Int -> Int -> [Int]\n const range = (m, n) =>\n Array.from({\n length: Math.floor(n - m) + 1\n }, (_, i) => m + i);\n\n // and :: [Bool] -> Bool\n const and = xs => {\n let i = xs.length;\n while (i--)\n if (!xs[i]) return false;\n return true;\n }\n\n // nubBy :: (a -> a -> Bool) -> [a] -> [a]\n const nubBy = (p, xs) => {\n const x = xs.length ? xs[0] : undefined;\n return x !== undefined ? [x].concat(\n nubBy(p, xs.slice(1)\n .filter(y => !p(x, y)))\n ) : [];\n }\n\n // PROBLEM DECLARATION\n\n const floors = range(1, 5);\n\n return concatMap(b =>\n concatMap(c =>\n concatMap(f =>\n concatMap(m =>\n concatMap(s =>\n and([ // CONDITIONS\n nubBy((a, b) => a === b, [b, c, f, m, s]) // all floors singly occupied\n .length === 5,\n b !== 5, c !== 1, f !== 1, f !== 5,\n m > c, Math.abs(s - f) > 1, Math.abs(c - f) > 1\n ]) ? [{\n Baker: b,\n Cooper: c,\n Fletcher: f,\n Miller: m,\n Smith: s\n }] : [],\n floors), floors), floors), floors), floors);\n\n // --> [{\"Baker\":3, \"Cooper\":2, \"Fletcher\":4, \"Miller\":5, \"Smith\":1}]\n})();\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Distributed programming",
- "type": "Waypoint",
- "description": [
- "
Write two programs (or one program with two modes) which run on networked computers, and send some messages between them.
The protocol used may be language-specific or not, and should be suitable for general distributed programming; that is, the protocol should be generic (not designed just for the particular example application), readily capable of handling the independent communications of many different components of a single application, and the transferring of arbitrary data structures natural for the language.
This task is intended to demonstrate high-level communication facilities beyond just creating sockets.
Show how to insert documentation for classes, functions, and/or variables in your language. If this documentation is built-in to the language, note it. If this documentation requires external tools, note them.
Use the link structure defined in Doubly-Linked List (element) to define a procedure for inserting a link into a doubly-linked list. Call this procedure to insert element C into a list {A,B}, between elements A and B.
This is much like inserting into a Singly-Linked List, but with added assignments so that the backwards-pointing links remain correct.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "See [[Doubly-Linked_List_(element)#JavaScript]]",
- "DoublyLinkedList.prototype.insertAfter = function(searchValue, nodeToInsert) {",
- " if (this._value == searchValue) {",
- " var after = this.next();",
- " this.next(nodeToInsert);",
- " nodeToInsert.prev(this);",
- " nodeToInsert.next(after);",
- " after.prev(nodeToInsert);",
- " }",
- " else if (this.next() == null) ",
- " throw new Error(0, \"value '\" + searchValue + \"' not found in linked list.\")",
- " else",
- " this.next().insertAfter(searchValue, nodeToInsert);",
- "}",
- "",
- "var list = createDoublyLinkedListFromArray(['A','B']);",
- "list.insertAfter('A', new DoublyLinkedList('C', null, null));",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e21",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "DoublyLinkedList.prototype.insertAfter = function(searchValue, nodeToInsert) {\n if (this._value == searchValue) {\n var after = this.next();\n this.next(nodeToInsert);\n nodeToInsert.prev(this);\n nodeToInsert.next(after);\n after.prev(nodeToInsert);\n }\n else if (this.next() == null) \n throw new Error(0, \"value '\" + searchValue + \"' not found in linked list.\")\n else\n this.next().insertAfter(searchValue, nodeToInsert);\n}\n\nvar list = createDoublyLinkedListFromArray(['A','B']);\nlist.insertAfter('A', new DoublyLinkedList('C', null, null));\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Doubly-linked list/Traversal",
- "type": "Waypoint",
- "description": [
- "
Traverse from the beginning of a doubly-linked list to the end, and from the end to the beginning.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "See [[Doubly-Linked List (element)#JavaScript]]. The traverse() and print() functions have been inherited from [[Singly-Linked List (traversal)#JavaScript]].",
- "DoublyLinkedList.prototype.getTail = function() {",
- " var tail;",
- " this.traverse(function(node){tail = node;});",
- " return tail;",
- "} ",
- "DoublyLinkedList.prototype.traverseBackward = function(func) {",
- " func(this);",
- " if (this.prev() != null)",
- " this.prev().traverseBackward(func);",
- "}",
- "DoublyLinkedList.prototype.printBackward = function() {",
- " this.traverseBackward( function(node) {print(node.value())} );",
- "}",
- "",
- "var head = createDoublyLinkedListFromArray([10,20,30,40]);",
- "head.print();",
- "head.getTail().printBackward();",
- "",
- "outputs:",
- "
(You may either display the curve directly or write it to an image file.)
",
- "Algorithms
Here are some brief notes the algorithms used and how they might suit various languages.
Recursively a right curling dragon is a right dragon followed by a left dragon, at 90-degree angle. And a left dragon is a left followed by a right.",
- "
*---R----* expands to * *",
- " \\ /",
- " R L",
- " \\ /",
- " * *",
- " / \\",
- " L R",
- " / \\",
- "---L---* expands to * *
",
- "
The co-routines dcl and dcr in various examples do this recursively to a desired expansion level.
The curl direction right or left can be a parameter instead of two separate routines.",
- "Recursively, a curl direction can be eliminated by noting the dragon consists of two copies of itself drawn towards a central point at 45-degrees.",
- "
*------->* becomes * * Recursive copies drawn",
- " \\ / from the ends towards",
- " \\ / the centre.",
- " v v",
- " *
This can be seen in the SVG example. This is best suited to off-line drawing since the reversal in the second half means the drawing jumps backward and forward (in binary reflected Gray code order) which is not very good for a plotter or for drawing progressively on screen.
Successive approximation repeatedly re-writes each straight line as two new segments at a right angle,",
- "
* ",
- "-----* becomes / \\ bend to left / \\ if N odd",
- " * * * * ",
- "-----* becomes \\ / bend to right \\ / if N even ",
- " *
Numbering from the start of the curve built so far, if the segment is at an odd position then the bend introduced is on the right side. If the segment is an even position then on the left. The process is then repeated on the new doubled list of segments. This constructs a full set of line segments before any drawing.
The effect of the splitting is a kind of bottom-up version of the recursions. See the Asymptote example for code doing this.
Iteratively the curve always turns 90-degrees left or right at each point. The direction of the turn is given by the bit above the lowest 1-bit of n. Some bit-twiddling can extract that efficiently.",
- "
n = 1010110000",
- " ^",
- " bit above lowest 1-bit, turn left or right as 0 or 1LowMask = n BITXOR (n-1) # eg. giving 0000011111",
- "AboveMask = LowMask + 1 # eg. giving 0000100000",
- "BitAboveLowestOne = n BITAND AboveMask
The first turn is at n=1, so reckon the curve starting at the origin as n=0 then a straight line segment to position n=1 and turn there.
If you prefer to reckon the first turn as n=0 then take the bit above the lowest 0-bit instead. This works because \"...10000\" minus 1 is \"...01111\" so the lowest 0 in n-1 is where the lowest 1 in n is.
Going by turns suits turtle graphics such as Logo or a plotter drawing with a pen and current direction.
If a language doesn't maintain a \"current direction\" for drawing then you can always keep that separately and apply turns by bit-above-lowest-1.",
- "Absolute direction to move at point n can be calculated by the number of bit-transitions in n.",
- "
n = 11 00 1111 0 1",
- " ^ ^ ^ ^ 4 places where change bit value",
- " so direction=4*90degrees=East
This can be calculated by counting the number of 1 bits in \"n XOR (n RIGHTSHIFT 1)\" since such a shift and xor leaves a single 1 bit at each position where two adjacent bits differ.
Absolute X,Y coordinates of a point n can be calculated in complex numbers by some powers (i+1)^k and add/subtract/rotate. This is done in the gnuplot code. This might suit things similar to Gnuplot which want to calculate each point independently.",
- "Predicate test for whether a given X,Y point or segment is on the curve can be done. This might suit line-by-line output rather than building an entire image before printing. See M4 for an example of this.",
- "
A predicate works by dividing out complex number i+1 until reaching the origin, so it takes roughly a bit at a time from X and Y is thus quite efficient. Why it works is slightly subtle but the calculation is not difficult. (Check segment by applying an offset to move X,Y to an \"even\" position before dividing i+1. Check vertex by whether the segment either East or West is on the curve.)
The number of steps in the predicate corresponds to doublings of the curve, so stopping the check at say 8 steps can limit the curve drawn to 2^8=256 points. The offsets arising in the predicate are bits of n the segment number, so can note those bits to calculate n and limit to an arbitrary desired length or sub-section.
As a Lindenmayer system of expansions. The simplest is two symbols F and S both straight lines, as used by the PGF code.",
- "
This always has F at even positions and S at odd. Eg. after 3 levels F_S_F_S_F_S_F_S. The +/- turns in between bend to the left or right the same as the \"successive approximation\" method above. Read more at for instance Joel Castellanos' L-system page.
Variations are possible if you have only a single symbol for line draw, for example the Icon and Unicon and Xfractint code. The angles can also be broken into 45-degree parts to keep the expansion in a single direction rather than the endpoint rotating around.
The string rewrites can be done recursively without building the whole string, just follow its instructions at the target level. See for example C by IFS Drawing code. The effect is the same as \"recursive with parameter\" above but can draw other curves defined by L-systems.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "===Version #1.===",
- "{{works with|Chrome 8.0}}",
- "I'm sure this can be simplified further, but I have this working [http://kevincantu.org/code/dragon/dragon.html here]!",
- "",
- "Though there is an impressive SVG example further below, this uses JavaScript to recurse through the expansion and simply displays each line with SVG. It is invoked as a method DRAGON.fractal(...) as described.",
- "var DRAGON = (function () {",
- " // MATRIX MATH",
- " // -----------",
- "",
- " var matrix = {",
- " mult: function ( m, v ) {",
- " return [ m[0][0] * v[0] + m[0][1] * v[1],",
- " m[1][0] * v[0] + m[1][1] * v[1] ];",
- " },",
- "",
- " minus: function ( a, b ) {",
- " return [ a[0]-b[0], a[1]-b[1] ];",
- " },",
- "",
- " plus: function ( a, b ) {",
- " return [ a[0]+b[0], a[1]+b[1] ];",
- " }",
- " };",
- "",
- "",
- " // SVG STUFF",
- " // ---------",
- "",
- " // Turn a pair of points into an SVG path like \"M1 1L2 2\".",
- " var toSVGpath = function (a, b) { // type system fail",
- " return \"M\" + a[0] + \" \" + a[1] + \"L\" + b[0] + \" \" + b[1];",
- " };",
- "",
- "",
- " // DRAGON MAKING",
- " // -------------",
- "",
- " // Make a dragon with a better fractal algorithm",
- " var fractalMakeDragon = function (svgid, ptA, ptC, state, lr, interval) {",
- "",
- " // make a new ",
- " var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');",
- " path.setAttribute( \"class\", \"dragon\"); ",
- " path.setAttribute( \"d\", toSVGpath(ptA, ptC) );",
- "",
- " // append the new path to the existing ",
- "",
- "My current demo page includes the following to invoke this: ",
- "...",
- "",
- "...",
- "
",
- "Input parameters:",
- "",
- "ord scale x-shift y-shift color [File name to save]",
- "-------------------------------------------",
- "11 7. -265 -260 red DC11.png",
- "15 2. -205 -230 brown DC15.png",
- "17 1. -135 70 green DC17.png",
- "19 0.6 380 440 navy DC19.png",
- "21 0.22 1600 800 blue DC21.png",
- "23 0.15 1100 800 violet DC23.png",
- "25 0.07 2100 5400 darkgreen DC25.png",
- "===========================================",
- "
",
- "",
- "{{Output}} ",
- "
",
- "Page with different plotted Dragon curves. Right-clicking on the canvas you can save each of them",
- "as a png-file. ",
- "
",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e23",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "var DRAGON = (function () {\n // MATRIX MATH\n // -----------\n\n var matrix = {\n mult: function ( m, v ) {\n return [ m[0][0] * v[0] + m[0][1] * v[1],\n m[1][0] * v[0] + m[1][1] * v[1] ];\n },\n\n minus: function ( a, b ) {\n return [ a[0]-b[0], a[1]-b[1] ];\n },\n\n plus: function ( a, b ) {\n return [ a[0]+b[0], a[1]+b[1] ];\n }\n };\n\n\n // SVG STUFF\n // ---------\n\n // Turn a pair of points into an SVG path like \"M1 1L2 2\".\n var toSVGpath = function (a, b) { // type system fail\n return \"M\" + a[0] + \" \" + a[1] + \"L\" + b[0] + \" \" + b[1];\n };\n\n\n // DRAGON MAKING\n // -------------\n\n // Make a dragon with a better fractal algorithm\n var fractalMakeDragon = function (svgid, ptA, ptC, state, lr, interval) {\n\n // make a new \n var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n path.setAttribute( \"class\", \"dragon\"); \n path.setAttribute( \"d\", toSVGpath(ptA, ptC) );\n\n // append the new path to the existing \n var svg = document.getElementById(svgid); // call could be eliminated\n svg.appendChild(path);\n\n // if we have more iterations to go...\n if (state > 1) {\n\n // make a new point, either to the left or right\n var growNewPoint = function (ptA, ptC, lr) {\n var left = [[ 1/2,-1/2 ], \n [ 1/2, 1/2 ]]; \n\n var right = [[ 1/2, 1/2 ],\n [-1/2, 1/2 ]];\n\n return matrix.plus(ptA, matrix.mult( lr ? left : right, \n matrix.minus(ptC, ptA) ));\n }; \n\n var ptB = growNewPoint(ptA, ptC, lr, state);\n\n // then recurse using each new line, one left, one right\n var recurse = function () {\n // when recursing deeper, delete this svg path\n svg.removeChild(path);\n\n // then invoke again for new pair, decrementing the state\n fractalMakeDragon(svgid, ptB, ptA, state-1, lr, interval);\n fractalMakeDragon(svgid, ptB, ptC, state-1, lr, interval);\n };\n\n window.setTimeout(recurse, interval);\n }\n };\n\n\n // Export these functions\n // ----------------------\n return {\n fractal: fractalMakeDragon\n\n // ARGUMENTS\n // ---------\n // svgid id of element\n // ptA first point [x,y] (from top left)\n // ptC second point [x,y]\n // state number indicating how many steps to recurse\n // lr true/false to make new point on left or right\n\n // CONFIG\n // ------\n // CSS rules should be made for the following\n // svg#fractal\n // svg path.dragon\n };\n\n}());\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Draw a clock",
- "type": "Waypoint",
- "description": [
- "Task:",
- "
Draw a clock.
",
- "
More specific:
",
- "Draw a time keeping device. It can be a stopwatch, hourglass, sundial, a mouth counting \"one thousand and one\", anything. Only showing the seconds is required, e.g.: a watch with just a second hand will suffice. However, it must clearly change every second, and the change must cycle every so often (one minute, 30 seconds, etc.) It must be drawn; printing a string of numbers to your terminal doesn't qualify. Both text-based and graphical drawing are OK.",
- "The clock is unlikely to be used to control space flights, so it needs not be hyper-accurate, but it should be usable, meaning if one can read the seconds off the clock, it must agree with the system clock.",
- "A clock is rarely (never?) a major application: don't be a CPU hog and poll the system timer every microsecond, use a proper timer/signal/event from your system or language instead. For a bad example, many OpenGL programs update the frame-buffer in a busy loop even if no redraw is needed, which is very undesirable for this task.",
- "A clock is rarely (never?) a major application: try to keep your code simple and to the point. Don't write something too elaborate or convoluted, instead do whatever is natural, concise and clear in your language.",
- "Key points",
- "animate simple object",
- "timed event ",
- "polling system resources ",
- "code clarity"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "Tested on Gecko. Put the following in a <script> tag somewhere, and call init_clock() after body load.",
- "var sec_old = 0;",
- "function update_clock() {",
- "\tvar t = new Date();",
- "\tvar arms = [t.getHours(), t.getMinutes(), t.getSeconds()];",
- "\tif (arms[2] == sec_old) return;",
- "\tsec_old = arms[2];",
- "",
- "\tvar c = document.getElementById('clock');",
- "\tvar ctx = c.getContext('2d');",
- "\tctx.fillStyle = \"rgb(0,200,200)\";",
- "\tctx.fillRect(0, 0, c.width, c.height);",
- "\tctx.fillStyle = \"white\";",
- "\tctx.fillRect(3, 3, c.width - 6, c.height - 6);",
- "\tctx.lineCap = 'round';",
- "",
- "\tvar orig = { x: c.width / 2, y: c.height / 2 };",
- "\tarms[1] += arms[2] / 60;",
- "\tarms[0] += arms[1] / 60;",
- "\tdraw_arm(ctx, orig, arms[0] * 30, c.width/2.5 - 15, c.width / 20, \"green\");",
- "\tdraw_arm(ctx, orig, arms[1] * 6, c.width/2.2 - 10, c.width / 30, \"navy\");",
- "\tdraw_arm(ctx, orig, arms[2] * 6, c.width/2.0 - 6, c.width / 100, \"maroon\");",
- "}",
- "",
- "function draw_arm(ctx, orig, deg, len, w, style)",
- "{",
- "\tctx.save();",
- "\tctx.lineWidth = w;",
- "\tctx.lineCap = 'round';",
- "\tctx.translate(orig.x, orig.y);",
- "\tctx.rotate((deg - 90) * Math.PI / 180);",
- "\tctx.strokeStyle = style;",
- "\tctx.beginPath();",
- "\tctx.moveTo(-len / 10, 0);",
- "\tctx.lineTo(len, 0);",
- "\tctx.stroke();",
- "\tctx.restore();",
- "}",
- "",
- "function init_clock() {",
- "\tvar clock = document.createElement('canvas');",
- "\tclock.width = 100;",
- "\tclock.height = 100;",
- "\tclock.id = \"clock\";",
- "\tdocument.body.appendChild(clock);",
- "",
- "\twindow.setInterval(update_clock, 200);",
- "}",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e24",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "var sec_old = 0;\nfunction update_clock() {\n\tvar t = new Date();\n\tvar arms = [t.getHours(), t.getMinutes(), t.getSeconds()];\n\tif (arms[2] == sec_old) return;\n\tsec_old = arms[2];\n\n\tvar c = document.getElementById('clock');\n\tvar ctx = c.getContext('2d');\n\tctx.fillStyle = \"rgb(0,200,200)\";\n\tctx.fillRect(0, 0, c.width, c.height);\n\tctx.fillStyle = \"white\";\n\tctx.fillRect(3, 3, c.width - 6, c.height - 6);\n\tctx.lineCap = 'round';\n\n\tvar orig = { x: c.width / 2, y: c.height / 2 };\n\tarms[1] += arms[2] / 60;\n\tarms[0] += arms[1] / 60;\n\tdraw_arm(ctx, orig, arms[0] * 30, c.width/2.5 - 15, c.width / 20, \"green\");\n\tdraw_arm(ctx, orig, arms[1] * 6, c.width/2.2 - 10, c.width / 30, \"navy\");\n\tdraw_arm(ctx, orig, arms[2] * 6, c.width/2.0 - 6, c.width / 100, \"maroon\");\n}\n\nfunction draw_arm(ctx, orig, deg, len, w, style)\n{\n\tctx.save();\n\tctx.lineWidth = w;\n\tctx.lineCap = 'round';\n\tctx.translate(orig.x, orig.y);\n\tctx.rotate((deg - 90) * Math.PI / 180);\n\tctx.strokeStyle = style;\n\tctx.beginPath();\n\tctx.moveTo(-len / 10, 0);\n\tctx.lineTo(len, 0);\n\tctx.stroke();\n\tctx.restore();\n}\n\nfunction init_clock() {\n\tvar clock = document.createElement('canvas');\n\tclock.width = 100;\n\tclock.height = 100;\n\tclock.id = \"clock\";\n\tdocument.body.appendChild(clock);\n\n\twindow.setInterval(update_clock, 200);\n}\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Draw a cuboid",
- "type": "Waypoint",
- "description": [
- "Task:",
- "
Draw a cuboid with relative dimensions of 2x3x4. The cuboid can be represented graphically, or in ASCII art, depending on the language capabilities. To fulfill the criteria of being a cuboid, three faces must be visible.
Either static or rotational projection is acceptable for this task.
It should be oriented with one vertex pointing straight up, and its opposite vertex on the main diagonal (the one farthest away) straight down. It can be solid or wire-frame, and you can use ASCII art if your language doesn't have graphical capabilities. Perspective is optional.
The sphere can be represented graphically, or in ASCII art, depending on the language capabilities.
Either static or rotational projection is acceptable for this task.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "",
- "{{trans|C}}",
- "",
- "This Javascript entry uses an HTML wrapper to offer easy running and some interactivity. It is made as such, though, that the entire HTML wrapper can be removed (except for a canvas with id c) and still work. If you remove the HTML, call the draw_sphere function to draw the thing.",
- "",
- "",
- "",
- "",
- "",
- "Draw a sphere",
- "",
- "",
- "",
- "R=",
- " ",
- "k=",
- " ",
- "ambient=",
- " ",
- " ",
- "",
- "",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e27",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "\n\n\n\nDraw a sphere\n\n\n\nR=\n \nk=\n \nambient=\n \n \n\n\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Dutch national flag problem",
- "type": "Waypoint",
- "description": [
- "
The Dutch national flag is composed of three coloured bands in the order red then white and lastly blue. The problem posed by Edsger Dijkstra is:
",
- "
Given a number of red, blue and white balls in random order, arrange them in the order of the colours Dutch national flag.
",
- "
When the problem was first posed, Dijkstra then went on to successively refine a solution, minimising the number of swaps and the number of times the colour of a ball needed to determined and restricting the balls to end in an array, ...
Task",
- "Generate a randomized order of balls ensuring that they are not in the order of the Dutch national flag.",
- "Sort the balls in a way idiomatic to your language.",
- "Check the sorted balls are in the order of the Dutch national flag.C.f.:",
- "Dutch national flag problem",
- "Probabilistic analysis of algorithms for the Dutch national flag problem by Wei-Mei Chen. (pdf)"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": "null",
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e28",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Dynamic variable names",
- "type": "Waypoint",
- "description": [
- "Task:",
- "
Create a variable with a user-defined name.
The variable name should not be written in the program text, but should be taken from the user dynamically.
",
- "See also",
- " Eval in environment is a similar task."
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "var varname = 'foo'; // pretend a user input that",
- "var value = 42;",
- "eval('var ' + varname + '=' + value);",
- "Alternatively, without using eval:",
- "var varname = prompt('Variable name:');",
- "var value = 42;",
- "this[varname] = value;",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e29",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "var varname = 'foo'; // pretend a user input that\nvar value = 42;\neval('var ' + varname + '=' + value);\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Euler's sum of powers conjecture",
- "type": "Waypoint",
- "description": [
- "
There is a conjecture in mathematics that held for over two hundred years before it was disproved by the finding of a counterexample in 1966 by Lander and Parkin.
",
- "Euler's (disproved) sum of powers conjecture:",
- "
At least k positive kth powers are required to sum to a kth power,
",
- "
except for the trivial case of one kth power: yk = yk
Lander and Parkin are known to have used a brute-force search on a CDC 6600 computer restricting numbers to those less than 250.
",
- "Task:",
- "
Write a program to search for an integer solution for:
",
- "",
- "
x05 + x15 + x25 + x35 == y5
",
- "",
- "
Where all xi's and y are distinct integers between 0 and 250 (exclusive).
",
- "The target string: \"METHINKS IT IS LIKE A WEASEL\".",
- "An array of random characters chosen from the set of upper-case letters together with the space, and of the same length as the target string. (Call it the parent).",
- "A fitness function that computes the ‘closeness’ of its argument to the target string.",
- "A mutate function that given a string and a mutation rate returns a copy of the string, with some characters probably mutated.",
- "While the parent is not yet the target:* copy the parent C times, each time allowing some random probability that another character might be substituted using mutate.",
- "
* Assess the fitness of the parent and all the copies to the target and make the most fit string the new parent, discarding the others.
",
- "
* repeat until the parent converges, (hopefully), to the target.
Note: to aid comparison, try and ensure the variables and functions mentioned in the task description appear in solutions
",
- "
A cursory examination of a few of the solutions reveals that the instructions have not been followed rigorously in some solutions. Specifically,
",
- "While the parent is not yet the target:* copy the parent C times, each time allowing some random probability that another character might be substituted using mutate.
Note that some of the the solutions given retain characters in the mutated string that are correct in the target string. However, the instruction above does not state to retain any of the characters while performing the mutation. Although some may believe to do so is implied from the use of \"converges\"
(:* repeat until the parent converges, (hopefully), to the target.
Strictly speaking, the new parent should be selected from the new pool of mutations, and then the new parent used to generate the next set of mutations with parent characters getting retained only by not being mutated. It then becomes possible that the new set of mutations has no member that is fitter than the parent!
As illustration of this error, the code for 8th has the following remark.
Create a new string based on the TOS, '''changing randomly any characters which
",
- "
don't already match the target''':
NOTE: this has been changed, the 8th version is completely random now
Clearly, this algo will be applying the mutation function only to the parent characters that don't match to the target characters!
To ensure that the new parent is never less fit than the prior parent, both the parent and all of the latest mutations are subjected to the fitness test to select the next parent.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "Using cross-browser techniques to support Array.reduce and Array.map",
- "",
- "// ------------------------------------- Cross-browser Compatibility -------------------------------------",
- "",
- "/* Compatibility code to reduce an array",
- " * Source: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/Reduce",
- " */",
- "if (!Array.prototype.reduce) {",
- " Array.prototype.reduce = function (fun /*, initialValue */ ) {",
- " \"use strict\";",
- "",
- " if (this === void 0 || this === null) throw new TypeError();",
- "",
- " var t = Object(this);",
- " var len = t.length >>> 0;",
- " if (typeof fun !== \"function\") throw new TypeError();",
- "",
- " // no value to return if no initial value and an empty array",
- " if (len == 0 && arguments.length == 1) throw new TypeError();",
- "",
- " var k = 0;",
- " var accumulator;",
- " if (arguments.length >= 2) {",
- " accumulator = arguments[1];",
- " } else {",
- " do {",
- " if (k in t) {",
- " accumulator = t[k++];",
- " break;",
- " }",
- "",
- " // if array contains no values, no initial value to return",
- " if (++k >= len) throw new TypeError();",
- " }",
- " while (true);",
- " }",
- "",
- " while (k < len) {",
- " if (k in t) accumulator = fun.call(undefined, accumulator, t[k], k, t);",
- " k++;",
- " }",
- "",
- " return accumulator;",
- " };",
- "}",
- "",
- "/* Compatibility code to map an array",
- " * Source: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/Map",
- " */",
- "if (!Array.prototype.map) {",
- " Array.prototype.map = function (fun /*, thisp */ ) {",
- " \"use strict\";",
- "",
- " if (this === void 0 || this === null) throw new TypeError();",
- "",
- " var t = Object(this);",
- " var len = t.length >>> 0;",
- " if (typeof fun !== \"function\") throw new TypeError();",
- "",
- " var res = new Array(len);",
- " var thisp = arguments[1];",
- " for (var i = 0; i < len; i++) {",
- " if (i in t) res[i] = fun.call(thisp, t[i], i, t);",
- " }",
- "",
- " return res;",
- " };",
- "}",
- "",
- "/* ------------------------------------- Generator -------------------------------------",
- " * Generates a fixed length gene sequence via a gene strategy object.",
- " * The gene strategy object must have two functions:",
- " *\t- \"create\": returns create a new gene ",
- " *\t- \"mutate(existingGene)\": returns mutation of an existing gene ",
- " */",
- "function Generator(length, mutationRate, geneStrategy) {",
- " this.size = length;",
- " this.mutationRate = mutationRate;",
- " this.geneStrategy = geneStrategy;",
- "}",
- "",
- "Generator.prototype.spawn = function () {",
- " var genes = [],",
- " x;",
- " for (x = 0; x < this.size; x += 1) {",
- " genes.push(this.geneStrategy.create());",
- " }",
- " return genes;",
- "};",
- "",
- "Generator.prototype.mutate = function (parent) {",
- " return parent.map(function (char) {",
- " if (Math.random() > this.mutationRate) {",
- " return char;",
- " }",
- " return this.geneStrategy.mutate(char);",
- " }, this);",
- "};",
- "",
- "/* ------------------------------------- Population -------------------------------------",
- " * Helper class that holds and spawns a new population.",
- " */",
- "function Population(size, generator) {",
- " this.size = size;",
- " this.generator = generator;",
- "",
- " this.population = [];",
- " // Build initial popuation;",
- " for (var x = 0; x < this.size; x += 1) {",
- " this.population.push(this.generator.spawn());",
- " }",
- "}",
- "",
- "Population.prototype.spawn = function (parent) {",
- " this.population = [];",
- " for (var x = 0; x < this.size; x += 1) {",
- " this.population.push(this.generator.mutate(parent));",
- " }",
- "};",
- "",
- "/* ------------------------------------- Evolver -------------------------------------",
- " * Attempts to converge a population based a fitness strategy object.",
- " * The fitness strategy object must have three function ",
- " *\t- \"score(individual)\": returns a score for an individual.",
- " *\t- \"compare(scoreA, scoreB)\": return true if scoreA is better (ie more fit) then scoreB",
- " *\t- \"done( score )\": return true if score is acceptable (ie we have successfully converged). ",
- " */",
- "function Evolver(size, generator, fitness) {",
- " this.done = false;",
- " this.fitness = fitness;",
- " this.population = new Population(size, generator);",
- "}",
- "",
- "Evolver.prototype.getFittest = function () {",
- " return this.population.population.reduce(function (best, individual) {",
- " var currentScore = this.fitness.score(individual);",
- " if (best === null || this.fitness.compare(currentScore, best.score)) {",
- " return {",
- " score: currentScore,",
- " individual: individual",
- " };",
- " } else {",
- " return best;",
- " }",
- " }, null);",
- "};",
- "",
- "Evolver.prototype.doGeneration = function () {",
- " this.fittest = this.getFittest();",
- " this.done = this.fitness.done(this.fittest.score);",
- " if (!this.done) {",
- " this.population.spawn(this.fittest.individual);",
- " }",
- "};",
- "",
- "Evolver.prototype.run = function (onCheckpoint, checkPointFrequency) {",
- " checkPointFrequency = checkPointFrequency || 10; // Default to Checkpoints every 10 generations",
- " var generation = 0;",
- " while (!this.done) {",
- " this.doGeneration();",
- " if (generation % checkPointFrequency === 0) {",
- " onCheckpoint(generation, this.fittest);",
- " }",
- " generation += 1;",
- " }",
- " onCheckpoint(generation, this.fittest);",
- " return this.fittest;",
- "};",
- "",
- "// ------------------------------------- Exports -------------------------------------",
- "window.Generator = Generator;",
- "window.Evolver = Evolver;",
- "",
- "",
- "// helper utitlity to combine elements of two arrays.",
- "Array.prototype.zip = function (b, func) {",
- " var result = [],",
- " max = Math.max(this.length, b.length),",
- " x;",
- " for (x = 0; x < max; x += 1) {",
- " result.push(func(this[x], b[x]));",
- " }",
- " return result;",
- "};",
- "",
- "var target = \"METHINKS IT IS LIKE A WEASEL\", geneStrategy, fitness, target, generator, evolver, result;",
- " ",
- "geneStrategy = {",
- " // The allowed character set (as an array) ",
- " characterSet: \"ABCDEFGHIJKLMNOPQRSTUVWXYZ \".split(\"\"),",
- "",
- " /*",
- " Pick a random character from the characterSet",
- " */",
- " create: function getRandomGene() {",
- " var randomNumber = Math.floor(Math.random() * this.characterSet.length);",
- " return this.characterSet[randomNumber];",
- " }",
- "};",
- "geneStrategy.mutate = geneStrategy.create; // Our mutation stragtegy is to simply get a random gene",
- "fitness = {",
- " // The target (as an array of characters)",
- " target: target.split(\"\"),",
- " equal: function (geneA, geneB) {",
- " return (geneA === geneB ? 0 : 1);",
- " },",
- " sum: function (runningTotal, value) {",
- " return runningTotal + value;",
- " },",
- "",
- " /*",
- " We give one point to for each corect letter",
- " */",
- " score: function (genes) {",
- " var diff = genes.zip(this.target, this.equal); // create an array of ones and zeros ",
- " return diff.reduce(this.sum, 0); // Sum the array values together.",
- " },",
- " compare: function (scoreA, scoreB) {",
- " return scoreA <= scoreB; // Lower scores are better",
- " },",
- " done: function (score) {",
- " return score === 0; // We have matched the target string.",
- " }",
- "};",
- "",
- "generator = new Generator(target.length, 0.05, geneStrategy);",
- "evolver = new Evolver(100, generator, fitness);",
- "",
- "function showProgress(generation, fittest) {",
- " document.write(\"Generation: \" + generation + \", Best: \" + fittest.individual.join(\"\") + \", fitness:\" + fittest.score + \" \");",
- "}",
- "result = evolver.run(showProgress);",
- "Output:",
- "
",
- "Generation: 0, Best: KSTFOKJC XZYLWCLLGYZJNXYEGHE, fitness:25",
- "Generation: 10, Best: KOTFINJC XX LS LIGYZT WEPSHL, fitness:14",
- "Generation: 20, Best: KBTHINKS BT LS LIGNZA WEPSEL, fitness:8",
- "Generation: 30, Best: KETHINKS IT BS LISNZA WEASEL, fitness:5",
- "Generation: 40, Best: KETHINKS IT IS LIKEZA WEASEL, fitness:2",
- "Generation: 50, Best: METHINKS IT IS LIKEZA WEASEL, fitness:1",
- "Generation: 52, Best: METHINKS IT IS LIKE A WEASEL, fitness:0",
- "
",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e3c",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "// ------------------------------------- Cross-browser Compatibility -------------------------------------\n\n/* Compatibility code to reduce an array\n * Source: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/Reduce\n */\nif (!Array.prototype.reduce) {\n Array.prototype.reduce = function (fun /*, initialValue */ ) {\n \"use strict\";\n\n if (this === void 0 || this === null) throw new TypeError();\n\n var t = Object(this);\n var len = t.length >>> 0;\n if (typeof fun !== \"function\") throw new TypeError();\n\n // no value to return if no initial value and an empty array\n if (len == 0 && arguments.length == 1) throw new TypeError();\n\n var k = 0;\n var accumulator;\n if (arguments.length >= 2) {\n accumulator = arguments[1];\n } else {\n do {\n if (k in t) {\n accumulator = t[k++];\n break;\n }\n\n // if array contains no values, no initial value to return\n if (++k >= len) throw new TypeError();\n }\n while (true);\n }\n\n while (k < len) {\n if (k in t) accumulator = fun.call(undefined, accumulator, t[k], k, t);\n k++;\n }\n\n return accumulator;\n };\n}\n\n/* Compatibility code to map an array\n * Source: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/Map\n */\nif (!Array.prototype.map) {\n Array.prototype.map = function (fun /*, thisp */ ) {\n \"use strict\";\n\n if (this === void 0 || this === null) throw new TypeError();\n\n var t = Object(this);\n var len = t.length >>> 0;\n if (typeof fun !== \"function\") throw new TypeError();\n\n var res = new Array(len);\n var thisp = arguments[1];\n for (var i = 0; i < len; i++) {\n if (i in t) res[i] = fun.call(thisp, t[i], i, t);\n }\n\n return res;\n };\n}\n\n/* ------------------------------------- Generator -------------------------------------\n * Generates a fixed length gene sequence via a gene strategy object.\n * The gene strategy object must have two functions:\n *\t- \"create\": returns create a new gene \n *\t- \"mutate(existingGene)\": returns mutation of an existing gene \n */\nfunction Generator(length, mutationRate, geneStrategy) {\n this.size = length;\n this.mutationRate = mutationRate;\n this.geneStrategy = geneStrategy;\n}\n\nGenerator.prototype.spawn = function () {\n var genes = [],\n x;\n for (x = 0; x < this.size; x += 1) {\n genes.push(this.geneStrategy.create());\n }\n return genes;\n};\n\nGenerator.prototype.mutate = function (parent) {\n return parent.map(function (char) {\n if (Math.random() > this.mutationRate) {\n return char;\n }\n return this.geneStrategy.mutate(char);\n }, this);\n};\n\n/* ------------------------------------- Population -------------------------------------\n * Helper class that holds and spawns a new population.\n */\nfunction Population(size, generator) {\n this.size = size;\n this.generator = generator;\n\n this.population = [];\n // Build initial popuation;\n for (var x = 0; x < this.size; x += 1) {\n this.population.push(this.generator.spawn());\n }\n}\n\nPopulation.prototype.spawn = function (parent) {\n this.population = [];\n for (var x = 0; x < this.size; x += 1) {\n this.population.push(this.generator.mutate(parent));\n }\n};\n\n/* ------------------------------------- Evolver -------------------------------------\n * Attempts to converge a population based a fitness strategy object.\n * The fitness strategy object must have three function \n *\t- \"score(individual)\": returns a score for an individual.\n *\t- \"compare(scoreA, scoreB)\": return true if scoreA is better (ie more fit) then scoreB\n *\t- \"done( score )\": return true if score is acceptable (ie we have successfully converged). \n */\nfunction Evolver(size, generator, fitness) {\n this.done = false;\n this.fitness = fitness;\n this.population = new Population(size, generator);\n}\n\nEvolver.prototype.getFittest = function () {\n return this.population.population.reduce(function (best, individual) {\n var currentScore = this.fitness.score(individual);\n if (best === null || this.fitness.compare(currentScore, best.score)) {\n return {\n score: currentScore,\n individual: individual\n };\n } else {\n return best;\n }\n }, null);\n};\n\nEvolver.prototype.doGeneration = function () {\n this.fittest = this.getFittest();\n this.done = this.fitness.done(this.fittest.score);\n if (!this.done) {\n this.population.spawn(this.fittest.individual);\n }\n};\n\nEvolver.prototype.run = function (onCheckpoint, checkPointFrequency) {\n checkPointFrequency = checkPointFrequency || 10; // Default to Checkpoints every 10 generations\n var generation = 0;\n while (!this.done) {\n this.doGeneration();\n if (generation % checkPointFrequency === 0) {\n onCheckpoint(generation, this.fittest);\n }\n generation += 1;\n }\n onCheckpoint(generation, this.fittest);\n return this.fittest;\n};\n\n// ------------------------------------- Exports -------------------------------------\nwindow.Generator = Generator;\nwindow.Evolver = Evolver;\n\n\n// helper utitlity to combine elements of two arrays.\nArray.prototype.zip = function (b, func) {\n var result = [],\n max = Math.max(this.length, b.length),\n x;\n for (x = 0; x < max; x += 1) {\n result.push(func(this[x], b[x]));\n }\n return result;\n};\n\nvar target = \"METHINKS IT IS LIKE A WEASEL\", geneStrategy, fitness, target, generator, evolver, result;\n \ngeneStrategy = {\n // The allowed character set (as an array) \n characterSet: \"ABCDEFGHIJKLMNOPQRSTUVWXYZ \".split(\"\"),\n\n /*\n Pick a random character from the characterSet\n */\n create: function getRandomGene() {\n var randomNumber = Math.floor(Math.random() * this.characterSet.length);\n return this.characterSet[randomNumber];\n }\n};\ngeneStrategy.mutate = geneStrategy.create; // Our mutation stragtegy is to simply get a random gene\nfitness = {\n // The target (as an array of characters)\n target: target.split(\"\"),\n equal: function (geneA, geneB) {\n return (geneA === geneB ? 0 : 1);\n },\n sum: function (runningTotal, value) {\n return runningTotal + value;\n },\n\n /*\n We give one point to for each corect letter\n */\n score: function (genes) {\n var diff = genes.zip(this.target, this.equal); // create an array of ones and zeros \n return diff.reduce(this.sum, 0); // Sum the array values together.\n },\n compare: function (scoreA, scoreB) {\n return scoreA <= scoreB; // Lower scores are better\n },\n done: function (score) {\n return score === 0; // We have matched the target string.\n }\n};\n\ngenerator = new Generator(target.length, 0.05, geneStrategy);\nevolver = new Evolver(100, generator, fitness);\n\nfunction showProgress(generation, fittest) {\n document.write(\"Generation: \" + generation + \", Best: \" + fittest.individual.join(\"\") + \", fitness:\" + fittest.score + \" \");\n}\nresult = evolver.run(showProgress);\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Execute HQ9+",
- "type": "Waypoint",
- "description": [
- "Task:",
- "
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "The function below executes a HQ9+ program and returns the program output as a string.",
- "function hq9plus(code) {",
- " var out = '';",
- " var acc = 0;",
- " ",
- " for (var i=0; i1; j--) {",
- " out += j + \" bottles of beer on the wall, \" + j + \" bottles of beer.\\n\";",
- " out += \"Take one down and pass it around, \" + (j-1) + \" bottles of beer.\\n\\n\";",
- " }",
- " out += \"1 bottle of beer on the wall, 1 bottle of beer.\\n\" +",
- " \"Take one down and pass it around, no more bottles of beer on the wall.\\n\\n\" +",
- " \"No more bottles of beer on the wall, no more bottles of beer.\\n\" +",
- " \"Go to the store and buy some more, 99 bottles of beer on the wall.\\n\";",
- " break;",
- " case '+': acc++; break;",
- " }",
- " }",
- " return out;",
- "}",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e43",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "function hq9plus(code) {\n var out = '';\n var acc = 0;\n \n for (var i=0; i1; j--) {\n out += j + \" bottles of beer on the wall, \" + j + \" bottles of beer.\\n\";\n out += \"Take one down and pass it around, \" + (j-1) + \" bottles of beer.\\n\\n\";\n }\n out += \"1 bottle of beer on the wall, 1 bottle of beer.\\n\" +\n \"Take one down and pass it around, no more bottles of beer on the wall.\\n\\n\" +\n \"No more bottles of beer on the wall, no more bottles of beer.\\n\" +\n \"Go to the store and buy some more, 99 bottles of beer on the wall.\\n\";\n break;\n case '+': acc++; break;\n }\n }\n return out;\n}\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Execute SNUSP",
- "type": "Waypoint",
- "description": [
- "
RCSNUSP is a set of SNUSP compilers and interpreters written for Rosetta Code in a variety of languages. Below are links to each of the versions of RCSNUSP.
An implementation need only properly implement the Core SNUSP instructions ('$', '\\', '/', '+', '-', '<', '>', ',', '.', '!', and '?'). Modular SNUSP ('#', '@') and Bloated SNUSP (':', ';', '%', and '&') are also allowed, but not required. Any extra characters that you implement should be noted in the description of your implementation. Any cell size is allowed, EOF support is optional, as is whether you have bounded or unbounded memory.
Create a routine that, given a set of strings representing directory paths and a single character directory separator, will return a string representing that part of the directory tree that is common to all the directories.
Test your routine using the forward slash '/' character as the directory separator and the following three strings as input paths:
",
- "
'/home/user1/tmp/coverage/test'
",
- "
'/home/user1/tmp/covert/operator'
",
- "
'/home/user1/tmp/coven/members'
Note: The resultant path should be the valid directory '/home/user1/tmp' and not the longest common string '/home/user1/tmp/cove'.
",
- "
If your language has a routine that performs this function (even if it does not have a changeable separator character), then mention it as part of the task.
A truncatable prime is one where all non-empty substrings that finish at the end of the number (right-substrings) are also primes when understood as numbers in a particular base. The largest such prime in a given (integer) base is therefore computable, provided the base is larger than 2.
Let's consider what happens in base 10. Obviously the right most digit must be prime, so in base 10 candidates are 2,3,5,7. Putting a digit in the range 1 to base-1 in front of each candidate must result in a prime. So 2 and 5, like the whale and the petunias in The Hitchhiker's Guide to the Galaxy, come into existence only to be extinguished before they have time to realize it, because 2 and 5 preceded by any digit in the range 1 to base-1 is not prime. Some numbers formed by preceding 3 or 7 by a digit in the range 1 to base-1 are prime. So 13,17,23,37,43,47,53,67,73,83,97 are candidates. Again, putting a digit in the range 1 to base-1 in front of each candidate must be a prime. Repeating until there are no larger candidates finds the largest left truncatable prime.
Let's work base 3 by hand:
0 and 1 are not prime so the last digit must be 2. 123 = 510 which is prime, 223 = 810 which is not so 123 is the only candidate. 1123 = 1410 which is not prime, 2123 = 2310 which is, so 2123 is the only candidate. 12123 = 5010 which is not prime, 22123 = 7710 which also is not prime. So there are no more candidates, therefore 23 is the largest left truncatable prime in base 3.
The task is to reconstruct as much, and possibly more, of the table in the OEIS as you are able.
",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e5b",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "(() => {\n 'use strict';\n\n // GENERIC FUNCTIONS\n\n // range :: Int -> Int -> [Int]\n const range = (m, n) =>\n Array.from({\n length: Math.floor(n - m) + 1\n }, (_, i) => m + i);\n\n // compose :: (b -> c) -> (a -> b) -> (a -> c)\n const compose = (f, g) => x => f(g(x));\n\n // listApply :: [(a -> b)] -> [a] -> [b]\n const listApply = (fs, xs) =>\n [].concat.apply([], fs.map(f =>\n [].concat.apply([], xs.map(x => [f(x)]))));\n\n // pure :: a -> [a]\n const pure = x => [x];\n\n // curry :: Function -> Function\n const curry = (f, ...args) => {\n const go = xs => xs.length >= f.length ? (f.apply(null, xs)) :\n function () {\n return go(xs.concat([].slice.apply(arguments)));\n };\n return go([].slice.call(args, 1));\n };\n\n // transpose :: [[a]] -> [[a]]\n const transpose = xs =>\n xs[0].map((_, iCol) => xs.map(row => row[iCol]));\n\n // reverse :: [a] -> [a]\n const reverse = xs =>\n typeof xs === 'string' ? (\n xs.split('')\n .reverse()\n .join('')\n ) : xs.slice(0)\n .reverse();\n\n // take :: Int -> [a] -> [a]\n const take = (n, xs) => xs.slice(0, n);\n\n // drop :: Int -> [a] -> [a]\n const drop = (n, xs) => xs.slice(n);\n\n // maximum :: [a] -> a\n const maximum = xs =>\n xs.reduce((a, x) => (x > a || a === undefined ? x : a), undefined);\n\n // quotRem :: Integral a => a -> a -> (a, a)\n const quotRem = (m, n) => [Math.floor(m / n), m % n];\n\n // length :: [a] -> Int\n const length = xs => xs.length;\n\n // justifyLeft :: Int -> Char -> Text -> Text\n const justifyLeft = (n, cFiller, strText) =>\n n > strText.length ? (\n (strText + cFiller.repeat(n))\n .substr(0, n)\n ) : strText;\n\n // unwords :: [String] -> String\n const unwords = xs => xs.join(' ');\n\n // unlines :: [String] -> String\n const unlines = xs => xs.join('\\n');\n\n\n // BASES AND PALINDROMES\n\n // show, showBinary, showTernary :: Int -> String\n const show = n => n.toString(10);\n const showBinary = n => n.toString(2);\n const showTernary = n => n.toString(3);\n\n // readBase3 :: String -> Int\n const readBase3 = s => parseInt(s, 3);\n\n // base3Palindrome :: Int -> String\n const base3Palindrome = n => {\n const s = showTernary(n);\n return s + '1' + reverse(s);\n };\n\n // isBinPal :: Int -> Bool\n const isBinPal = n => {\n const\n s = showBinary(n),\n [q, r] = quotRem(s.length, 2);\n return (r !== 0) && drop(q + 1, s) === reverse(take(q, s));\n };\n\n // solutions :: [Int]\n const solutions = [0, 1].concat(range(1, 10E5)\n .map(compose(readBase3, base3Palindrome))\n .filter(isBinPal));\n\n // TABULATION\n\n // cols :: [[Int]]\n const cols = transpose(\n [\n ['Decimal', 'Ternary', 'Binary']\n ].concat(\n solutions.map(\n compose(\n xs => listApply([show, showTernary, showBinary], xs),\n pure\n )\n )\n )\n );\n\n return unlines(\n transpose(cols.map(col => col.map(\n curry(justifyLeft)(maximum(col.map(length)) + 1, ' ')\n )))\n .map(unwords));\n})();\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Find the last Sunday of each month",
- "type": "Waypoint",
- "description": [
- "
Write a program or a script that returns the last Sundays of each month of a given year. The year may be given through any simple input method in your language (command line, std in, etc).
According to Wikipedia, \"In computing, a first-class object ... is an entity that can be constructed at run-time, passed as a parameter, returned from a subroutine, or assigned into a variable\".
Often this term is used in the context of \"first class functions\". In an analogous way, a programming language may support \"first class environments\".
The environment is minimally, the set of variables accessible to a statement being executed. Change the environments and the same statement could produce different results when executed.
Often an environment is captured in a closure, which encapsulates a function together with an environment. That environment, however, is not first-class, as it cannot be created, passed etc. independently from the function's code.
Therefore, a first class environment is a set of variable bindings which can be constructed at run-time, passed as a parameter, returned from a subroutine, or assigned into a variable. It is like a closure without code. A statement must be able to be executed within a stored first class environment and act according to the environment variable values stored within.
The task: Build a dozen environments, and a single piece of code to be run repeatedly in each of these envionments.
Each environment contains the bindings for two variables: A value in the Hailstone sequence, and a count which is incremented until the value drops to 1. The initial hailstone values are 1 through 12, and the count in each environment is zero.
When the code runs, it calculates the next hailstone step in the current environment (unless the value is already 1) and counts the steps. Then it prints the current value in a tabular form.
When all hailstone values dropped to 1, processing stops, and the total number of hailstone steps for each environment is printed.
A language has first-class functions if it can do each of the following without recursively invoking a compiler or interpreter or otherwise metaprogramming:
Create new functions from preexisting functions at run-time",
- "Store functions in collections",
- "Use functions as arguments to other functions",
- "Use functions as return values of other functions",
- "Task:",
- "
Write a program to create an ordered collection A of functions of a real number. At least one function should be built-in and at least one should be user-defined; try using the sine, cosine, and cubing functions. Fill another collection B with the inverse of each function in A. Implement function composition as in Functional Composition. Finally, demonstrate that the result of applying the composition of each function in A and its inverse in B to a value, is the original value. (Within the limits of computational accuracy).
(A solution need not actually call the collections \"A\" and \"B\". These names are only used in the preceding paragraph for clarity.)
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "===ES5===",
- "// Functions as values of a variable",
- "var cube = function (x) {",
- " return Math.pow(x, 3);",
- "};",
- "var cuberoot = function (x) {",
- " return Math.pow(x, 1 / 3);",
- "};",
- "",
- "// Higher order function",
- "var compose = function (f, g) {",
- " return function (x) {",
- " return f(g(x));",
- " };",
- "};",
- "",
- "// Storing functions in a array",
- "var fun = [Math.sin, Math.cos, cube];",
- "var inv = [Math.asin, Math.acos, cuberoot];",
- "",
- "for (var i = 0; i < 3; i++) {",
- " // Applying the composition to 0.5",
- " console.log(compose(inv[i], fun[i])(0.5));",
- "}",
- "",
- "===ES6===",
- "// Functions as values of a variable",
- "var cube = x => Math.pow(x, 3);",
- "",
- "var cuberoot = x => Math.pow(x, 1 / 3);",
- "",
- "",
- "// Higher order function",
- "var compose = (f, g) => (x => f(g(x)));",
- "",
- "// Storing functions in a array",
- "var fun = [ Math.sin, Math.cos, cube ];",
- "var inv = [ Math.asin, Math.acos, cuberoot ];",
- "",
- "for (var i = 0; i < 3; i++) {",
- " // Applying the composition to 0.5",
- " console.log(compose(inv[i], fun[i])(0.5));",
- "}",
- "",
- "",
- "Result is always: ",
- "
0.5",
- "0.4999999999999999",
- "0.5
",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e5f",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "// Functions as values of a variable\nvar cube = function (x) {\n return Math.pow(x, 3);\n};\nvar cuberoot = function (x) {\n return Math.pow(x, 1 / 3);\n};\n\n// Higher order function\nvar compose = function (f, g) {\n return function (x) {\n return f(g(x));\n };\n};\n\n// Storing functions in a array\nvar fun = [Math.sin, Math.cos, cube];\nvar inv = [Math.asin, Math.acos, cuberoot];\n\nfor (var i = 0; i < 3; i++) {\n // Applying the composition to 0.5\n console.log(compose(inv[i], fun[i])(0.5));\n}\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "First-class functions/Use numbers analogously",
- "type": "Waypoint",
- "description": [
- "
In First-class functions, a language is showing how its manipulation of functions is similar to its manipulation of other types.
This tasks aim is to compare and contrast a language's implementation of first class functions, with its normal handling of numbers.
",
- "
Write a program to create an ordered collection of a mixture of literally typed and expressions producing a real number, together with another ordered collection of their multiplicative inverses. Try and use the following pseudo-code to generate the numbers for the ordered collections:
",
- "
x = 2.0
",
- "
xi = 0.5
",
- "
y = 4.0
",
- "
yi = 0.25
",
- "
z = x + y
",
- "
zi = 1.0 / ( x + y )
Create a function multiplier, that given two numbers as arguments returns a function that when called with one argument, returns the result of multiplying the two arguments to the call to multiplier that created it and the argument in the call:
",
- "
new_function = multiplier(n1,n2)
",
- "
# where new_function(m) returns the result of n1 * n2 * m
Applying the multiplier of a number and its inverse from the two ordered collections of numbers in pairs, show that the result in each case is one.
",
- "
Compare and contrast the resultant program with the corresponding entry in First-class functions. They should be close.
To paraphrase the task description: Do what was done before, but with numbers rather than functions
The month of October in 2010 has five Fridays, five Saturdays, and five Sundays.
",
- "Task:",
- "Write a program to show all months that have this same characteristic of five full weekends from the year 1900 through 2100 (Gregorian calendar). ",
- "Show the number of months with this property (there should be 201).",
- "Show at least the first and last five dates, in order.
Algorithm suggestions
",
- "Count the number of Fridays, Saturdays, and Sundays in every month.",
- "Find all of the 31-day months that begin on Friday.
Extra credit
Count and/or show all of the years which do not have at least one five-weekend month (there should be 29).
",
- "",
- "",
- "Here is an alternative solution that uses the offset between the first day of every month, generating the same solution but without relying on the Date object.",
- "var Months = [",
- " 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',",
- " 'Jul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'",
- "];",
- "",
- "var leap = 0,",
- " // Relative offsets between first day of each month",
- " offset = [3,0,3,2,3,2,3,3,2,3,2,3],",
- "",
- " // Months that contain 31 days",
- " longMonths = [1,3,5,7,8,10,12],",
- "",
- " startYear = 1900,",
- " year = startYear,",
- " endYear = 2100,",
- "",
- " // Jan 1, 1900 starts on a Monday",
- " day = 1,",
- "",
- " totalPerYear = 0,",
- " total = 0,",
- " without = 0;",
- "",
- "for (; year < endYear + 1; year++) {",
- " leap = totalPerYear = 0;",
- "",
- " if (year % 4 === 0) {",
- " if (year % 100 === 0) {",
- " if (year % 400 === 0) {",
- " leap = 1;",
- " }",
- " } else {",
- " leap = 1;",
- " }",
- " }",
- "",
- " for (var i = 0; i < offset.length; i++) {",
- " for (var j = 0; day === 5 && j < longMonths.length; j++) {",
- " if (i + 1 === longMonths[j]) {",
- " console.log(year + '-' + Months[i]);",
- " totalPerYear++;",
- " total++;",
- " break;",
- " }",
- " }",
- "",
- " // February -- if leap year, then +1 day",
- " if (i == 1) {",
- " day = (day + leap) % 7; ",
- " } else {",
- " day = (day + offset[i]) % 7;",
- " }",
- " }",
- "",
- " if (totalPerYear === 0) {",
- " without++;",
- " }",
- "}",
- "",
- "console.log('Number of months that have five full weekends from 1900 to 2100: ' + total);",
- "console.log('Number of years without any five full weekend months: ' + without);",
- "{{out}}",
- "
1901-Mar",
- "1902-Aug",
- "1903-May",
- "1904-Jan",
- "1904-Jul",
- "...",
- "2097-Mar",
- "2098-Aug",
- "2099-May",
- "2100-Jan",
- "2100-Oct",
- "Number of months that have five full weekends from 1900 to 2100: 201",
- "Number of years without any five full weekend months: 29
Floyd's triangle lists the natural numbers in a right triangle aligned to the left where
",
- "the first row is 1 (unity)",
- "successive rows start towards the left with the next number followed by successive naturals listing one more number than the line above.
The first few lines of a Floyd triangle looks like this:
# Write a program to generate and display here the first n lines of a Floyd triangle. (Use n=5 and n=14 rows).
",
- "
# Ensure that when displayed in a mono-space font, the numbers line up in vertical columns as shown and that only one space separates numbers of the last row.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "=== ES5 ===",
- "(In a functional idiom of JavaScript)",
- "",
- "Two main functions:",
- ":#An expression of the Floyd triangle as a list of lists (a function of the number of rows),",
- ":#and a mapping of that expression to a formatted string.",
- "",
- "(function () {",
- " 'use strict';",
- "",
- " // FLOYD's TRIANGLE -------------------------------------------------------",
- "",
- " // floyd :: Int -> [[Int]]",
- " function floyd(n) {",
- " return snd(mapAccumL(function (start, row) {",
- " return [start + row + 1, enumFromTo(start, start + row)];",
- " }, 1, enumFromTo(0, n - 1)));",
- " };",
- "",
- " // showFloyd :: [[Int]] -> String",
- " function showFloyd(xss) {",
- " var ws = map(compose([succ, length, show]), last(xss));",
- " return unlines(map(function (xs) {",
- " return concat(zipWith(function (w, x) {",
- " return justifyRight(w, ' ', show(x));",
- " }, ws, xs));",
- " }, xss));",
- " };",
- "",
- "",
- " // GENERIC FUNCTIONS ------------------------------------------------------",
- "",
- " // compose :: [(a -> a)] -> (a -> a)",
- " function compose(fs) {",
- " return function (x) {",
- " return fs.reduceRight(function (a, f) {",
- " return f(a);",
- " }, x);",
- " };",
- " };",
- "",
- " // concat :: [[a]] -> [a] | [String] -> String",
- " function concat(xs) {",
- " if (xs.length > 0) {",
- " var unit = typeof xs[0] === 'string' ? '' : [];",
- " return unit.concat.apply(unit, xs);",
- " } else return [];",
- " };",
- "",
- " // enumFromTo :: Int -> Int -> [Int]",
- " function enumFromTo(m, n) {",
- " return Array.from({",
- " length: Math.floor(n - m) + 1",
- " }, function (_, i) {",
- " return m + i;",
- " });",
- " };",
- "",
- " // justifyRight :: Int -> Char -> Text -> Text",
- " function justifyRight(n, cFiller, strText) {",
- " return n > strText.length ? (cFiller.repeat(n) + strText)",
- " .slice(-n) : strText;",
- " };",
- "",
- " // last :: [a] -> a",
- " function last(xs) {",
- " return xs.length ? xs.slice(-1)[0] : undefined;",
- " };",
- "",
- " // length :: [a] -> Int",
- " function length(xs) {",
- " return xs.length;",
- " };",
- "",
- " // map :: (a -> b) -> [a] -> [b]",
- " function map(f, xs) {",
- " return xs.map(f);",
- " };",
- "",
- " // 'The mapAccumL function behaves like a combination of map and foldl;",
- " // it applies a function to each element of a list, passing an accumulating",
- " // parameter from left to right, and returning a final value of this",
- " // accumulator together with the new list.' (See hoogle )",
- "",
- " // mapAccumL :: (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y])",
- " function mapAccumL(f, acc, xs) {",
- " return xs.reduce(function (a, x) {",
- " var pair = f(a[0], x);",
- "",
- " return [pair[0], a[1].concat([pair[1]])];",
- " }, [acc, []]);",
- " };",
- "",
- " // show ::",
- " // (a -> String) f, Num n =>",
- " // a -> maybe f -> maybe n -> String",
- " var show = JSON.stringify;",
- "",
- " // snd :: (a, b) -> b",
- " function snd(tpl) {",
- " return Array.isArray(tpl) ? tpl[1] : undefined;",
- " };",
- "",
- " // succ :: Int -> Int",
- " function succ(x) {",
- " return x + 1;",
- " };",
- "",
- " // unlines :: [String] -> String",
- " function unlines(xs) {",
- " return xs.join('\\n');",
- " };",
- "",
- " // zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]",
- " function zipWith(f, xs, ys) {",
- " var ny = ys.length;",
- " return (xs.length <= ny ? xs : xs.slice(0, ny))",
- " .map(function (x, i) {",
- " return f(x, ys[i]);",
- " });",
- " };",
- "",
- " // TEST ( n=5 and n=14 rows ) ---------------------------------------------",
- "",
- " return unlines(map(function (n) {",
- " return showFloyd(floyd(n)) + '\\n';",
- " }, [5, 14]));",
- "})();",
- "{{Out}}",
- "
",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e66",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "(function () {\n 'use strict';\n\n // FLOYD's TRIANGLE -------------------------------------------------------\n\n // floyd :: Int -> [[Int]]\n function floyd(n) {\n return snd(mapAccumL(function (start, row) {\n return [start + row + 1, enumFromTo(start, start + row)];\n }, 1, enumFromTo(0, n - 1)));\n };\n\n // showFloyd :: [[Int]] -> String\n function showFloyd(xss) {\n var ws = map(compose([succ, length, show]), last(xss));\n return unlines(map(function (xs) {\n return concat(zipWith(function (w, x) {\n return justifyRight(w, ' ', show(x));\n }, ws, xs));\n }, xss));\n };\n\n\n // GENERIC FUNCTIONS ------------------------------------------------------\n\n // compose :: [(a -> a)] -> (a -> a)\n function compose(fs) {\n return function (x) {\n return fs.reduceRight(function (a, f) {\n return f(a);\n }, x);\n };\n };\n\n // concat :: [[a]] -> [a] | [String] -> String\n function concat(xs) {\n if (xs.length > 0) {\n var unit = typeof xs[0] === 'string' ? '' : [];\n return unit.concat.apply(unit, xs);\n } else return [];\n };\n\n // enumFromTo :: Int -> Int -> [Int]\n function enumFromTo(m, n) {\n return Array.from({\n length: Math.floor(n - m) + 1\n }, function (_, i) {\n return m + i;\n });\n };\n\n // justifyRight :: Int -> Char -> Text -> Text\n function justifyRight(n, cFiller, strText) {\n return n > strText.length ? (cFiller.repeat(n) + strText)\n .slice(-n) : strText;\n };\n\n // last :: [a] -> a\n function last(xs) {\n return xs.length ? xs.slice(-1)[0] : undefined;\n };\n\n // length :: [a] -> Int\n function length(xs) {\n return xs.length;\n };\n\n // map :: (a -> b) -> [a] -> [b]\n function map(f, xs) {\n return xs.map(f);\n };\n\n // 'The mapAccumL function behaves like a combination of map and foldl;\n // it applies a function to each element of a list, passing an accumulating\n // parameter from left to right, and returning a final value of this\n // accumulator together with the new list.' (See hoogle )\n\n // mapAccumL :: (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y])\n function mapAccumL(f, acc, xs) {\n return xs.reduce(function (a, x) {\n var pair = f(a[0], x);\n\n return [pair[0], a[1].concat([pair[1]])];\n }, [acc, []]);\n };\n\n // show ::\n // (a -> String) f, Num n =>\n // a -> maybe f -> maybe n -> String\n var show = JSON.stringify;\n\n // snd :: (a, b) -> b\n function snd(tpl) {\n return Array.isArray(tpl) ? tpl[1] : undefined;\n };\n\n // succ :: Int -> Int\n function succ(x) {\n return x + 1;\n };\n\n // unlines :: [String] -> String\n function unlines(xs) {\n return xs.join('\\n');\n };\n\n // zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]\n function zipWith(f, xs, ys) {\n var ny = ys.length;\n return (xs.length <= ny ? xs : xs.slice(0, ny))\n .map(function (x, i) {\n return f(x, ys[i]);\n });\n };\n\n // TEST ( n=5 and n=14 rows ) ---------------------------------------------\n\n return unlines(map(function (n) {\n return showFloyd(floyd(n)) + '\\n';\n }, [5, 14]));\n})();\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Floyd-Warshall algorithm",
- "type": "Waypoint",
- "description": [
- "
The Floyd–Warshall algorithm is an algorithm for finding shortest paths in a weighted graph with positive or negative edge weights.
",
- "Task",
- "
Find the lengths of the shortest paths between all pairs of vertices of the given directed graph. Your code may assume that the input has already been checked for loops, parallel edges and negative cycles.
",
- "
Print the pair, the distance and (optionally) the path.
The ai are called the coefficients of the series. Such sums can be added, multiplied etc., where the new coefficients of the powers of x are calculated according to the usual rules.
If one is not interested in evaluating such a series for particular values of x, or in other words, if convergence doesn't play a role, then such a collection of coefficients is called formal power series. It can be treated like a new kind of number.
Task: Implement formal power series as a numeric type. Operations should at least include addition, multiplication, division and additionally non-numeric operations like differentiation and integration (with an integration constant of zero). Take care that your implementation deals with the potentially infinite number of coefficients.
As an example, define the power series of sine and cosine in terms of each other using integration, as in
$\\sin x = \\int_0^x \\cos t\\, dt$
$\\cos x = 1 - \\int_0^x \\sin t\\, dt$
Goals: Demonstrate how the language handles new numeric types and delayed (or lazy) evaluation.
Provide code that produces a list of numbers which is the nth order forward difference, given a non-negative integer (specifying the order) and a list of numbers.
",
- "
The first-order forward difference of a list of numbers A is a new list B, where Bn = An+1 - An.
",
- "Algorithmic options:",
- "Iterate through all previous forward differences and re-calculate a new array each time.",
- "Use this formula (from Wikipedia):",
- "
Each of these 1-bit full adders can be built with two half adders and an or gate. Finally a half adder can be made using a xor gate and an and gate.
",
- "
The xor gate can be made using two nots, two ands and one or.
Not, or and and, the only allowed \"gates\" for the task, can be \"imitated\" by using the bitwise operators of your language.
",
- "
If there is not a bit type in your language, to be sure that the not does not \"invert\" all the other bits of the basic type (e.g. a byte) we are not interested in, you can use an extra nand (and then not) with the constant 1 on one input.
Instead of optimizing and reducing the number of gates used for the final 4-bit adder, build it in the most straightforward way, connecting the other \"constructive blocks\", in turn made of \"simpler\" and \"smaller\" ones.
{|
",
- "
|+Schematics of the \"constructive blocks\"
",
- "
!Xor gate done with ands, ors and nots
",
- "
!A half adder
",
- "
!A full adder
",
- "
!A 4-bit adder
",
- "
|-
",
- "
|
",
- "
|
",
- "
|
",
- "
|
",
- "
|}
Solutions should try to be as descriptive as possible, making it as easy as possible to identify \"connections\" between higher-order \"blocks\".
",
- "
It is not mandatory to replicate the syntax of higher-order blocks in the atomic \"gate\" blocks, i.e. basic \"gate\" operations can be performed as usual bitwise operations, or they can be \"wrapped\" in a block in order to expose the same syntax of higher-order blocks, at implementers' choice.
To test the implementation, show the sum of two four-bit numbers (in binary).
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "",
- "===Error Handling===",
- "In order to keep the binary-ness obvious, all operations will occur on ",
- "0s and 1s. To enforce this, we'll first create a couple of helper functions.",
- "",
- "",
- "function acceptedBinFormat(bin) {",
- " if (bin == 1 || bin === 0 || bin === '0')",
- " return true;",
- " else",
- " return bin;",
- "}",
- "",
- "function arePseudoBin() {",
- " var args = [].slice.call(arguments), len = args.length;",
- " while(len--)",
- " if (acceptedBinFormat(args[len]) !== true)",
- " throw new Error('argument must be 0, \\'0\\', 1, or \\'1\\', argument ' + len + ' was ' + args[len]);",
- " return true;",
- "}",
- "",
- "",
- "===Implementation===",
- "Now we build up the gates, starting with 'not' and 'and' as building blocks.",
- "Those allow us to construct 'nand', 'or', and 'xor' then a half and full adders",
- "and, finally, the four bit adder.",
- "",
- "",
- "// basic building blocks allowed by the rules are ~, &, and |, we'll fake these",
- "// in a way that makes what they do (at least when you use them) more obvious ",
- "// than the other available options do.",
- "",
- "function not(a) {",
- " if (arePseudoBin(a))",
- " return a == 1 ? 0 : 1;",
- "}",
- "",
- "function and(a, b) {",
- " if (arePseudoBin(a, b))",
- " return a + b < 2 ? 0 : 1;",
- "}",
- "",
- "function nand(a, b) {",
- " if (arePseudoBin(a, b))",
- " return not(and(a, b));",
- "}",
- "",
- "function or(a, b) {",
- " if (arePseudoBin(a, b))",
- " return nand(nand(a,a), nand(b,b));",
- "}",
- "",
- "function xor(a, b) {",
- " if (arePseudoBin(a, b))",
- " return nand(nand(nand(a,b), a), nand(nand(a,b), b));",
- "}",
- "",
- "function halfAdder(a, b) {",
- " if (arePseudoBin(a, b))",
- " return { carry: and(a, b), sum: xor(a, b) };",
- "}",
- "",
- "function fullAdder(a, b, c) {",
- " if (arePseudoBin(a, b, c)) {",
- " var h0 = halfAdder(a, b), ",
- " h1 = halfAdder(h0.sum, c);",
- " return {carry: or(h0.carry, h1.carry), sum: h1.sum };",
- " }",
- "}",
- "",
- "function fourBitAdder(a, b) {",
- " if (typeof a.length == 'undefined' || typeof b.length == 'undefined')",
- " throw new Error('bad values');",
- " // not sure if the rules allow this, but we need to pad the values ",
- " // if they're too short and trim them if they're too long",
- " var inA = Array(4), ",
- " inB = Array(4), ",
- " out = Array(4), ",
- " i = 4, ",
- " pass;",
- " ",
- " while (i--) {",
- " inA[i] = a[i] != 1 ? 0 : 1;",
- " inB[i] = b[i] != 1 ? 0 : 1;",
- " }",
- "",
- " // now we can start adding... I'd prefer to do this in a loop, ",
- " // but that wouldn't be \"connecting the other 'constructive blocks', ",
- " // in turn made of 'simpler' and 'smaller' ones\"",
- " ",
- " pass = halfAdder(inA[3], inB[3]);",
- " out[3] = pass.sum;",
- " pass = fullAdder(inA[2], inB[2], pass.carry);",
- " out[2] = pass.sum;",
- " pass = fullAdder(inA[1], inB[1], pass.carry);",
- " out[1] = pass.sum;",
- " pass = fullAdder(inA[0], inB[0], pass.carry);",
- " out[0] = pass.sum;",
- " return out.join('');",
- "}",
- "",
- "===Example Use===",
- "fourBitAdder('1010', '0101'); // 1111 (15)",
- "",
- "all results:",
- "",
- "",
- "// run this in your browsers console",
- "var outer = inner = 16, a, b;",
- "",
- "while(outer--) {",
- " a = (8|outer).toString(2);",
- " while(inner--) {",
- " b = (8|inner).toString(2);",
- " console.log(a + ' + ' + b + ' = ' + fourBitAdder(a, b));",
- " }",
- " inner = outer;",
- "}",
- "",
- "",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e6d",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "\nfunction acceptedBinFormat(bin) {\n if (bin == 1 || bin === 0 || bin === '0')\n return true;\n else\n return bin;\n}\n\nfunction arePseudoBin() {\n var args = [].slice.call(arguments), len = args.length;\n while(len--)\n if (acceptedBinFormat(args[len]) !== true)\n throw new Error('argument must be 0, \\'0\\', 1, or \\'1\\', argument ' + len + ' was ' + args[len]);\n return true;\n}\n\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Fractran",
- "type": "Waypoint",
- "description": [
- "
FRACTRAN is a Turing-complete esoteric programming language invented by the mathematician John Horton Conway.
A FRACTRAN program is an ordered list of positive fractions $P = (f_1, f_2, \\ldots, f_m)$, together with an initial positive integer input $n$.
",
- "
The program is run by updating the integer $n$ as follows:
for the first fraction, $f_i$, in the list for which $nf_i$ is an integer, replace $n$ with $nf_i$ ;",
- "repeat this rule until no fraction in the list produces an integer when multiplied by $n$, then halt.",
- "
Starting with $n=2$, this FRACTRAN program will change $n$ to $15=2\\times (15/2)$, then $825=15\\times (55/1)$, generating the following sequence of integers:
Write a program that reads a list of fractions in a natural format from the keyboard or from a string,
",
- "
to parse it into a sequence of fractions (i.e. two integers),
",
- "
and runs the FRACTRAN starting from a provided integer, writing the result at each step.
",
- "
It is also required that the number of step is limited (by a parameter easy to find).
",
- "Extra credit:",
- "
Use this program to derive the first 20 or so prime numbers.
",
- "See also:",
- "
For more on how to program FRACTRAN as a universal programming language, see:
",
- "J. H. Conway (1987). Fractran: A Simple Universal Programming Language for Arithmetic. In: Open Problems in Communication and Computation, pages 4–26. Springer.",
- "J. H. Conway (2010). \"FRACTRAN: A simple universal programming language for arithmetic\". In Jeffrey C. Lagarias. The Ultimate Challenge: the 3x+1 problem. American Mathematical Society. pp. 249–264. ISBN 978-0-8218-4940-8. Zbl 1216.68068.",
- "Number Pathology: Fractran by Mark C. Chu-Carroll; October 27, 2006."
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "",
- "var num = new Array();",
- "var den = new Array();",
- "var val ;",
- "",
- "function compile(prog){",
- " var regex = /\\s*(\\d*)\\s*\\/\\s*(\\d*)\\s*(.*)/m;",
- " while(regex.test(prog)){",
- " num.push(regex.exec(prog)[1]);",
- " den.push(regex.exec(prog)[2]);",
- " prog = regex.exec(prog)[3];",
- " }",
- "}",
- "",
- "function dump(prog){",
- " for(var i=0; i\";",
- "}",
- "",
- "function step(val){",
- " var i=0;",
- " while(i\";",
- " val = step(val);",
- " i ++;",
- " }",
- "}",
- "",
- "// Main",
- "compile(\"17/91 78/85 19/51 23/38 29/33 77/29 95/23 77/19 1/17 11/13 13/11 15/14 15/2 55/1\");",
- "dump(); ",
- "var limit = 15;",
- "exec(2);",
- "",
- "",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e6f",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "\nvar num = new Array();\nvar den = new Array();\nvar val ;\n\nfunction compile(prog){\n var regex = /\\s*(\\d*)\\s*\\/\\s*(\\d*)\\s*(.*)/m;\n while(regex.test(prog)){\n num.push(regex.exec(prog)[1]);\n den.push(regex.exec(prog)[2]);\n prog = regex.exec(prog)[3];\n }\n}\n\nfunction dump(prog){\n for(var i=0; i\";\n}\n\nfunction step(val){\n var i=0;\n while(i\";\n val = step(val);\n i ++;\n }\n}\n\n// Main\ncompile(\"17/91 78/85 19/51 23/38 29/33 77/29 95/23 77/19 1/17 11/13 13/11 15/14 15/2 55/1\");\ndump(); \nvar limit = 15;\nexec(2);\n\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Gamma function",
- "type": "Waypoint",
- "description": [
- "Task:",
- "
Implement one algorithm (or more) to compute the Gamma ($\\Gamma$) function (in the real field only).
If your language has the function as built-in or you know a library which has it, compare your implementation's results with the results of the built-in/library function.
This suggests a straightforward (but inefficient) way of computing the $\\Gamma$ through numerical integration.
",
- "
Better suggested methods:
",
- "Lanczos approximation",
- "Stirling's approximation"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "Implementation of Lanczos approximation.",
- "function gamma(x) {",
- " var p = [0.99999999999980993, 676.5203681218851, -1259.1392167224028,",
- " 771.32342877765313, -176.61502916214059, 12.507343278686905,",
- " -0.13857109526572012, 9.9843695780195716e-6, 1.5056327351493116e-7",
- " ];",
- "",
- " var g = 7;",
- " if (x < 0.5) {",
- " return Math.PI / (Math.sin(Math.PI * x) * gamma(1 - x));",
- " }",
- "",
- " x -= 1;",
- " var a = p[0];",
- " var t = x + g + 0.5;",
- " for (var i = 1; i < p.length; i++) {",
- " a += p[i] / (x + i);",
- " }",
- "",
- " return Math.sqrt(2 * Math.PI) * Math.pow(t, x + 0.5) * Math.exp(-t) * a;",
- "}",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e76",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "function gamma(x) {\n var p = [0.99999999999980993, 676.5203681218851, -1259.1392167224028,\n 771.32342877765313, -176.61502916214059, 12.507343278686905,\n -0.13857109526572012, 9.9843695780195716e-6, 1.5056327351493116e-7\n ];\n\n var g = 7;\n if (x < 0.5) {\n return Math.PI / (Math.sin(Math.PI * x) * gamma(1 - x));\n }\n\n x -= 1;\n var a = p[0];\n var t = x + g + 0.5;\n for (var i = 1; i < p.length; i++) {\n a += p[i] / (x + i);\n }\n\n return Math.sqrt(2 * Math.PI) * Math.pow(t, x + 0.5) * Math.exp(-t) * a;\n}\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Gaussian elimination",
- "type": "Waypoint",
- "description": [
- "
Problem: Solve Ax=b using Gaussian elimination then backwards substitution. A being an n by n matrix. Also, x and b are n by 1 vectors. To improve accuracy, please use partial pivoting and scaling.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "From Numerical Recipes in C:",
- "// Lower Upper Solver",
- "function lusolve(A, b, update) {",
- "\tvar lu = ludcmp(A, update)",
- "\tif (lu === undefined) return // Singular Matrix!",
- "\treturn lubksb(lu, b, update)",
- "}",
- "",
- "// Lower Upper Decomposition",
- "function ludcmp(A, update) {",
- "\t// A is a matrix that we want to decompose into Lower and Upper matrices.",
- "\tvar d = true",
- "\tvar n = A.length",
- "\tvar idx = new Array(n) // Output vector with row permutations from partial pivoting",
- "\tvar vv = new Array(n) // Scaling information",
- "",
- "\tfor (var i=0; i max) max = temp",
- "\t\t}",
- "\t\tif (max == 0) return // Singular Matrix!",
- "\t\tvv[i] = 1 / max // Scaling",
- "\t}",
- "\t",
- "\tif (!update) { // make a copy of A ",
- "\t\tvar Acpy = new Array(n)",
- "\t\tfor (var i=0; i= max) {",
- "\t\t\t\tmax = temp",
- "\t\t\t\tjmax = j",
- "\t\t\t}",
- "\t\t}",
- "\t\tif (i <= jmax) {",
- "\t\t\tfor (var j=0; j -1)",
- "\t\t\tfor (var j=ii; j=0; i--) {",
- "\t\tvar sum = b[i]",
- "\t\tfor (var j=i+1; j",
- "",
- "{{output}}",
- "
",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e77",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "// Lower Upper Solver\nfunction lusolve(A, b, update) {\n\tvar lu = ludcmp(A, update)\n\tif (lu === undefined) return // Singular Matrix!\n\treturn lubksb(lu, b, update)\n}\n\n// Lower Upper Decomposition\nfunction ludcmp(A, update) {\n\t// A is a matrix that we want to decompose into Lower and Upper matrices.\n\tvar d = true\n\tvar n = A.length\n\tvar idx = new Array(n) // Output vector with row permutations from partial pivoting\n\tvar vv = new Array(n) // Scaling information\n\n\tfor (var i=0; i max) max = temp\n\t\t}\n\t\tif (max == 0) return // Singular Matrix!\n\t\tvv[i] = 1 / max // Scaling\n\t}\n\t\n\tif (!update) { // make a copy of A \n\t\tvar Acpy = new Array(n)\n\t\tfor (var i=0; i= max) {\n\t\t\t\tmax = temp\n\t\t\t\tjmax = j\n\t\t\t}\n\t\t}\n\t\tif (i <= jmax) {\n\t\t\tfor (var j=0; j -1)\n\t\t\tfor (var j=ii; j=0; i--) {\n\t\tvar sum = b[i]\n\t\tfor (var j=i+1; jreplaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "General FizzBuzz",
- "type": "Waypoint",
- "description": [
- "Task:",
- "
Write a generalized version of FizzBuzz that works for any list of factors, along with their words.
This is basically a \"fizzbuzz\" implementation where the user supplies the parameters.
The user will enter the max number, then they will enter the factors to be calculated along with the corresponding word to be printed.
For simplicity's sake, assume the user will input an integer as the max number and 3 factors, each with a word associated with them.
",
- "
For example, given:
",
- "
",
- ">20 #This is the maximum number, supplied by the user",
- ">3 Fizz #The user now enters the starting factor (3) and the word they want associated with it (Fizz)",
- ">5 Buzz #The user now enters the next factor (5) and the word they want associated with it (Buzz)",
- ">7 Baxx #The user now enters the next factor (7) and the word they want associated with it (Baxx)",
- "
In other words: For this example, print the numbers 1 through 20, replacing every multiple of 3 with \"Fizz\", every multiple of 5 with \"Buzz\", and every multiple of 7 with \"Baxx\".
In the case where a number is a multiple of at least two factors, print each of the words associated with those factors in the order of least to greatest factor.
For instance, the number 15 is a multiple of both 3 and 5; print \"FizzBuzz\".
If the max number was 105 instead of 20, you would print \"FizzBuzzBaxx\" because it's a multiple of 3, 5, and 7.
Chess960 is a variant of chess created by world champion Bobby Fischer. Unlike other variants of the game, Chess960 does not require a different material, but instead relies on a random initial position, with a few constraints:
as in the standard chess game, all eight white pawns must be placed on the second rank.",
- "White pieces must stand on the first rank as in the standard game, in random column order but with the two following constraints:",
- "* the bishops must be placed on opposite color squares (i.e. they must be an odd number of spaces apart or there must be an even number of spaces between them)",
- "* the King must be between two rooks (with any number of other pieces between them all)",
- "Black pawns and pieces must be placed respectively on the seventh and eighth ranks, mirroring the white pawns and pieces, just as in the standard game. (That is, their positions are not independently randomized.)",
- "
With those constraints there are 960 possible starting positions, thus the name of the variant.
",
- "Task:",
- "
The purpose of this task is to write a program that can randomly generate any one of the 960 Chess960 initial positions. You will show the result as the first rank displayed with Chess symbols in Unicode: ♔♕♖♗♘ or with the letters King Queen Rook Bishop kNight.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "This conforms to Altendörfer's single die method[https://en.wikipedia.org/wiki/Chess960_starting_position#Single_die_method], though the die will give no \"needless\" numbers.",
- "function ch960startPos() {",
- " var rank = new Array(8),",
- " // randomizer (our die)",
- " d = function(num) { return Math.floor(Math.random() * ++num) },",
- " emptySquares = function() {",
- " var arr = [];",
- " for (var i = 0; i < 8; i++) if (rank[i] == undefined) arr.push(i);",
- " return arr;",
- " };",
- " // place one bishop on any black square",
- " rank[d(2) * 2] = \"♗\";",
- " // place the other bishop on any white square",
- " rank[d(2) * 2 + 1] = \"♗\";",
- " // place the queen on any empty square",
- " rank[emptySquares()[d(5)]] = \"♕\";",
- " // place one knight on any empty square",
- " rank[emptySquares()[d(4)]] = \"♘\";",
- " // place the other knight on any empty square",
- " rank[emptySquares()[d(3)]] = \"♘\";",
- " // place the rooks and the king on the squares left, king in the middle",
- " for (var x = 1; x <= 3; x++) rank[emptySquares()[0]] = x==2 ? \"♔\" : \"♖\";",
- " return rank;",
- "}",
- "",
- "// testing (10 times)",
- "for (var x = 1; x <= 10; x++) console.log(ch960startPos().join(\" | \"));",
- "{{out}}",
- "
The test-output (exemplary each):
",
- "♖ | ♗ | ♗ | ♔ | ♘ | ♖ | ♘ | ♕ ",
- "♗ | ♗ | ♕ | ♖ | ♔ | ♘ | ♘ | ♖ ",
- "♖ | ♕ | ♘ | ♗ | ♗ | ♔ | ♘ | ♖ ",
- "♖ | ♗ | ♔ | ♘ | ♗ | ♕ | ♘ | ♖ ",
- "♗ | ♖ | ♕ | ♔ | ♘ | ♗ | ♘ | ♖ ",
- "♖ | ♗ | ♗ | ♕ | ♔ | ♘ | ♖ | ♘ ",
- "♗ | ♘ | ♖ | ♗ | ♔ | ♘ | ♕ | ♖ ",
- "♕ | ♘ | ♗ | ♖ | ♔ | ♗ | ♖ | ♘ ",
- "♗ | ♘ | ♖ | ♘ | ♕ | ♗ | ♔ | ♖ ",
- "♘ | ♗ | ♖ | ♔ | ♗ | ♘ | ♖ | ♕ ",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e79",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "function ch960startPos() {\n var rank = new Array(8),\n // randomizer (our die)\n d = function(num) { return Math.floor(Math.random() * ++num) },\n emptySquares = function() {\n var arr = [];\n for (var i = 0; i < 8; i++) if (rank[i] == undefined) arr.push(i);\n return arr;\n };\n // place one bishop on any black square\n rank[d(2) * 2] = \"♗\";\n // place the other bishop on any white square\n rank[d(2) * 2 + 1] = \"♗\";\n // place the queen on any empty square\n rank[emptySquares()[d(5)]] = \"♕\";\n // place one knight on any empty square\n rank[emptySquares()[d(4)]] = \"♘\";\n // place the other knight on any empty square\n rank[emptySquares()[d(3)]] = \"♘\";\n // place the rooks and the king on the squares left, king in the middle\n for (var x = 1; x <= 3; x++) rank[emptySquares()[0]] = x==2 ? \"♔\" : \"♖\";\n return rank;\n}\n\n// testing (10 times)\nfor (var x = 1; x <= 10; x++) console.log(ch960startPos().join(\" | \"));\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Generate lower case ASCII alphabet",
- "type": "Waypoint",
- "description": [
- "Task:",
- "
Generate an array, list, lazy sequence, or even an indexable string of all the lower case ASCII characters, from a to z. If the standard library contains such a sequence, show how to access it, but don't fail to show how to generate a similar sequence.
For this basic task use a reliable style of coding, a style fit for a very large program, and use strong typing if available. It's bug prone to enumerate all the lowercase characters manually in the code. During code review it's not immediate obvious to spot the bug in a Tcl line like this contained in a page of code:
",
- "
set alpha {a b c d e f g h i j k m n o p q r s t u v w x y z}
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "",
- "===ES5===",
- "",
- "In ES5, we can use '''String.fromCharCode()''', which suffices for Unicode characters which can be represented with one 16 bit number.",
- "",
- "For Unicode characters beyond this range, in ES5 we have to enter a pair of Unicode number escapes.",
- "",
- "(function (cFrom, cTo) {",
- "",
- " function cRange(cFrom, cTo) {",
- " var iStart = cFrom.charCodeAt(0);",
- "",
- " return Array.apply(",
- " null, Array(cTo.charCodeAt(0) - iStart + 1)",
- " ).map(function (_, i) {",
- "",
- " return String.fromCharCode(iStart + i);",
- "",
- " });",
- " }",
- "",
- " return cRange(cFrom, cTo);",
- "",
- "})('a', 'z');",
- "",
- "Returns:",
- "[\"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\"]",
- "",
- "===ES6===",
- "",
- "In ES6, the new '''String.fromCodePoint()''' method can can return 4-byte characters (such as Emoji, for example) as well as the usual 2-byte characters.",
- "",
- "(function (lstRanges) {",
- "",
- " function cRange(cFrom, cTo) {",
- " var iStart = cFrom.codePointAt(0);",
- "",
- " return Array.apply(",
- " null, Array(cTo.codePointAt(0) - iStart + 1)",
- " ).map(function (_, i) {",
- "",
- " return String.fromCodePoint(iStart + i);",
- "",
- " });",
- " }",
- "",
- " return lstRanges.map(function (lst) {",
- " return cRange(lst[0], lst[1]);",
- " });",
- "",
- "})([",
- " ['a', 'z'],",
- " ['🐐', '🐟']",
- "]); ",
- "",
- "Output:",
- "",
- "[[\"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\"],",
- " [\"🐐\", \"🐑\", \"🐒\", \"🐓\", \"🐔\", \"🐕\", \"🐖\", \"🐗\", \"🐘\", \"🐙\", \"🐚\", \"🐛\", \"🐜\", \"🐝\", \"🐞\", \"🐟\"]] ",
- "",
- "{{works with|ECMAScript|6}}",
- "var letters = []",
- "for (var i = 97; i <= 122; i++) {",
- " letters.push(String.fromCodePoint(i))",
- "}",
- "",
- "Or, if we want to write a more general ES6 function:",
- "",
- "(() => {",
- " // enumFromTo :: Enum a => a -> a -> [a]",
- " const enumFromTo = (m, n) => {",
- " const [intM, intN] = [m, n].map(fromEnum),",
- " f = typeof m === 'string' ? (",
- " (_, i) => chr(intM + i)",
- " ) : (_, i) => intM + i;",
- " return Array.from({",
- " length: Math.floor(intN - intM) + 1",
- " }, f);",
- " };",
- "",
- "",
- " // GENERIC FUNCTIONS ------------------------------------------------------",
- "",
- " // compose :: (b -> c) -> (a -> b) -> (a -> c)",
- " const compose = (f, g) => x => f(g(x));",
- "",
- " // chr :: Int -> Char",
- " const chr = x => String.fromCodePoint(x);",
- "",
- " // ord :: Char -> Int",
- " const ord = c => c.codePointAt(0);",
- "",
- " // fromEnum :: Enum a => a -> Int",
- " const fromEnum = x => {",
- " const type = typeof x;",
- " return type === 'boolean' ? (",
- " x ? 1 : 0",
- " ) : type === 'string' ? ord(x) : x;",
- " };",
- "",
- " // map :: (a -> b) -> [a] -> [b]",
- " const map = (f, xs) => xs.map(f);",
- "",
- " // show :: a -> String",
- " const show = x => JSON.stringify(x);",
- "",
- " // uncurry :: Function -> Function",
- " const uncurry = f => args => f.apply(null, args);",
- "",
- " // unlines :: [String] -> String",
- " const unlines = xs => xs.join('\\n');",
- "",
- " // unwords :: [String] -> String",
- " const unwords = xs => xs.join(' ');",
- "",
- " // TEST -------------------------------------------------------------------",
- " return unlines(map(compose(unwords, uncurry(enumFromTo)), [",
- " ['a', 'z'],",
- " ['α', 'ω'],",
- " ['א', 'ת'],",
- " ['🐐', '🐟']",
- " ]));",
- "})();",
- "{{Out}}",
- "
a b c d e f g h i j k l m n o p q r s t u v w x y z",
- "α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ ς σ τ υ φ χ ψ ω",
- "א ב ג ד ה ו ז ח ט י ך כ ל ם מ ן נ ס ע ף פ ץ צ ק ר ש ת",
- "🐐 🐑 🐒 🐓 🐔 🐕 🐖 🐗 🐘 🐙 🐚 🐛 🐜 🐝 🐞 🐟
A generator is an executable entity (like a function or procedure) that contains code that yields a sequence of values, one at a time, so that each time you call the generator, the next value in the sequence is provided.
",
- "
Generators are often built on top of coroutines or objects so that the internal state of the object is handled “naturally”.
",
- "
Generators are often used in situations where a sequence is potentially infinite, and where it is possible to construct the next value of the sequence with only minimal state.
Task description
Create a function that returns a generation of the m'th powers of the positive integers starting from zero, in order, and without obvious or simple upper limit. (Any upper limit to the generator should not be stated in the source but should be down to factors such as the languages natural integer size limit or computational time/size).",
- "Use it to create a generator of:# Squares.",
- "
# Cubes.
",
- "Create a new generator that filters all cubes from the generator of squares.",
- "Drop the first 20 values from this last generator of filtered results then show the next 10 valuesNote that this task requires the use of generators in the calculation of the result.
See also
",
- "Generator"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "{{works with|Firefox 3.6 using JavaScript 1.7|}} ",
- "",
- "",
- "function PowersGenerator(m) {",
- "\tvar n=0;",
- "\twhile(1) {",
- "\t\tyield Math.pow(n, m);",
- "\t\tn += 1;\t",
- "\t}",
- "}",
- "",
- "function FilteredGenerator(g, f){",
- "\tvar value = g.next();",
- "\tvar filter = f.next();",
- "\t",
- "\twhile(1) {",
- "\t\tif( value < filter ) {",
- "\t\t\tyield value;",
- "\t\t\tvalue = g.next();",
- "\t\t} else if ( value > filter ) {",
- "\t\t\tfilter = f.next();",
- "\t\t} else {",
- "\t\t\tvalue = g.next();",
- "\t\t\tfilter = f.next();",
- "\t\t}",
- "\t}\t",
- "}",
- "",
- "",
- "",
- "var squares = PowersGenerator(2);",
- "var cubes = PowersGenerator(3);",
- "",
- "var filtered = FilteredGenerator(squares, cubes);",
- "",
- "",
- "",
- "for( var x = 0; x < 20; x++ ) filtered.next()",
- "for( var x = 20; x < 30; x++ ) console.logfiltered.next());",
- "",
- "",
- "",
- "===ES6===",
- "function* nPowerGen(n) {",
- " let e = 0;",
- " while (1) { e++ && (yield Math.pow(e, n)); }",
- "}",
- "",
- "function* filterGen(gS, gC, skip=0) {",
- " let s = 0; // The square value",
- " let c = 0; // The cube value",
- " let n = 0; // A skip counter",
- "",
- " while(1) {",
- " s = gS.next().value;",
- " s > c && (c = gC.next().value);",
- " s == c ?",
- " c = gC.next().value :",
- " n++ && n > skip && (yield s);",
- " }",
- "}",
- "",
- "const filtered = filterGen(nPowerGen(2), nPowerGen(3), skip=20);",
- "// Generate the first 10 values",
- "for (let n = 0; n < 10; n++) {",
- " console.log(filtered.next().value)",
- "}",
- "
Gray code is a form of binary encoding where transitions between consecutive numbers differ by only one bit. This is a useful encoding for reducing hardware data hazards with values that change rapidly and/or connect to slower hardware as inputs. It is also useful for generating inputs for Karnaugh maps in order from left to right or top to bottom.
Create functions to encode a number to and decode a number from Gray code.
Display the normal binary representations, Gray code representations, and decoded Gray code values for all 5-bit binary numbers (0-31 inclusive, leading 0's not necessary).
There are many possible Gray codes. The following encodes what is called \"binary reflected Gray code.\"
Encoding (MSB is bit 0, b is binary, g is Gray code):
if b[i-1] = 1",
- " g[i] = not b[i]",
- "else",
- " g[i] = b[i]
Or:
g = b xor (b logically right shifted 1 time)
Decoding (MSB is bit 0, b is binary, g is Gray code):
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "Iterative implementation",
- "function gcd(a,b) {",
- " a = Math.abs(a);",
- " b = Math.abs(b);",
- "",
- " if (b > a) {",
- " var temp = a;",
- " a = b;",
- " b = temp; ",
- " }",
- "",
- " while (true) {",
- " a %= b;",
- " if (a === 0) { return b; }",
- " b %= a;",
- " if (b === 0) { return a; }",
- " }",
- "}",
- "",
- "Recursive.",
- "function gcd_rec(a, b) {",
- " return b ? gcd_rec(b, a % b) : Math.abs(a);",
- "}",
- "",
- "Implementation that works on an array of integers.",
- "function GCD(arr) {",
- " var i, y,",
- " n = arr.length,",
- " x = Math.abs(arr[0]);",
- "",
- " for (i = 1; i < n; i++) {",
- " y = Math.abs(arr[i]);",
- "",
- " while (x && y) {",
- " (x > y) ? x %= y : y %= x;",
- " }",
- " x += y;",
- " }",
- " return x;",
- "}",
- "",
- "//For example:",
- "GCD([57,0,-45,-18,90,447]); //=> 3",
- "",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e82",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "function gcd(a,b) {\n a = Math.abs(a);\n b = Math.abs(b);\n\n if (b > a) {\n var temp = a;\n a = b;\n b = temp; \n }\n\n while (true) {\n a %= b;\n if (a === 0) { return b; }\n b %= a;\n if (b === 0) { return a; }\n }\n}\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Greatest subsequential sum",
- "type": "Waypoint",
- "description": [
- "Task:",
- "
Given a sequence of integers, find a continuous subsequence which maximizes the sum of its elements, that is, the elements of no other single subsequence add up to a value larger than this one.
",
- "
An empty subsequence is considered to have the sum of 0; thus if all elements are negative, the result must be the empty sequence.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "Simple brute force approach.",
- "function MaximumSubsequence(population) {",
- " var maxValue = 0;",
- " var subsequence = [];",
- "",
- " for (var i = 0, len = population.length; i < len; i++) {",
- " for (var j = i; j <= len; j++) {",
- " var subsequence = population.slice(i, j);",
- " var value = sumValues(subsequence);",
- " if (value > maxValue) {",
- " maxValue = value;",
- " greatest = subsequence;",
- " };",
- " }",
- " }",
- "",
- " return greatest;",
- "}",
- "",
- "function sumValues(arr) {",
- " var result = 0;",
- " for (var i = 0, len = arr.length; i < len; i++) {",
- " result += arr[i];",
- " }",
- " return result;",
- "}",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e84",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "function MaximumSubsequence(population) {\n var maxValue = 0;\n var subsequence = [];\n\n for (var i = 0, len = population.length; i < len; i++) {\n for (var j = i; j <= len; j++) {\n var subsequence = population.slice(i, j);\n var value = sumValues(subsequence);\n if (value > maxValue) {\n maxValue = value;\n greatest = subsequence;\n };\n }\n }\n\n return greatest;\n}\n\nfunction sumValues(arr) {\n var result = 0;\n for (var i = 0, len = arr.length; i < len; i++) {\n result += arr[i];\n }\n return result;\n}\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Guess the number/With feedback (player)",
- "type": "Waypoint",
- "description": [
- "
The task is to write a player for the game that follows the following rules:
",
- "
The scorer will choose a number between set limits. The computer player will print a guess of the target number. The computer asks for a score of whether its guess is higher than, lower than, or equal to the target. The computer guesses, and the scorer scores, in turn, until the computer correctly guesses the target number.
The computer should guess intelligently based on the accumulated scores given. One way is to use a Binary search based algorithm.
Cf. ",
- "Guess the number/With Feedback",
- "Bulls and cows/Player"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "=== Spidermonkey version ===",
- "",
- "A boring solution that does nothing clever or inscrutable.",
- "",
- "Well, it does use recursion for the guessing function, but that's OK because the depth is bounded by LOG2 of the range. That's not true if the user changes his number, but then he gets what he deserves.",
- "",
- "#!/usr/bin/env js",
- "",
- "var DONE = RIGHT = 0, HIGH = 1, LOW = -1;",
- "",
- "function main() {",
- " showInstructions();",
- " while (guess(1, 100) !== DONE);",
- "}",
- "",
- "function guess(low, high) {",
- " if (low > high) {",
- " print(\"I can't guess it. Perhaps you changed your number.\");",
- " return DONE;",
- " }",
- " ",
- " var g = Math.floor((low + high) / 2);",
- " var result = getResult(g);",
- " switch (result) {",
- " case RIGHT:",
- " return DONE;",
- " case LOW:",
- " return guess(g + 1, high);",
- " case HIGH:",
- " return guess(low, g - 1);",
- " }",
- "}",
- "",
- "function getResult(g) {",
- " while(true) {",
- " putstr('Is it ' + g + '? ');",
- " var ans = readline().toUpperCase().replace(/^\\s+/, '') + ' ';",
- " switch (ans[0]) {",
- " case 'R':",
- " print('I got it! Thanks for the game.');",
- " return RIGHT;",
- " case 'L': ",
- " return LOW;",
- " case 'H':",
- " return HIGH;",
- " default:",
- " print('Please tell me if I am \"high\", \"low\" or \"right\".');",
- " }",
- " }",
- "}",
- "",
- "function showInstructions() {",
- " print('Think of a number between 1 and 100 and I will try to guess it.');",
- " print('After I guess, type \"low\", \"high\" or \"right\", and then press enter.');",
- " putstr(\"When you've thought of a number press enter.\");",
- " readline();",
- "}",
- "",
- "main();",
- "",
- "",
- "An example session:",
- " Think of a number between 1 and 100 and I will try to guess it.",
- " After I guess, type \"low\", \"high\" or \"right\", and then press enter.",
- " When you've thought of a number press enter.",
- " Is it 50? high",
- " Is it 25? high",
- " Is it 12? low",
- " Is it 18? high",
- " Is it 15? high",
- " Is it 13? right",
- " I got it! Thanks for the game.",
- "",
- "Another example session:",
- " Think of a number between 1 and 100 and I will try to guess it.",
- " After I guess, type \"low\", \"high\" or \"right\", and then press enter.",
- " When you've thought of a number press enter.",
- " Is it 50? n",
- " Please tell me if I am \"high\", \"low\" or \"right\".",
- " Is it 50? h",
- " Is it 25? h",
- " Is it 12? h",
- " Is it 6? h",
- " Is it 3? h",
- " Is it 1? h",
- " I can't guess it. Perhaps you changed your number.",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7e87",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "#!/usr/bin/env js\n\nvar DONE = RIGHT = 0, HIGH = 1, LOW = -1;\n\nfunction main() {\n showInstructions();\n while (guess(1, 100) !== DONE);\n}\n\nfunction guess(low, high) {\n if (low > high) {\n print(\"I can't guess it. Perhaps you changed your number.\");\n return DONE;\n }\n \n var g = Math.floor((low + high) / 2);\n var result = getResult(g);\n switch (result) {\n case RIGHT:\n return DONE;\n case LOW:\n return guess(g + 1, high);\n case HIGH:\n return guess(low, g - 1);\n }\n}\n\nfunction getResult(g) {\n while(true) {\n putstr('Is it ' + g + '? ');\n var ans = readline().toUpperCase().replace(/^\\s+/, '') + ' ';\n switch (ans[0]) {\n case 'R':\n print('I got it! Thanks for the game.');\n return RIGHT;\n case 'L': \n return LOW;\n case 'H':\n return HIGH;\n default:\n print('Please tell me if I am \"high\", \"low\" or \"right\".');\n }\n }\n}\n\nfunction showInstructions() {\n print('Think of a number between 1 and 100 and I will try to guess it.');\n print('After I guess, type \"low\", \"high\" or \"right\", and then press enter.');\n putstr(\"When you've thought of a number press enter.\");\n readline();\n}\n\nmain();\n\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Hamming numbers",
- "type": "Waypoint",
- "description": [
- "
Hamming numbers are also known as ugly numbers and also 5-smooth numbers (numbers whose prime divisors are less or equal to 5).
",
- "Task:",
- "
Generate the sequence of Hamming numbers, in increasing order. In particular:
",
- "Show the first twenty Hamming numbers.",
- "Show the 1691st Hamming number (the last one below 231).",
- "Show the one millionth Hamming number (if the language – or a convenient library – supports arbitrary-precision integers).References:",
- "Hamming numbers",
- "Smooth number",
- "Hamming problem from Dr. Dobb's CodeTalk (dead link as of Sep 2011; parts of the thread here and here)."
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "{{works with|JavaScript|1.7}} {{works with|Firefox|2}}",
- "{{trans|Ruby}}",
- "This does not calculate the 1,000,000th Hamming number.",
- "",
- "Note the use of '''for''' (x in obj) to iterate over the ''properties'' of an object, versus '''for each''' (y in obj) to iterate over the ''values'' of the properties of an object.",
- "function hamming() {",
- " var queues = {2: [], 3: [], 5: []};",
- " var base;",
- " var next_ham = 1;",
- " while (true) {",
- " yield next_ham;",
- "",
- " for (base in queues) {queues[base].push(next_ham * base)}",
- "",
- " next_ham = [ queue[0] for each (queue in queues) ].reduce(function(min, val) {",
- " return Math.min(min,val)",
- " });",
- "",
- " for (base in queues) {if (queues[base][0] == next_ham) queues[base].shift()}",
- " }",
- "}",
- "",
- "var ham = hamming();",
- "var first20=[], i=1;",
- "",
- "for (; i <= 20; i++) ",
- " first20.push(ham.next());",
- "print(first20.join(', '));",
- "print('...');",
- "for (; i <= 1690; i++) ",
- " ham.next();",
- "print(i + \" => \" + ham.next());",
- "{{out}}",
- "
",
- "",
- "===Fast & complete version===",
- "",
- "{{trans|C#}}",
- "",
- "A translation of my fast C# version. I was curious to see how much slower JavaScript is. The result: it runs about 5x times slower than C#, though YMMV. You can try it yourself here: http://jsfiddle.net/N7AFN/",
- "",
- "--Mike Lorenz",
- "",
- "",
- "",
- "",
- " ",
- "",
- "",
- "",
- "",
- "",
- "",
- "{{out}}",
- "
",
- "check if the two sub-clauses of the phrase are plausible individually:",
- "
::# \"I before E when not preceded by C\"
",
- "
::# \"E before I when preceded by C\"
",
- "
If both sub-phrases are plausible then the original phrase can be said to be plausible.
Something is plausible if the number of words having the feature is more than two times the number of words having the opposite feature (where feature is 'ie' or 'ei' preceded or not by 'c' as appropriate).
$m$ is the number of matching characters;",
- "$t$ is half the number of transpositions.
Two characters from $s_1$ and $s_2$ respectively, are considered matching only if they are the same and not farther than $\\left\\lfloor\\frac{\\max(|s_1|,|s_2|)}{2}\\right\\rfloor-1$.
Each character of $s_1$ is compared with all its matching
",
- "
characters in $s_2$.
The number of matching (but different sequence order) characters
",
- "
divided by 2 defines the number of transpositions.
",
- ";Example
Given the strings $s_1$ DWAYNE and $s_2$ DUANE we find:
jortSort is a sorting toolset that makes the user do the work and guarantees efficiency because you don't have to sort ever again. It was originally presented by Jenn \"Moneydollars\" Schiffer at the prestigious JSConf.
jortSort is a function that takes a single array of comparable objects as its argument. It then sorts the array in ascending order and compares the sorted array to the originally provided array. If the arrays match (i.e. the original array was already sorted), the function returns true. If the arrays do not match (i.e. the original array was not sorted), the function returns false.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "",
- "The original JavaScript implementation courtesy of the author, [https://github.com/jennschiffer/jortsort Jenn \"Moneydollars\" Schiffer].",
- "var jortSort = function( array ) {",
- "",
- " // sort the array",
- " var originalArray = array.slice(0);",
- " array.sort( function(a,b){return a - b} );",
- "",
- " // compare to see if it was originally sorted",
- " for (var i = 0; i < originalArray.length; ++i) {",
- " if (originalArray[i] !== array[i]) return false;",
- " }",
- "",
- " return true;",
- "};",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7ec4",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "var jortSort = function( array ) {\n\n // sort the array\n var originalArray = array.slice(0);\n array.sort( function(a,b){return a - b} );\n\n // compare to see if it was originally sorted\n for (var i = 0; i < originalArray.length; ++i) {\n if (originalArray[i] !== array[i]) return false;\n }\n\n return true;\n};\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Josephus problem",
- "type": "Waypoint",
- "description": [
- "
Josephus problem is a math puzzle with a grim description: $n$ prisoners are standing on a circle, sequentially numbered from $0$ to $n-1$.
An executioner walks along the circle, starting from prisoner $0$,
",
- "
removing every $k$-th prisoner and killing him.
As the process goes on, the circle becomes smaller and smaller, until only one prisoner remains, who is then freed. >
For example, if there are $n=5$ prisoners and $k=2$, the order the prisoners are killed in (let's call it the \"killing sequence\") will be 1, 3, 0, and 4, and the survivor will be #2.
",
- "Task:",
- "
Given any $n, k > 0$, find out which prisoner will be the final survivor.
In one such incident, there were 41 prisoners and every 3rd prisoner was being killed ($k=3$).
Among them was a clever chap name Josephus who worked out the problem, stood at the surviving position, and lived on to tell the tale.
Which number was he?
",
- "Extra:",
- "
The captors may be especially kind and let $m$ survivors free,
",
- "and Josephus might just have $m-1$ friends to save.
Provide a way to calculate which prisoner is at any given position on the killing sequence.
",
- "Notes:",
- "You can always play the executioner and follow the procedure exactly as described, walking around the circle, counting (and cutting off) heads along the way. This would yield the complete killing sequence and answer the above questions, with a complexity of probably $O(kn)$. However, individually it takes no more than $O(m)$ to find out which prisoner is the $m$-th to die.",
- "If it's more convenient, you can number prisoners from $1$ to $n$ instead. If you choose to do so, please state it clearly.",
- "An alternative description has the people committing assisted suicide instead of being executed, and the last person simply walks away. These details are not relevant, at least not mathematically."
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "Labels are 1-based, executioner's solution:",
- "var Josephus = {",
- " init: function(n) {",
- " this.head = {};",
- " var current = this.head;",
- " for (var i = 0; i < n-1; i++) {",
- " current.label = i+1;",
- " current.next = {prev: current};",
- " current = current.next;",
- " }",
- " current.label = n;",
- " current.next = this.head;",
- " this.head.prev = current;",
- " return this;",
- " },",
- " kill: function(spacing) {",
- " var current = this.head;",
- " while (current.next !== current) {",
- " for (var i = 0; i < spacing-1; i++) {",
- " current = current.next;",
- " }",
- " current.prev.next = current.next;",
- " current.next.prev = current.prev;",
- " current = current.next;",
- " }",
- " return current.label;",
- " }",
- "}",
- "{{out}}",
- "
",
- "It is 1",
- "The decimal representation of its square may be split once into two parts consisting of positive integers which sum to the original number. Note that a split resulting in a part consisting purely of 0s is not valid, ",
- "
as 0 is not considered positive.
Example Kaprekar numbers:",
- "$2223$ is a Kaprekar number, as $2223 * 2223 = 4941729$, $4941729$ may be split to $494$ and $1729$, and $494 + 1729 = 2223$.",
- "The series of Kaprekar numbers is known as A006886, and begins as $1, 9, 45, 55, ...$.",
- "Example process:",
- "
10000 (1002) splitting from left to right:
",
- "The first split is [1, 0000], and is invalid; the 0000 element consists entirely of 0s, and 0 is not considered positive.",
- "Slight optimization opportunity: When splitting from left to right, once the right part consists entirely of 0s, no further testing is needed; all further splits would also be invalid.",
- "Task description:",
- "
Generate and show all Kaprekar numbers less than 10,000.
Extra credit:",
- "
Optionally, count (and report the count of) how many Kaprekar numbers are less than 1,000,000.
Extra extra credit:",
- "
The concept of Kaprekar numbers is not limited to base 10 (i.e. decimal numbers);
",
- "
if you can, show that Kaprekar numbers exist in other bases too.
For this purpose, do the following:
",
- "Find all Kaprekar numbers for base 17 between 1 and 1,000,000 (one million);",
- "Display each of them in base 10 representation;",
- "Optionally, using base 17 representation (use letters 'a' to 'g' for digits 10(10) to 16(10)), display each of the numbers, its square, and where to split the square. ",
- "For example, 225(10) is \"d4\" in base 17, its square \"a52g\", and a5(17) + 2g(17) = d4(17), so the display would be something like:
A k-d tree (short for k-dimensional tree) is a space-partitioning data structure for organizing points in a k-dimensional space. k-d trees are a useful data structure for several applications, such as searches involving a multidimensional search key (e.g. range searches and nearest neighbor searches).
",
- "
k-d trees are a special case of binary space partitioning trees.
k-d trees are not suitable, however, for efficiently finding the nearest neighbor in high dimensional spaces. As a general rule, if the dimensionality is k, the number of points in the data, N, should be N ≫ 2k.
",
- "
Otherwise, when k-d trees are used with high-dimensional data, most of the points in the tree will be evaluated and the efficiency is no better than exhaustive search, and other methods such as approximate nearest-neighbor are used instead.
Task: Construct a k-d tree and perform a nearest neighbor search for two example data sets:
The Wikipedia example data of [(2,3), (5,4), (9,6), (4,7), (8,1), (7,2)].",
- "1000 3-d points uniformly distributed in a 3-d cube.",
- "
For the Wikipedia example, find the nearest neighbor to point (9, 2)
",
- "
For the random data, pick a random location and find the nearest neighbor.
In addition, instrument your code to count the number of nodes visited in the nearest neighbor search. Count a node as visited if any field of it is accessed.
Output should show the point searched for, the point found,
",
- "
the distance to the point, and the number of nodes visited.
There are variant algorithms for constructing the tree.
",
- "
You can use a simple median strategy or implement something more efficient.
",
- "
Variants of the nearest neighbor search include nearest N neighbors, approximate nearest neighbor, and range searches.
",
- "
You do not have to implement these.
",
- "
The requirement for this task is specifically the nearest single neighbor.
",
- "
Also there are algorithms for inserting, deleting, and balancing k-d trees.
A tourist wants to make a good trip at the weekend with his friends.
They will go to the mountains to see the wonders of nature. So he needs some items during the trip. Food, clothing, etc. He has a good knapsack for carrying the things, but he knows that he can carry only 4 kg weight in his knapsack, because they will make the trip from morning to evening.
He creates a list of what he wants to bring for the trip, but the total weight of all items is too much. He adds a value to each item. The value represents how important the thing for the tourist.
The list contains which items are the wanted things for the trip, what is the weight and value of an item, and how many units does he have from each items.
The tourist can choose to take any combination of items from the list, and some number of each item is available (see the column piece(s) in the list above).
He may not cut the items, so he can only take whole units of any item.
",
- "Task:",
- "
Show which items does the tourist carry in his knapsack so that their total weight does not exceed 4 kg, and their total value is maximized.
A thief burgles a butcher's shop, where he can select from some items.
The thief knows the weights and prices of each items. Because he has a knapsack with 15 kg maximal capacity, he wants to select the items such that he would have his profit maximized. He may cut the items; the item has a reduced price after cutting that is proportional to the original price by the ratio of masses. That means: half of an item has half the price of the original.
A traveler gets diverted and has to make an unscheduled stop in what turns out to be Shangri La. Opting to leave, he is allowed to take as much as he likes of the following items, so long as it will fit in his knapsack, and he can carry it.
He knows that he can carry no more than 25 'weights' in total; and that the capacity of his knapsack is 0.25 'cubic lengths'.
Looking just above the bar codes on the items he finds their weights and volumes. He digs out his recent copy of a financial paper and gets the value of each item.
Problem: you have a standard 8x8 chessboard, empty but for a single knight on some square. Your task is to emit a series of legal knight moves that result in the knight visiting every square on the chessboard exactly once. Note that it is not a requirement that the tour be \"closed\"; that is, the knight need not end within a single move of its start position.
Input and output may be textual or graphical, according to the conventions of the programming environment. If textual, squares should be indicated in algebraic notation. The output should indicate the order in which the knight visits the squares, starting with the initial position. The form of the output may be a diagram of the board with the squares numbered according to visitation sequence, or a textual list of algebraic coordinates in order, or even an actual animation of the knight moving around the chessboard.
This is a method of randomly sampling n items from a set of M items, with equal probability; where M >= n and M, the number of items is unknown until the end.
",
- "
This means that the equal probability sampling should be maintained for all successive items > n as they become available (although the content of successive samples can change).
The algorithm:",
- "Select the first n items as the sample as they become available;",
- "For the i-th item where i > n, have a random chance of n/i of keeping it. If failing this chance, the sample remains the same. If not, have it randomly (1/n) replace one of the previously selected n items of the sample.",
- "Repeat #2 for any subsequent items.",
- "The Task:",
- "Create a function s_of_n_creator that given $n$ the maximum sample size, returns a function s_of_n that takes one parameter, item.",
- "Function s_of_n when called with successive items returns an equi-weighted random sample of up to n of its items so far, each time it is called, calculated using Knuths Algorithm S.",
- "Test your functions by printing and showing the frequency of occurrences of the selected digits from 100,000 repetitions of:# Use the s_of_n_creator with n == 3 to generate an s_of_n.",
- "
# call s_of_n with each of the digits 0 to 9 in order, keeping the returned three digits of its random sampling from its last call with argument item=9.
Note: A class taking n and generating a callable instance/function might also be used.
The Knuth shuffle (a.k.a. the Fisher-Yates shuffle) is an algorithm for randomly shuffling the elements of an array.
",
- "
Implement the Knuth shuffle for an integer array (or, if possible, an array of any type).
",
- "
Given an array items with indices ranging from 0 to last, the algorithm can be defined as follows (pseudo-code):
for i from last downto 1 do:
",
- "
let j = random integer in range 0 $\\leq$ j $\\leq$ i
",
- "
swap items[i] with items[j]
Notes:
",
- "It modifies the input array in-place. If that is unreasonable in your programming language, you may amend the algorithm to return the shuffled items as a new array instead.",
- "The algorithm can also be amended to iterate from left to right, if that is more convenient.",
- "
language has no a built-in function for such product then you need to implement it first.
",
- "
The essence of fractals is self-replication (at least, self-similar replications).
",
- "
So, using n times self-product of the matrix (filled with 0/1) we will have a fractal of the n-th order.
",
- "
Actually, \"self-product\" is a Kronecker power of the matrix. In other words: for a matrix M and a power n create a function like matkronpow(M, n), which returns MxMxMx... (n times product).
",
- "
A formal recurrent algorithm of creating Kronecker power of a matrix is the following:
",
- "
Algorithm:
",
- "
Let M is an initial matrix, and Rn is a resultant block matrix of the Kronecker power, where n is the power (a.k.a. order).
",
- "
Self-product of M, i.e., M x M producing R2 (resultant matrix with order/power 2).
",
- "
To receive the next order/power matrix use this recurrent formula: Rn = R(n-1) x M.
",
- "
Plot this Rn matrix to produce the nth order fractal.
",
- "
Even just looking at the resultant matrix you can see what will be plotted.
",
- "
There are virtually infinitely many fractals of this type. You are limited only by your creativity and
",
- "
the power of your computer.
",
- "Task:",
- "
Using Kronecker product implement and show two popular and well-known fractals, i.e.:
",
- "Note:",
- "Output could be a graphical or ASCII-art representation, but if an order is set > 4 then printing is not suitable.",
- "The orientation and distortion of the fractal could be your language/tool specific.",
- "It would be nice to see one additional fractal of your choice, e.g., based on using a single (double) letter(s) of an alphabet, any sign(s) or alredy made a resultant matrix of the Kronecker product.",
- "See implementations and results below in JavaScript, PARI/GP and R languages. They have additional samples of \"H\", \"+\" and checkerboard fractals."
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "Using Version #1 of [[Kronecker_product| Kronecker product]] in JavaScript.",
- "{{Works with|Chrome}}",
- "[[File:VicsekFractaljs.png|200px|right|thumb|Output VicsekFractaljs.png]]",
- "[[File:SierpCarpetFractaljs.png|200px|right|thumb|Output SierpCarpetFractaljs.png]]",
- "[[File:CheckbrdFractaljs.png|200px|right|thumb|Output CheckbrdFractaljs.png]]",
- "",
- "// KPF.js 6/23/16 aev",
- "// HFJS: Plot any matrix mat (filled with 0,1)",
- "function pmat01(mat, color) {",
- " // DCLs",
- " var cvs = document.getElementById('canvId');",
- " var ctx = cvs.getContext(\"2d\"); ",
- " var w = cvs.width; var h = cvs.height;",
- " var m = mat[0].length; var n = mat.length;",
- " // Cleaning canvas and setting plotting color ",
- " ctx.fillStyle=\"white\"; ctx.fillRect(0,0,w,h);",
- " ctx.fillStyle=color;",
- " // MAIN LOOP",
- " for(var i=0; i'+title+':
",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7ed9",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "\n// matkronprod.js\n// Prime function:\n// mkp arrow function: Return the Kronecker product of the a and b matrices.\n// Note: both a and b must be matrices, i.e., 2D rectangular arrays.\nmkp=(a,b)=>a.map(a=>b.map(b=>a.map(y=>b.map(x=>r.push(y*x)),t.push(r=[]))),t=[])&&t;\n// Helper functions:\n// Log title and matrix mat to console\nfunction matl2cons(title,mat) {console.log(title); console.log(mat.join`\\n`)}\n// Print title to document\nfunction pttl2doc(title) {document.write(''+title+' ')}\n// Print title and matrix mat to document\nfunction matp2doc(title,mat) {\n document.write(''+title+': ');\n for (var i = 0; i < mat.length; i++) {\n document.write(' '+mat[i].join(' ')+' ');\n }\n}\n\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Langton's ant",
- "type": "Waypoint",
- "description": [
- "
Langton's ant is a cellular automaton that models an ant sitting on a plane of cells, all of which are white initially, facing in one of four directions.
",
- "
Each cell can either be black or white.
",
- "
The ant moves according to the color of the cell it is currently sitting in, with the following rules:
",
- "
:# If the cell is black, it changes to white and the ant turns left;
",
- "
:# If the cell is white, it changes to black and the ant turns right;
",
- "
:# The ant then moves forward to the next cell, and repeat from step 1.
This rather simple ruleset leads to an initially chaotic movement pattern, and after about 10000 steps, a cycle appears where the ant moves steadily away from the starting location in a diagonal corridor about 10 pixels wide. ",
- "
Conceptually the ant can then travel infinitely far away.
",
- "Task:",
- "
Start the ant near the center of a 100 by 100 field of cells, which is about big enough to contain the initial chaotic part of the movement.
Follow the movement rules for the ant, terminate when it moves out of the region, and show the cell colors it leaves behind.
",
- "
The problem has received some analysis; for more details, please take a look at the Wikipedia article (a link is below)..
Given a set of positive integers, write a function to order the integers in such a way that the concatenation of the numbers forms the largest possible integer and return this integer.
Use the following two sets of integers as tests and show your program output here.
::::* {1, 34, 3, 98, 9, 76, 45, 4}
",
- "
::::* {54, 546, 548, 60}
",
- "Possible algorithms:",
- "A solution could be found by trying all combinations and return the best. ",
- "Another way to solve this is to note that in the best arrangement, for any two adjacent original integers X and Y, the concatenation X followed by Y will be numerically greater than or equal to the concatenation Y followed by '''X.",
- "Yet another way to solve this is to pad the integers to the same size by repeating the digits then sort using these repeated integers as a sort key.See also:",
- " Algorithms: What is the most efficient way to arrange the given numbers to form the biggest number?",
- " Constructing the largest number possible by rearranging a list"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "",
- "===ES5===",
- "",
- " (function () {",
- " 'use strict';",
- "",
- " // maxCombine :: [Int] -> Int",
- " function maxCombine(xs) {",
- " return parseInt(",
- " xs.sort(",
- " function (x, y) {",
- " var a = x.toString(),",
- " b = y.toString(),",
- " ab = parseInt(a + b),",
- " ba = parseInt(b + a);",
- "",
- " return ab > ba ? -1 : (ab < ba ? 1 : 0);",
- " }",
- " )",
- " .join(''), 10",
- " );",
- " }",
- "",
- " return [",
- " [1, 34, 3, 98, 9, 76, 45, 4],",
- " [54, 546, 548, 60]",
- " ].map(maxCombine);",
- "",
- " })();",
- "",
- "",
- "{{Out}}",
- "",
- "
A certain children's game involves starting with a word in a particular category. Each participant in turn says a word, but that word must begin with the final letter of the previous word. Once a word has been given, it cannot be repeated. If an opponent cannot give a word in the category, they fall out of the game.
Take the following selection of 70 English Pokemon names (extracted from Wikipedia's list of Pokemon) and generate the/a sequence with the highest possible number of Pokemon names where the subsequent name starts with the final letter of the preceding name.
Determine whether a given year is a leap year in the Gregorian calendar.
See Also
",
- "Leap year (wiki)"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "var isLeapYear = function (year) { return (year % 100 === 0) ? (year % 400 === 0) : (year % 4 === 0); };",
- "Or, by setting the day to the 29th and checking if the day remains",
- "// Month values start at 0, so 1 is for February",
- "var isLeapYear = function (year) { return new Date(year, 1, 29).getDate() === 29; };",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7ede",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "var isLeapYear = function (year) { return (year % 100 === 0) ? (year % 400 === 0) : (year % 4 === 0); };\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Least common multiple",
- "type": "Waypoint",
- "description": [
- "Task:",
- "
Compute the least common multiple of two integers.
Given m and n, the least common multiple is the smallest positive integer that has both m and n as factors.
",
- "Example:",
- "
The least common multiple of 12 and 18 is 36, because 12 is a factor (12 × 3 = 36), and 18 is a factor (18 × 2 = 36), and there is no positive integer less than 36 that has both factors. As a special case, if either m or n is zero, then the least common multiple is zero.
One way to calculate the least common multiple is to iterate all the multiples of m, until you find one that is also a multiple of n.
Open a text file and count the occurrences of each letter.
Some of these programs count all characters (including punctuation),
",
- "
but some only count letters A to Z.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "",
- "JavaScript is no longer used only in environments which are carefully isolated from file systems, but JavaScript standards still do not specify standard file-system functions. ",
- "Leaving aside the particular and variable details of how files will be opened and read in environments like Node.js and OS X JavaScript for Automation etc., ",
- "we can still use core JavasScript (ES5 in the example below), to count the characters in a text once it has been read from a file system.",
- "",
- "(function(txt) {",
- "",
- " var cs = txt.split(''),",
- " i = cs.length,",
- " dct = {},",
- " c = '',",
- " keys;",
- " ",
- " while (i--) {",
- " c = cs[i];",
- " dct[c] = (dct[c] || 0) + 1;",
- " }",
- " ",
- " keys = Object.keys(dct);",
- " keys.sort();",
- " return keys.map(function (c) { return [c, dct[c]]; });",
- "",
- "})(\"Not all that Mrs. Bennet, however, with the assistance of her five\\",
- "daughters, could ask on the subject, was sufficient to draw from her\\",
- "husband any satisfactory description of Mr. Bingley. They attacked him\\",
- "in various ways--with barefaced questions, ingenious suppositions, and\\",
- "distant surmises; but he eluded the skill of them all, and they were at\\",
- "last obliged to accept the second-hand intelligence of their neighbour,\\",
- "Lady Lucas. Her report was highly favourable. Sir William had been\\",
- "delighted with him. He was quite young, wonderfully handsome, extremely\\",
- "agreeable, and, to crown the whole, he meant to be at the next assembly\\",
- "with a large party. Nothing could be more delightful! To be fond of\\",
- "dancing was a certain step towards falling in love; and very lively\\",
- "hopes of Mr. Bingley's heart were entertained.\"); ",
- "",
- "{{Out}}",
- "",
- "[[\" \", 121], [\"!\", 1], [\"'\", 1], [\",\", 13], [\"-\", 3], [\".\", 9], [\";\", 2], ",
- "[\"B\", 3], [\"H\", 2], [\"L\", 2], [\"M\", 3], [\"N\", 2], [\"S\", 1], [\"T\", 2], [\"W\", 1], ",
- "[\"a\", 53], [\"b\", 13], [\"c\", 17], [\"d\", 29], [\"e\", 82], [\"f\", 17], [\"g\", 16], [\"h\", 36],",
- "[\"i\", 44], [\"j\", 1], [\"k\", 3], [\"l\", 34], [\"m\", 11], [\"n\", 41], [\"o\", 40], [\"p\", 8], ",
- "[\"q\", 2], [\"r\", 35], [\"s\", 39], [\"t\", 55], [\"u\", 20], [\"v\", 7], [\"w\", 17], [\"x\", 2], [\"y\", 16]]",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7ee1",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "(function(txt) {\n\n var cs = txt.split(''),\n i = cs.length,\n dct = {},\n c = '',\n keys;\n \n while (i--) {\n c = cs[i];\n dct[c] = (dct[c] || 0) + 1;\n }\n \n keys = Object.keys(dct);\n keys.sort();\n return keys.map(function (c) { return [c, dct[c]]; });\n\n})(\"Not all that Mrs. Bennet, however, with the assistance of her five\\\ndaughters, could ask on the subject, was sufficient to draw from her\\\nhusband any satisfactory description of Mr. Bingley. They attacked him\\\nin various ways--with barefaced questions, ingenious suppositions, and\\\ndistant surmises; but he eluded the skill of them all, and they were at\\\nlast obliged to accept the second-hand intelligence of their neighbour,\\\nLady Lucas. Her report was highly favourable. Sir William had been\\\ndelighted with him. He was quite young, wonderfully handsome, extremely\\\nagreeable, and, to crown the whole, he meant to be at the next assembly\\\nwith a large party. Nothing could be more delightful! To be fond of\\\ndancing was a certain step towards falling in love; and very lively\\\nhopes of Mr. Bingley's heart were entertained.\"); \n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Levenshtein distance",
- "type": "Waypoint",
- "description": [
- "
In information theory and computer science, the Levenshtein distance is a metric for measuring the amount of difference between two sequences (i.e. an edit distance). The Levenshtein distance between two strings is defined as the minimum number of edits needed to transform one string into the other, with the allowable edit operations being insertion, deletion, or substitution of a single character.
",
- "Example:",
- "
The Levenshtein distance between \"kitten\" and \"sitting\" is 3, since the following three edits change one into the other, and there isn't a way to do it with fewer than three edits:
",
- "
:# kitten sitten (substitution of 'k' with 's')
",
- "
:# sitten sittin (substitution of 'e' with 'i')
",
- "
:# sittin sitting (insert 'g' at the end).
",
- "
''The Levenshtein distance between \"rosettacode\", \"raisethysword\" is 8.
The distance between two strings is same as that when both strings are reversed.
",
- "Task;",
- "
Implements a Levenshtein distance function, or uses a library function, to show the Levenshtein distance between \"kitten\" and \"sitting\".
$r_0$ is a seed.",
- "$r_1$, $r_2$, $r_3$, ..., are the random numbers.",
- "$a$, $c$, $m$ are constants.",
- "
If one chooses the values of $a$, $c$ and $m$ with care, then the generator produces a uniform distribution of integers from $0$ to $m - 1$.
LCG numbers have poor quality. $r_n$ and $r_{n + 1}$ are not independent, as true random numbers would be. Anyone who knows $r_n$ can predict $r_{n + 1}$, therefore LCG is not cryptographically secure. The LCG is still good enough for simple tasks like Miller-Rabin primality test, or FreeCell deals. Among the benefits of the LCG, one can easily reproduce a sequence of numbers, from the same $r_0$. One can also reproduce such sequence with a different programming language, because the formula is so simple.
The task is to replicate two historic random number generators. One is the rand() function from BSD libc, and the other is the rand() function from the Microsoft C Runtime (MSCVRT.DLL). Each replica must yield the same sequence of integers as the original generator, when starting from the same seed.
In these formulas, the seed becomes $state_0$. The random sequence is $rand_1$, $rand_2$ and so on.
BSD formula:
$state_{n + 1} = 1103515245 \\times state_n + 12345 \\pmod{2^{31}}$",
- "$rand_n = state_n$",
- "$rand_n$ is in range 0 to 2147483647.",
- "
Microsoft formula:
$state_{n + 1} = 214013 \\times state_n + 2531011 \\pmod{2^{31}}$",
- "$rand_n = state_n \\div 2^{16}$",
- "$rand_n$ is in range 0 to 32767.",
- "
A list comprehension is a special syntax in some programming languages to describe lists. It is similar to the way mathematicians describe sets, with a set comprehension, hence the name.
Some attributes of a list comprehension are:
",
- "They should be distinct from (nested) for loops and the use of map and filter functions within the syntax of the language.",
- "They should return either a list or an iterator (something that returns successive members of a collection, in order).",
- "The syntax has parts corresponding to that of set-builder notation. Task:",
- "
Write a list comprehension that builds the list of all Pythagorean triples with elements between 1 and n.
If the language has multiple ways for expressing such a construct (for example, direct list comprehensions and generators), write one example for each.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "",
- "===ES5===",
- "",
- "ES5 does not provide built-in notation for list comprehensions. The list monad pattern which underlies list comprehension notation can, however, be used in any language which supports the use of higher order functions. The following shows how we can achieve the same result by directly using a list monad in ES5, without the abbreviating convenience of any specific syntactic sugar. ",
- "",
- "// USING A LIST MONAD DIRECTLY, WITHOUT SPECIAL SYNTAX FOR LIST COMPREHENSIONS",
- "",
- "(function (n) {",
- "",
- " return mb(r(1, n), function (x) { // x <- [1..n]",
- " return mb(r(1 + x, n), function (y) { // y <- [1+x..n]",
- " return mb(r(1 + y, n), function (z) { // z <- [1+y..n]",
- " ",
- " return x * x + y * y === z * z ? [[x, y, z]] : [];",
- " ",
- " })})});",
- "",
- "",
- " // LIBRARY FUNCTIONS",
- " ",
- " // Monadic bind for lists",
- " function mb(xs, f) {",
- " return [].concat.apply([], xs.map(f));",
- " }",
- " ",
- " // Monadic return for lists is simply lambda x -> [x]",
- " // as in [[x, y, z]] : [] above",
- "",
- " // Integer range [m..n]",
- " function r(m, n) {",
- " return Array.apply(null, Array(n - m + 1))",
- " .map(function (n, x) {",
- " return m + x;",
- " });",
- " }",
- "",
- "})(100);",
- "",
- "Output:",
- "",
- "
",
- "",
- "",
- "List comprehension notation was not, in the end, included in the final ES6 standard, and the code above will not run in fully ES6-compliant browsers or interpreters, but we can still go straight to the underlying monadic logic of list comprehensions and obtain: ",
- "",
- "[ (x, y, z)",
- "| x <- [1 .. n], y <- [x .. n], z <- [y .. n], x ^ 2 + y ^ 2 == z ^ 2 ]",
- "",
- "by using concatMap (the monadic bind function for lists), and x => [x] (monadic pure/return for lists):",
- "",
- "(n => {",
- " 'use strict';",
- "",
- " // GENERIC FUNCTIONS ------------------------------------------------------",
- "",
- " // concatMap :: (a -> [b]) -> [a] -> [b]",
- " const concatMap = (f, xs) => [].concat.apply([], xs.map(f));",
- "",
- " // enumFromTo :: Int -> Int -> [Int]",
- " const enumFromTo = (m, n) =>",
- " Array.from({",
- " length: Math.floor(n - m) + 1",
- " }, (_, i) => m + i);",
- "",
- "",
- " // EXAMPLE ----------------------------------------------------------------",
- "",
- " // [(x, y, z) | x <- [1..n], y <- [x..n], z <- [y..n], x ^ 2 + y ^ 2 == z ^ 2]",
- "",
- " return concatMap(x =>",
- " concatMap(y =>",
- " concatMap(z =>",
- "",
- " x * x + y * y === z * z ? [",
- " [x, y, z]",
- " ] : [],",
- "",
- " enumFromTo(y, n)),",
- " enumFromTo(x, n)),",
- " enumFromTo(1, n));",
- "})(20);",
- "{{Out}}",
- "[[3, 4, 5], [5, 12, 13], [6, 8, 10], [8, 15, 17], [9, 12, 15], [12, 16, 20]]",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7ee4",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "// USING A LIST MONAD DIRECTLY, WITHOUT SPECIAL SYNTAX FOR LIST COMPREHENSIONS\n\n(function (n) {\n\n return mb(r(1, n), function (x) { // x <- [1..n]\n return mb(r(1 + x, n), function (y) { // y <- [1+x..n]\n return mb(r(1 + y, n), function (z) { // z <- [1+y..n]\n \n return x * x + y * y === z * z ? [[x, y, z]] : [];\n \n })})});\n\n\n // LIBRARY FUNCTIONS\n \n // Monadic bind for lists\n function mb(xs, f) {\n return [].concat.apply([], xs.map(f));\n }\n \n // Monadic return for lists is simply lambda x -> [x]\n // as in [[x, y, z]] : [] above\n\n // Integer range [m..n]\n function r(m, n) {\n return Array.apply(null, Array(n - m + 1))\n .map(function (n, x) {\n return m + x;\n });\n }\n\n})(100);\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Longest common subsequence",
- "type": "Waypoint",
- "description": [
- "
The longest common subsequence (or LCS) of groups A and B is the longest group of elements from A and B that are common between the two groups and in the same order in each group. For example, the sequences \"1234\" and \"1224533324\" have an LCS of \"1234\":
",
- "
1234
",
- "
1224533324
",
- "
For a string example, consider the sequences \"thisisatest\" and \"testing123testing\". An LCS would be \"tsitest\":
",
- "
thisisatest
",
- "
testing123testing
In this puzzle, your code only needs to deal with strings. Write a function which returns an LCS of two strings (case-sensitive). You don't need to show multiple LCS's.
For more information on this problem please see Wikipedia.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "===Recursion===",
- "{{trans|Java}}",
- "This is more or less a translation of the recursive Java version above.",
- "function lcs(a, b) {",
- " var aSub = a.substr(0, a.length - 1);",
- " var bSub = b.substr(0, b.length - 1);",
- " ",
- " if (a.length === 0 || b.length === 0) {",
- " return '';",
- " } else if (a.charAt(a.length - 1) === b.charAt(b.length - 1)) {",
- " return lcs(aSub, bSub) + a.charAt(a.length - 1);",
- " } else {",
- " var x = lcs(a, bSub);",
- " var y = lcs(aSub, b);",
- " return (x.length > y.length) ? x : y;",
- " }",
- "}",
- "",
- "ES6 recursive implementation",
- "",
- "",
- "var longest = (xs, ys) => (xs.length > ys.length) ? xs : ys;",
- "",
- "var lcs = (xx, yy) => {",
- " if (!xx.length || !yy.length) { return ''; }",
- "",
- " var x = xx[0],",
- " y = yy[0];",
- " xs = xx.slice(1);",
- " ys = yy.slice(1);",
- "",
- " return (x === y) ? lcs(xs, ys) :",
- " longest(lcs(xx, ys), lcs(xs, yy));",
- "};",
- "",
- "===Dynamic Programming===",
- "This version runs in O(mn) time and consumes O(mn) space.",
- "Factoring out loop edge cases could get a small constant time improvement, and it's fairly trivial to edit the final loop to produce a full diff in addition to the lcs.",
- "function lcs(x,y){",
- "\tvar s,i,j,m,n,",
- "\t\tlcs=[],row=[],c=[],",
- "\t\tleft,diag,latch;",
- "\t//make sure shorter string is the column string",
- "\tif(mrow[j]){row[j] = left;}",
- "\t\t\t}",
- "\t\t}",
- "\t}",
- "\ti--,j--;",
- "\t//row[j] now contains the length of the lcs",
- "\t//recover the lcs from the table",
- "\twhile(i>-1&&j>-1){",
- "\t\tswitch(c[i][j]){",
- "\t\t\tdefault: j--;",
- "\t\t\t\tlcs.unshift(x[i]);",
- "\t\t\tcase (i&&c[i-1][j]): i--;",
- "\t\t\t\tcontinue;",
- "\t\t\tcase (j&&c[i][j-1]): j--;",
- "\t\t}",
- "\t}",
- "\treturn lcs.join('');",
- "}",
- "",
- "'''BUG note: In line 6, m and n are not yet initialized, and so x and y are never swapped.'''",
- "'''Swapping is useless here, and becomes wrong when extending the algorithm to produce a diff.'''",
- "",
- "The final loop can be modified to concatenate maximal common substrings rather than individual characters:",
- "\tvar t=i;",
- "\twhile(i>-1&&j>-1){",
- "\t\tswitch(c[i][j]){",
- "\t\t\tdefault:i--,j--;",
- "\t\t\t\tcontinue;",
- "\t\t\tcase (i&&c[i-1][j]):",
- "\t\t\t\tif(t!==i){lcs.unshift(x.substring(i+1,t+1));}",
- "\t\t\t\tt=--i;",
- "\t\t\t\tcontinue;",
- "\t\t\tcase (j&&c[i][j-1]): j--;",
- "\t\t\t\tif(t!==i){lcs.unshift(x.substring(i+1,t+1));}",
- "\t\t\t\tt=i;",
- "\t\t}",
- "\t}",
- "\tif(t!==i){lcs.unshift(x.substring(i+1,t+1));}",
- "",
- "===Greedy Algorithm===",
- "This is an heuristic algorithm that won't always return the correct answer, but is significantly faster and less memory intensive than the dynamic programming version, in exchange for giving up the ability to re-use the table to find alternate solutions and greater complexity in generating diffs. Note that this implementation uses a binary buffer for additional efficiency gains, but it's simple to transform to use string or array concatenation;",
- "function lcs_greedy(x,y){",
- " var p1, i, idx,",
- " symbols = {},",
- " r = 0,",
- " p = 0,",
- " l = 0,",
- " m = x.length,",
- " n = y.length,",
- " s = new Buffer((m < n) ? n : m);",
- "",
- " p1 = popsym(0);",
- "",
- " for (i = 0; i < m; i++) {",
- " p = (r === p) ? p1 : popsym(i);",
- " p1 = popsym(i + 1);",
- " if (p > p1) {",
- " i += 1;",
- " idx = p1;",
- " } else {",
- " idx = p;",
- " }",
- "",
- " if (idx === n) {",
- " p = popsym(i);",
- " } else {",
- " r = idx;",
- " s[l] = x.charCodeAt(i);",
- " l += 1;",
- " }",
- " }",
- " return s.toString('utf8', 0, l);",
- "\t",
- " function popsym(index) {",
- " var s = x[index],",
- " pos = symbols[s] + 1;",
- "",
- " pos = y.indexOf(s, ((pos > r) ? pos : r));",
- " if (pos === -1) { pos = n; }",
- " symbols[s] = pos;",
- " return pos;",
- " }",
- "}",
- "",
- "Note that it won't return the correct answer for all inputs. For example: lcs_greedy('bcaaaade', 'deaaaabc'); // 'bc' instead of 'aaaa'",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7ee9",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "function lcs(a, b) {\n var aSub = a.substr(0, a.length - 1);\n var bSub = b.substr(0, b.length - 1);\n \n if (a.length === 0 || b.length === 0) {\n return '';\n } else if (a.charAt(a.length - 1) === b.charAt(b.length - 1)) {\n return lcs(aSub, bSub) + a.charAt(a.length - 1);\n } else {\n var x = lcs(a, bSub);\n var y = lcs(aSub, b);\n return (x.length > y.length) ? x : y;\n }\n}\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Longest increasing subsequence",
- "type": "Waypoint",
- "description": [
- "
This \"longest string challenge\" is inspired by a problem that used to be given to students learning Icon. Students were expected to try to solve the problem in Icon and another language with which the student was already familiar. The basic problem is quite simple; the challenge and fun part came through the introduction of restrictions. Experience has shown that the original restrictions required some adjustment to bring out the intent of the challenge and make it suitable for Rosetta Code.
Write a program that reads lines from standard input and, upon end of file, writes the longest line to standard output.
",
- "
If there are ties for the longest line, the program writes out all the lines that tie.
",
- "
If there is no input, the program should produce no output.
",
- "Task ",
- "
Implement a solution to the basic problem that adheres to the spirit of the restrictions (see below).
Describe how you circumvented or got around these 'restrictions' and met the 'spirit' of the challenge. Your supporting description may need to describe any challenges to interpreting the restrictions and how you made this interpretation. You should state any assumptions, warnings, or other relevant points. The central idea here is to make the task a bit more interesting by thinking outside of the box and perhaps by showing off the capabilities of your language in a creative way. Because there is potential for considerable variation between solutions, the description is key to helping others see what you've done.
This task is likely to encourage a variety of different types of solutions. They should be substantially different approaches.
",
- "Original list of restrictionsNo comparison operators may be used.",
- "No arithmetic operations, such as addition and subtraction, may be used.",
- "The only datatypes you may use are integer and string. In particular, you may not use lists.",
- "Do not re-read the input file. Avoid using files as a replacement for lists (this restriction became apparent in the discussion).Intent of restrictions:",
- "
Because of the variety of languages on Rosetta Code and the wide variety of concepts used in them, there needs to be a bit of clarification and guidance here to get to the spirit of the challenge and the intent of the restrictions.
The basic problem can be solved very conventionally, but that's boring and pedestrian. The original intent here wasn't to unduly frustrate people with interpreting the restrictions, it was to get people to think outside of their particular box and have a bit of fun doing it.
The guiding principle here should be to be creative in demonstrating some of the capabilities of the programming language being used. If you need to bend the restrictions a bit, explain why and try to follow the intent. If you think you've implemented a 'cheat', call out the fragment yourself and ask readers if they can spot why. If you absolutely can't get around one of the restrictions, explain why in your description.
Now having said that, the restrictions require some elaboration.
In general, the restrictions are meant to avoid the explicit use of these features.",
- "\"No comparison operators may be used\" - At some level there must be some test that allows the solution to get at the length and determine if one string is longer. Comparison operators, in particular any less/greater comparison should be avoided. Representing the length of any string as a number should also be avoided. Various approaches allow for detecting the end of a string. Some of these involve implicitly using equal/not-equal; however, explicitly using equal/not-equal should be acceptable.",
- "\"No arithmetic operations\" - Again, at some level something may have to advance through the string. Often there are ways a language can do this implicitly advance a cursor or pointer without explicitly using a +, - , ++, --, add, subtract, etc.",
- "The datatype restrictions are amongst the most difficult to reinterpret. In the language of the original challenge strings are atomic datatypes and structured datatypes like lists are quite distinct and have many different operations that apply to them. This becomes a bit fuzzier with languages with a different programming paradigm. The intent would be to avoid using an easy structure to accumulate the longest strings and spit them out. There will be some natural reinterpretation here.
To make this a bit more concrete, here are a couple of specific examples:
",
- "
In C, a string is an array of chars, so using a couple of arrays as strings is in the spirit while using a second array in a non-string like fashion would violate the intent.
",
- "
In APL or J, arrays are the core of the language so ruling them out is unfair. Meeting the spirit will come down to how they are used.
Please keep in mind these are just examples and you may hit new territory finding a solution. There will be other cases like these. Explain your reasoning. You may want to open a discussion on the talk page as well.
",
- "The added \"No rereading\" restriction is for practical reasons, re-reading stdin should be broken. I haven't outright banned the use of other files but I've discouraged them as it is basically another form of a list. Somewhere there may be a language that just sings when doing file manipulation and where that makes sense; however, for most there should be a way to accomplish without resorting to an externality.
At the end of the day for the implementer this should be a bit of fun. As an implementer you represent the expertise in your language, the reader may have no knowledge of your language. For the reader it should give them insight into how people think outside the box in other languages. Comments, especially for non-obvious (to the reader) bits will be extremely helpful. While the implementations may be a bit artificial in the context of this task, the general techniques may be useful elsewhere.
",
- "Take a decimal number",
- "Look at the number, visually grouping consecutive runs of the same digit.",
- "Say the number, from left to right, group by group; as how many of that digit there are - followed by the digit grouped. This becomes the next number of the sequence.",
- "
An example:
",
- "Starting with the number 1, you have one 1 which produces 11",
- "Starting with 11, you have two 1's. I.E.: 21",
- "Starting with 21, you have one 2, then one 1. I.E.: (12)(11) which becomes 1211",
- "Starting with 1211, you have one 1, one 2, then two 1's. I.E.: (11)(12)(21) which becomes 111221Task:",
- "
Write a program to generate successive members of the look-and-say sequence.
",
- "See also:",
- " Look-and-Say Numbers (feat John Conway), A Numberphile Video.",
- " This task is related to, and an application of, the Run-length encoding task.",
- " Sequence A005150 on The On-Line Encyclopedia of Integer Sequences."
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "{{trans|Perl}}",
- "function lookandsay(str) {",
- " return str.replace(/(.)\\1*/g, function(seq, p1){return seq.length.toString() + p1})",
- "}",
- "",
- "var num = \"1\";",
- "for (var i = 10; i > 0; i--) {",
- " alert(num);",
- " num = lookandsay(num);",
- "}",
- "",
- "Without RegExp",
- "",
- "function lookSay(digits) {",
- " var result = '',",
- " chars = (digits + ' ').split(''),",
- " lastChar = chars[0],",
- " times = 0;",
- " ",
- " chars.forEach(function(nextChar) {",
- " if (nextChar === lastChar) {",
- " times++;",
- " }",
- " else {",
- " result += (times + '') + lastChar;",
- " lastChar = nextChar;",
- " times = 1;",
- " }",
- " });",
- " ",
- " return result;",
- "}",
- "",
- "(function output(seed, iterations) {",
- " for (var i = 0; i < iterations; i++) {",
- " console.log(seed);",
- " seed = lookSay(seed);",
- " }",
- "})(\"1\", 10);",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7eed",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "function lookandsay(str) {\n return str.replace(/(.)\\1*/g, function(seq, p1){return seq.length.toString() + p1})\n}\n\nvar num = \"1\";\nfor (var i = 10; i > 0; i--) {\n alert(num);\n num = lookandsay(num);\n}\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Loop over multiple arrays simultaneously",
- "type": "Waypoint",
- "description": [
- "Task:",
- "
Loop over multiple arrays (or lists or tuples or whatever they're called in
",
- "
your language) and display the i th element of each.
Use your language's \"for each\" loop if it has one, otherwise iterate
",
- "
through the collection in order with some other loop.
",
- "
For this example, loop over the arrays:
",
- "
(a,b,c)
",
- "
(A,B,C)
",
- "
(1,2,3)
",
- "
to produce the output:
",
- "
aA1
",
- "
bB2
",
- "
cC3
",
- "
If possible, also describe what happens when the arrays are of different lengths.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "",
- "===Imperative===",
- "This loops over the indices of the first array, ",
- "and uses that to index into the others.",
- "var a = [\"a\",\"b\",\"c\"],",
- " b = [\"A\",\"B\",\"C\"],",
- " c = [1,2,3],",
- " output = \"\",",
- " i;",
- "for (i = 0; i < a.length; i += 1) {",
- " output += a[i] + b[i] + c[i] + \"\\n\";",
- "}",
- "If the b or c arrays are too \"short\", ",
- "you will see the string \"undefined\" appear in the output.",
- "",
- "Alternatively, we can nest a couple of calls to '''.forEach()''': one for the array of three arrays, and one for each of the three index positions:",
- "",
- "var lstOut = ['', '', ''];",
- "",
- "[[\"a\", \"b\", \"c\"], [\"A\", \"B\", \"C\"], [\"1\", \"2\", \"3\"]].forEach(",
- " function (a) {",
- " [0, 1, 2].forEach(",
- " function (i) {",
- " // side-effect on an array outside the function",
- " lstOut[i] += a[i];",
- " }",
- " );",
- " }",
- ");",
- "",
- "// lstOut --> [\"aA1\", \"bB2\", \"cC3\"]",
- "",
- "===Functional (ES5)===",
- "",
- "Functional options include folding across an array of arrays with the built-in '''Array.reduce()''',",
- "using a zipWith() function of suitable arity, or mapping over the output of a generic (any arity) zip() function.",
- "",
- "(The generic zip function is the most tolerant – it simply ignores further elements in any arrays which are longer than the shortest array).",
- "",
- "Reduce / fold:",
- "",
- "(function (lstArrays) {",
- "",
- " return lstArrays.reduce(",
- " function (a, e) {",
- " return [",
- " a[0] + e[0],",
- " a[1] + e[1],",
- " a[2] + e[2]",
- " ];",
- " }, ['', '', ''] // initial copy of the accumulator",
- " ).join('\\n');",
- "",
- "})([",
- " [\"a\", \"b\", \"c\"],",
- " [\"A\", \"B\", \"C\"],",
- " [\"1\", \"2\", \"3\"]",
- "]);",
- "",
- "A fixed arity ZipWith:",
- "",
- "(function (x, y, z) {",
- "",
- " // function of arity 3 mapped over nth items of each of 3 lists",
- " // (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]",
- " function zipWith3(f, xs, ys, zs) {",
- " return zs.length ? [f(xs[0], ys[0], zs[0])].concat(",
- " zipWith3(f, xs.slice(1), ys.slice(1), zs.slice(1))) : [];",
- " }",
- "",
- " function concat(x, y, z) {",
- " return ''.concat(x, y, z);",
- " }",
- "",
- " return zipWith3(concat, x, y, z).join('\\n')",
- "",
- "})([\"a\", \"b\", \"c\"], [\"A\", \"B\", \"C\"], [1, 2, 3]);",
- "",
- "",
- "Or we can write a generic '''zipListsWith''' which applies some supplied function overs lists derived from the nth members of an arbitrary list of (equal-length) lists.",
- "",
- "(function () {",
- " 'use strict';",
- "",
- " // zipListsWith :: ([a] -> b) -> [[a]] -> [[b]]",
- " function zipListsWith(f, xss) {",
- " return (xss.length ? xss[0] : [])",
- " .map(function (_, i) {",
- " return f(xss.map(function (xs) {",
- " return xs[i];",
- " }));",
- " });",
- " }",
- "",
- "",
- "",
- "",
- " // Sample function over a list",
- "",
- " // concat :: [a] -> s",
- " function concat(lst) {",
- " return ''.concat.apply('', lst);",
- " }",
- "",
- "",
- " // TEST",
- " ",
- " return zipListsWith(",
- " concat, ",
- " [[\"a\", \"b\", \"c\"], [\"A\", \"B\", \"C\"], [1, 2, 3]]",
- " )",
- " .join('\\n');",
- "",
- "})();",
- "",
- "{{Out}}",
- "",
- "aA1",
- "bB2",
- "cC3",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7eee",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "var a = [\"a\",\"b\",\"c\"],\n b = [\"A\",\"B\",\"C\"],\n c = [1,2,3],\n output = \"\",\n i;\nfor (i = 0; i < a.length; i += 1) {\n output += a[i] + b[i] + c[i] + \"\\n\";\n}\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Loops/Do-while",
- "type": "Waypoint",
- "description": [
- "
Start with a value at 0. Loop while value mod 6 is not equal to 0.
",
- "
Each time through the loop, add 1 to the value then print it.
",
- "
The loop must execute at least once.
Reference:",
- "Do while loop Wikipedia."
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "",
- "===Javascript: Imperative===",
- "var val = 0;",
- "do {",
- " print(++val);",
- "} while (val % 6);",
- "",
- "===Javascript: Functional===",
- "====ES5====",
- "In a functional idiom of JavaScript we cannot use a Do While '''statement''', as it returns no value and is not a composable expression. We can, however achieve the same effect with a composable doWhile '''function''', which takes three arguments, and returns the output series as a value.",
- "",
- ":#An initial value,",
- ":#a Do function which transforms that value repetitively, corresponding to the body of the loop,",
- ":#and a conditional While function.",
- "",
- "function doWhile(varValue, fnBody, fnTest) {",
- " 'use strict';",
- " var d = fnBody(varValue); // a transformed value",
- "",
- " return fnTest(d) ? [d].concat(",
- " doWhile(d, fnBody, fnTest)",
- " ) : [d];",
- "}",
- "",
- "console.log(",
- " doWhile(0, // initial value",
- " function (x) { // Do body, returning transformed value",
- " return x + 1;",
- " },",
- " function (x) { // While condition",
- " return x % 6;",
- " }",
- " ).join('\\n')",
- "); ",
- "",
- "Output:",
- "1",
- "2",
- "3",
- "4",
- "5",
- "6 ",
- "",
- "Alternatively, if we assume instead that the unstated problem was not to produce repetitive computation, but to derive the '''membership of a set''' we could interpret the task as a request for a JavaScript implementation of the '''takeWhile''' function – a familiar staple of functional list processing.",
- "",
- "So, for example, something like:",
- "",
- "function range(m, n) {",
- " 'use strict';",
- " return Array.apply(null, Array(n - m + 1)).map(",
- " function (x, i) {",
- " return m + i;",
- " }",
- " );",
- "}",
- " ",
- "function takeWhile(lst, fnTest) {",
- " 'use strict';",
- " var varHead = lst.length ? lst[0] : null;",
- " ",
- " return varHead ? (",
- " fnTest(varHead) ? [varHead].concat(",
- " takeWhile(lst.slice(1), fnTest)",
- " ) : []",
- " ) : []",
- "}",
- " ",
- "console.log(",
- " takeWhile(",
- " range(1, 100),",
- " function (x) {",
- " return x % 6;",
- " }",
- " ).join('\\n')",
- "); ",
- "",
- "Output:",
- "1",
- "2",
- "3",
- "4",
- "5",
- "",
- "====ES6====",
- "",
- "A process or value of this kind might be better expressed (in functionally composed JavaScript) with an '''unfold''' or '''until''' function, returning a list.",
- "",
- "(() => {",
- " 'use strict';",
- "",
- " // unfoldr :: (b -> Maybe (a, b)) -> b -> [a]",
- " function unfoldr(mf, v) {",
- " for (var lst = [], a = v, m;",
- " (m = mf(a)) && m.valid;) {",
- " lst.push(m.value), a = m.new;",
- " }",
- " return lst;",
- " }",
- "",
- " // until :: (a -> Bool) -> (a -> a) -> a -> a",
- " function until(p, f, x) {",
- " let v = x;",
- " while(!p(v)) v = f(v);",
- " return v;",
- " }",
- "",
- " let result1 = unfoldr(",
- " x => {",
- " return {",
- " value: x,",
- " valid: (x % 6) !== 0,",
- " new: x + 1",
- " }",
- " },",
- " 1",
- " );",
- "",
- " let result2 = until(",
- " m => (m.n % 6) === 0,",
- " m => {",
- " return {",
- " n : m.n + 1,",
- " xs : m.xs.concat(m.n)",
- " };",
- " },",
- " {",
- " n: 1,",
- " xs: []",
- " }",
- " ).xs;",
- " ",
- " return [result1, result2];",
- "})();",
- "",
- "",
- "",
- "[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7ef1",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "var val = 0;\ndo {\n print(++val);\n} while (val % 6);\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Loops/Nested",
- "type": "Waypoint",
- "description": [
- "
Show a nested loop which searches a two-dimensional array filled with random numbers uniformly distributed over $[1,\\ldots,20]$.
The loops iterate rows and columns of the array printing the elements until the value $20$ is met.
Specifically, this task also shows how to break out of nested loops.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "Demonstrates use of break with a label.",
- "Uses print() function from [[Rhino]].",
- "// a \"random\" 2-D array ",
- "var a = [[2, 12, 10, 4], [18, 11, 9, 3], [14, 15, 7, 17], [6, 19, 8, 13], [1, 20, 16, 5]];",
- "",
- "outer_loop:",
- "for (var i in a) {",
- " print(\"row \" + i);",
- " for (var j in a[i]) {",
- " print(\" \" + a[i][j]);",
- " if (a[i][j] == 20) ",
- " break outer_loop;",
- " }",
- "}",
- "print(\"done\");",
- "",
- "In a functional idiom of JavaScript, however, we can not use a loop statement, as statements return no value and can not be composed within other functional expressions. Functional JavaScript often replaces a loop with a map or fold. In this case, we can achieve the same task by defining the standard list-processing function '''takeWhile''', which terminates when a condition returns true.",
- "",
- "We can then search the groups in the nested array by nesting takeWhile inside itself, and finally terminate when the 20 is found by one further application of takeWhile.",
- "",
- "Using the same data as above, and returning the trail of numbers up to twenty from a nested and composable expression:",
- "",
- "var lst = [[2, 12, 10, 4], [18, 11, 9, 3], [14, 15, 7, 17], [6, 19, 8, 13], [1,",
- " 20, 16, 5]];",
- "",
- "var takeWhile = function (lst, fnTest) {",
- " 'use strict';",
- " var varHead = lst.length ? lst[0] : null;",
- "",
- " return varHead ? (",
- " fnTest(varHead) ? [varHead].concat(",
- " takeWhile(lst.slice(1), fnTest)",
- " ) : []",
- " ) : []",
- " },",
- "",
- " // The takeWhile function terminates when notTwenty(n) returns false",
- " notTwenty = function (n) {",
- " return n !== 20;",
- " },",
- "",
- " // Leftward groups containing no 20",
- " // takeWhile nested within takeWhile",
- " lstChecked = takeWhile(lst, function (group) {",
- " return takeWhile(",
- " group,",
- " notTwenty",
- " ).length === 4;",
- " });",
- "",
- "",
- "// Return the trail of numbers preceding 20 from a composable expression",
- "",
- "console.log(",
- " // Numbers before 20 in a group in which it was found",
- " lstChecked.concat(",
- " takeWhile(",
- " lst[lstChecked.length], notTwenty",
- " )",
- " )",
- " // flattened",
- " .reduce(function (a, x) {",
- " return a.concat(x);",
- " }).join('\\n')",
- "); ",
- "",
- "Output:",
- "2",
- "12",
- "10",
- "4",
- "18",
- "11",
- "9",
- "3",
- "14",
- "15",
- "7",
- "17",
- "6",
- "19",
- "8",
- "13",
- "6",
- "19",
- "8",
- "13",
- "1",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7ef7",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "// a \"random\" 2-D array \nvar a = [[2, 12, 10, 4], [18, 11, 9, 3], [14, 15, 7, 17], [6, 19, 8, 13], [1, 20, 16, 5]];\n\nouter_loop:\nfor (var i in a) {\n print(\"row \" + i);\n for (var j in a[i]) {\n print(\" \" + a[i][j]);\n if (a[i][j] == 20) \n break outer_loop;\n }\n}\nprint(\"done\");\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Lucas-Lehmer test",
- "type": "Waypoint",
- "description": [
- "
Lucas-Lehmer Test: for $p$ an odd prime, the Mersenne number $2^p-1$ is prime if and only if $2^p-1$ divides $S(p-1)$ where $S(n+1)=(S(n))^2-2$, and $S(1)=4$.
",
- "Task:",
- "
Calculate all Mersenne primes up to the implementation's
",
- "
maximum precision, or the 47th Mersenne prime (whichever comes first).
We see in the second formula that to get the $l_{ij}$ below the diagonal, we have to divide by the diagonal element (pivot) $u_{jj}$, so we get problems when $u_{jj}$ is either 0 or very small, which leads to numerical instability.
The solution to this problem is pivoting $A$, which means rearranging the rows of $A$, prior to the $LU$ decomposition, in a way that the largest element of each column gets onto the diagonal of $A$. Rearranging the rows means to multiply $A$ by a permutation matrix $P$:
$PA \\Rightarrow A'$
Example:
$
",
- "
\\begin{pmatrix}
",
- "
0 & 1 \\\\
",
- "
1 & 0
",
- "
\\end{pmatrix}
",
- "
\\begin{pmatrix}
",
- "
1 & 4 \\\\
",
- "
2 & 3
",
- "
\\end{pmatrix}
",
- "
\\Rightarrow
",
- "
\\begin{pmatrix}
",
- "
2 & 3 \\\\
",
- "
1 & 4
",
- "
\\end{pmatrix}
",
- "
$
The decomposition algorithm is then applied on the rearranged matrix so that
$PA = LU$
",
- "
Task description
The task is to implement a routine which will take a square nxn matrix $A$ and return a lower triangular matrix $L$, a upper triangular matrix $U$ and a permutation matrix $P$,
",
- "
so that the above equation is fulfilled.
",
- "
You should then test it on the following two examples and include your output.
",
- "Take the first member of the resultant array as the next ludic number 2.",
- "Remove every 2nd indexed item from the array (including the first).:2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ...",
- "(Unrolling a few loops...)",
- "Take the first member of the resultant array as the next ludic number 3.",
- "Remove every 3rd indexed item from the array (including the first).:3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 ...",
- "Take the first member of the resultant array as the next ludic number 5.",
- "Remove every 5th indexed item from the array (including the first).:5 7 11 13 17 19 23 25 29 31 35 37 41 43 47 49 53 55 59 61 65 67 71 73 77 ...",
- "Take the first member of the resultant array as the next ludic number 7.",
- "Remove every 7th indexed item from the array (including the first).:7 11 13 17 23 25 29 31 37 41 43 47 53 55 59 61 67 71 73 77 83 85 89 91 97 ...",
- " ... ",
- "Take the first member of the current array as the next ludic number L.",
- "Remove every Lth indexed item from the array (including the first).",
- " ... ",
- "Task:",
- "Generate and show here the first 25 ludic numbers.",
- "How many ludic numbers are there less than or equal to 1000?",
- "Show the 2000..2005th ludic numbers.",
- "Stretch goal:",
- "
Show all triplets of ludic numbers < 250.
",
- "A triplet is any three numbers $x,$ $x+2,$ $x+6$ where all three numbers are also ludic numbers. "
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "===ES6===",
- "/**",
- " * Boilerplate to simply get an array filled between 2 numbers",
- " * @param {!number} s Start here (inclusive)",
- " * @param {!number} e End here (inclusive)",
- " */",
- "const makeArr = (s, e) => new Array(e + 1 - s).fill(s).map((e, i) => e + i);",
- "",
- "/**",
- " * Remove every n-th element from the given array",
- " * @param {!Array} arr",
- " * @param {!number} n",
- " * @return {!Array}",
- " */",
- "const filterAtInc = (arr, n) => arr.filter((e, i) => (i + 1) % n);",
- "",
- "/**",
- " * Generate ludic numbers",
- " * @param {!Array} arr",
- " * @param {!Array} result",
- " * @return {!Array}",
- " */",
- "const makeLudic = (arr, result) => {",
- " const iter = arr.shift();",
- " result.push(iter);",
- " return arr.length ? makeLudic(filterAtInc(arr, iter), result) : result;",
- "};",
- "",
- "/**",
- " * Our Ludic numbers. This is a bit of a cheat, as we already know beforehand",
- " * up to where our seed array needs to go in order to exactly get to the",
- " * 2005th Ludic number.",
- " * @type {!Array}",
- " */",
- "const ludicResult = makeLudic(makeArr(2, 21512), [1]);",
- "",
- "",
- "// Below is just logging out the results.",
- "/**",
- " * Given a number, return a function that takes an array, and return the",
- " * count of all elements smaller than the given",
- " * @param {!number} n",
- " * @return {!Function}",
- " */",
- "const smallerThanN = n => arr => {",
- " return arr.reduce((p,c) => {",
- " return c <= n ? p + 1 : p",
- " }, 0)",
- "};",
- "const smallerThan1K = smallerThanN(1000);",
- "",
- "console.log('\\nFirst 25 Ludic Numbers:');",
- "console.log(ludicResult.filter((e, i) => i < 25).join(', '));",
- "",
- "console.log('\\nTotal Ludic numbers smaller than 1000:');",
- "console.log(smallerThan1K(ludicResult));",
- "",
- "console.log('\\nThe 2000th to 2005th ludic numbers:');",
- "console.log(ludicResult.filter((e, i) => i > 1998).join(', '));",
- "",
- "console.log('\\nTriplets smaller than 250:');",
- "ludicResult.forEach(e => {",
- " if (e + 6 < 250 && ludicResult.indexOf(e + 2) > 0 && ludicResult.indexOf(e + 6) > 0) {",
- " console.log([e, e + 2, e + 6].join(', '));",
- " }",
- "});",
- "",
- "
",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7efc",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "/**\n * Boilerplate to simply get an array filled between 2 numbers\n * @param {!number} s Start here (inclusive)\n * @param {!number} e End here (inclusive)\n */\nconst makeArr = (s, e) => new Array(e + 1 - s).fill(s).map((e, i) => e + i);\n\n/**\n * Remove every n-th element from the given array\n * @param {!Array} arr\n * @param {!number} n\n * @return {!Array}\n */\nconst filterAtInc = (arr, n) => arr.filter((e, i) => (i + 1) % n);\n\n/**\n * Generate ludic numbers\n * @param {!Array} arr\n * @param {!Array} result\n * @return {!Array}\n */\nconst makeLudic = (arr, result) => {\n const iter = arr.shift();\n result.push(iter);\n return arr.length ? makeLudic(filterAtInc(arr, iter), result) : result;\n};\n\n/**\n * Our Ludic numbers. This is a bit of a cheat, as we already know beforehand\n * up to where our seed array needs to go in order to exactly get to the\n * 2005th Ludic number.\n * @type {!Array}\n */\nconst ludicResult = makeLudic(makeArr(2, 21512), [1]);\n\n\n// Below is just logging out the results.\n/**\n * Given a number, return a function that takes an array, and return the\n * count of all elements smaller than the given\n * @param {!number} n\n * @return {!Function}\n */\nconst smallerThanN = n => arr => {\n return arr.reduce((p,c) => {\n return c <= n ? p + 1 : p\n }, 0)\n};\nconst smallerThan1K = smallerThanN(1000);\n\nconsole.log('\\nFirst 25 Ludic Numbers:');\nconsole.log(ludicResult.filter((e, i) => i < 25).join(', '));\n\nconsole.log('\\nTotal Ludic numbers smaller than 1000:');\nconsole.log(smallerThan1K(ludicResult));\n\nconsole.log('\\nThe 2000th to 2005th ludic numbers:');\nconsole.log(ludicResult.filter((e, i) => i > 1998).join(', '));\n\nconsole.log('\\nTriplets smaller than 250:');\nludicResult.forEach(e => {\n if (e + 6 < 250 && ludicResult.indexOf(e + 2) > 0 && ludicResult.indexOf(e + 6) > 0) {\n console.log([e, e + 2, e + 6].join(', '));\n }\n});\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Luhn test of credit card numbers",
- "type": "Waypoint",
- "description": [
- "
The Luhn test is used by some credit card companies to distinguish valid credit card numbers from what could be a random selection of digits.
Those companies using credit card numbers that can be validated by the Luhn test have numbers that pass the following test:
",
- " Reverse the order of the digits in the number.",
- " Take the first, third, ... and every other odd digit in the reversed digits and sum them to form the partial sum s1",
- " Taking the second, fourth ... and every other even digit in the reversed digits:# Multiply each digit by two and sum the digits if the answer is greater than nine to form partial sums for the even digits",
- "
# Sum the partial sums of the even digits to form s2
",
- "If s1 + s2 ends in zero then the original number is in the form of a valid credit card number as verified by the Luhn test.",
- "
For example, if the trial number is 49927398716:
",
- "
Reverse the digits:",
- " 61789372994",
- "Sum the odd digits:",
- " 6 + 7 + 9 + 7 + 9 + 4 = 42 = s1",
- "The even digits:",
- " 1, 8, 3, 2, 9",
- " Two times each even digit:",
- " 2, 16, 6, 4, 18",
- " Sum the digits of each multiplication:",
- " 2, 7, 6, 4, 9",
- " Sum the last:",
- " 2 + 7 + 6 + 4 + 9 = 28 = s2s1 + s2 = 70 which ends in zero which means that 49927398716 passes the Luhn test
",
- "Task:",
- "
Write a function/method/procedure/subroutine that will validate a number with the Luhn test, and
",
- "use it to validate the following numbers:",
- "
The above recurrence relation when applied to most starting numbers n = 1, 2, ... terminates in a palindrome quite quickly, for example if n0 = 12 we get
Notice that the check for a palindrome happens after an addition.
",
- "
Some starting numbers seem to go on forever; the recurrence relation for 196 has been calculated for millions of repetitions forming numbers with millions of digits, without forming a palindrome. These numbers that do not end in a palindrome are called Lychrel numbers.
For the purposes of this task a Lychrel number is any starting number that does not form a palindrome within 500 (or more) iterations.
",
- "Seed and related Lychrel numbers:",
- "
Any integer produced in the sequence of a Lychrel number is also a Lychrel number.
In general, any sequence from one Lychrel number might converge to join the sequence from a prior Lychrel number candidate; for example the sequences for the numbers 196 and then 689 begin:
So we see that the sequence starting with 689 converges to, and continues with the same numbers as that for 196. Because of this we can further split the Lychrel numbers into true Seed Lychrel number candidates, and Related numbers that produce no palindromes but have integers in their sequence seen as part of the sequence generated from a lower Lychrel number.
",
- "Task:",
- " Find the number of seed Lychrel number candidates and related numbers for n in the range 1..10000 inclusive. (With that iteration limit of 500).",
- " Print the number of seed Lychrels found; the actual seed Lychrels; and just the number of relates found.",
- " Print any seed Lychrel or related number that is itself a palindrome.",
- "
Show all output here.
",
- "References:",
- "What's special about 196? Numberphile video.",
- "A023108 Positive integers which apparently never result in a palindrome under repeated applications of the function f(x) = x + (x with digits reversed).",
- "Status of the 196 conjecture? Mathoverflow."
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": "null",
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7efe",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "LZW compression",
- "type": "Waypoint",
- "description": [
- "
The Lempel-Ziv-Welch (LZW) algorithm provides loss-less data compression.
You can read a complete description of it in the Wikipedia article on the subject. It was patented, but it entered the public domain in 2004.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "//LZW Compression/Decompression for Strings",
- "var LZW = {",
- " compress: function (uncompressed) {",
- " \"use strict\";",
- " // Build the dictionary.",
- " var i,",
- " dictionary = {},",
- " c,",
- " wc,",
- " w = \"\",",
- " result = [],",
- " dictSize = 256;",
- " for (i = 0; i < 256; i += 1) {",
- " dictionary[String.fromCharCode(i)] = i;",
- " }",
- "",
- " for (i = 0; i < uncompressed.length; i += 1) {",
- " c = uncompressed.charAt(i);",
- " wc = w + c;",
- " //Do not use dictionary[wc] because javascript arrays ",
- " //will return values for array['pop'], array['push'] etc",
- " // if (dictionary[wc]) {",
- " if (dictionary.hasOwnProperty(wc)) {",
- " w = wc;",
- " } else {",
- " result.push(dictionary[w]);",
- " // Add wc to the dictionary.",
- " dictionary[wc] = dictSize++;",
- " w = String(c);",
- " }",
- " }",
- "",
- " // Output the code for w.",
- " if (w !== \"\") {",
- " result.push(dictionary[w]);",
- " }",
- " return result;",
- " },",
- "",
- "",
- " decompress: function (compressed) {",
- " \"use strict\";",
- " // Build the dictionary.",
- " var i,",
- " dictionary = [],",
- " w,",
- " result,",
- " k,",
- " entry = \"\",",
- " dictSize = 256;",
- " for (i = 0; i < 256; i += 1) {",
- " dictionary[i] = String.fromCharCode(i);",
- " }",
- "",
- " w = String.fromCharCode(compressed[0]);",
- " result = w;",
- " for (i = 1; i < compressed.length; i += 1) {",
- " k = compressed[i];",
- " if (dictionary[k]) {",
- " entry = dictionary[k];",
- " } else {",
- " if (k === dictSize) {",
- " entry = w + w.charAt(0);",
- " } else {",
- " return null;",
- " }",
- " }",
- "",
- " result += entry;",
- "",
- " // Add w+entry[0] to the dictionary.",
- " dictionary[dictSize++] = w + entry.charAt(0);",
- "",
- " w = entry;",
- " }",
- " return result;",
- " }",
- "}, // For Test Purposes",
- " comp = LZW.compress(\"TOBEORNOTTOBEORTOBEORNOT\"),",
- " decomp = LZW.decompress(comp);",
- "document.write(comp + ' ' + decomp);",
- "",
- "{{out}}",
- "
",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7eff",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "//LZW Compression/Decompression for Strings\nvar LZW = {\n compress: function (uncompressed) {\n \"use strict\";\n // Build the dictionary.\n var i,\n dictionary = {},\n c,\n wc,\n w = \"\",\n result = [],\n dictSize = 256;\n for (i = 0; i < 256; i += 1) {\n dictionary[String.fromCharCode(i)] = i;\n }\n\n for (i = 0; i < uncompressed.length; i += 1) {\n c = uncompressed.charAt(i);\n wc = w + c;\n //Do not use dictionary[wc] because javascript arrays \n //will return values for array['pop'], array['push'] etc\n // if (dictionary[wc]) {\n if (dictionary.hasOwnProperty(wc)) {\n w = wc;\n } else {\n result.push(dictionary[w]);\n // Add wc to the dictionary.\n dictionary[wc] = dictSize++;\n w = String(c);\n }\n }\n\n // Output the code for w.\n if (w !== \"\") {\n result.push(dictionary[w]);\n }\n return result;\n },\n\n\n decompress: function (compressed) {\n \"use strict\";\n // Build the dictionary.\n var i,\n dictionary = [],\n w,\n result,\n k,\n entry = \"\",\n dictSize = 256;\n for (i = 0; i < 256; i += 1) {\n dictionary[i] = String.fromCharCode(i);\n }\n\n w = String.fromCharCode(compressed[0]);\n result = w;\n for (i = 1; i < compressed.length; i += 1) {\n k = compressed[i];\n if (dictionary[k]) {\n entry = dictionary[k];\n } else {\n if (k === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n\n result += entry;\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n\n w = entry;\n }\n return result;\n }\n}, // For Test Purposes\n comp = LZW.compress(\"TOBEORNOTTOBEORTOBEORNOT\"),\n decomp = LZW.decompress(comp);\ndocument.write(comp + ' ' + decomp);\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Magic squares of doubly even order",
- "type": "Waypoint",
- "description": [
- "
A magic square is an NxN square matrix whose numbers consist of consecutive numbers arranged so that the sum of each row and column, and both diagonals are equal to the same sum (which is called the magic number or magic constant).
A magic square of doubly even order has a size that is a multiple of four (e.g. 4, 8, 12). This means that the subsquares also have an even size, which plays a role in the construction.
",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7f03",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "(() => {\n 'use strict';\n\n // doubleEvenMagicSquare :: Int -> [[Int]]\n const doubleEvenMagicSquare = n => {\n if (n % 4 > 0) return undefined;\n\n // truthSeries :: Int -> [Int]\n const truthSeries = n => {\n if (n <= 0) return [true];\n const xs = truthSeries(n - 1);\n return xs.concat(xs.map(x => !x));\n };\n\n const sqr = n * n,\n scale = curry(replicate)(n / 4),\n power = Math.log2(sqr),\n sequence = isInt(power) ? truthSeries(power) : (\n flatten(\n scale(\n splitEvery(4, truthSeries(4))\n .map(scale)\n )\n )\n );\n\n return splitEvery(n, sequence\n .map((x, i) => x ? i + 1 : sqr - i));\n };\n\n\n // GENERIC FUNCTIONS ----------------------------------------------------\n\n // flatten :: Tree a -> [a]\n const flatten = t => (t instanceof Array ? concatMap(flatten, t) : [t]);\n\n // concatMap :: (a -> [b]) -> [a] -> [b]\n const concatMap = (f, xs) => [].concat.apply([], xs.map(f));\n\n // splitEvery :: Int -> [a] -> [][a]]\n const splitEvery = (n, xs) => {\n if (xs.length <= n) return [xs];\n const [h, t] = [xs.slice(0, n), xs.slice(n)];\n return [h].concat(splitEvery(n, t));\n }\n\n // curry :: ((a, b) -> c) -> a -> b -> c\n const curry = f => a => b => f(a, b);\n\n // replicate :: Int -> a -> [a]\n const replicate = (n, a) => {\n let v = [a],\n o = [];\n if (n < 1) return o;\n while (n > 1) {\n if (n & 1) o = o.concat(v);\n n >>= 1;\n v = v.concat(v);\n }\n return o.concat(v);\n };\n\n // isInt :: Int -> Bool\n const isInt = x => x === Math.floor(x);\n\n\n // TEST AND DISPLAY FUNCTIONS -------------------------------------------\n\n // transpose :: [[a]] -> [[a]]\n const transpose = xs =>\n xs[0].map((_, iCol) => xs.map((row) => row[iCol]));\n\n // diagonals :: [[a]] -> ([a], [a])\n const diagonals = xs => {\n const nRows = xs.length,\n nCols = (nRows > 0 ? xs[0].length : 0);\n const cell = (x, y) => xs[y][x];\n\n if (nRows === nCols) {\n const ns = range(0, nCols - 1);\n return [zipWith(cell, ns, ns), zipWith(cell, ns, reverse(ns))];\n } else return [\n [],\n []\n ];\n };\n\n // zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]\n const zipWith = (f, xs, ys) => {\n const ny = ys.length;\n return (xs.length <= ny ? xs : xs.slice(0, ny))\n .map((x, i) => f(x, ys[i]));\n }\n\n // reverse :: [a] -> [a]\n const reverse = (xs) => xs.slice(0)\n .reverse()\n\n // range :: Int -> Int -> [Int]\n const range = (m, n) =>\n Array.from({\n length: Math.floor(n - m) + 1\n }, (_, i) => m + i);\n\n // all :: (a -> Bool) -> [a] -> Bool\n const all = (f, xs) => xs.every(f);\n\n // show :: a -> String\n const show = x => JSON.stringify(x);\n\n // justifyRight :: Int -> Char -> Text -> Text\n const justifyRight = (n, cFiller, strText) =>\n n > strText.length ? (\n (cFiller.repeat(n) + strText)\n .slice(-n)\n ) : strText;\n\n // TEST -----------------------------------------------------------------\n\n //return doubleEvenMagicSquare(8)\n\n return [4, 8, 12]\n .map(n => {\n const lines = doubleEvenMagicSquare(n);\n const sums = lines.concat(\n transpose(lines)\n .concat(diagonals(lines))\n )\n .map(xs => xs.reduce((a, b) => a + b, 0));\n const sum = sums[0];\n return [\n \"Order: \" + n.toString(),\n \"Summing to: \" + sum.toString(),\n \"Row, column and diagonal sums checked: \" +\n all(x => x === sum, sums)\n .toString() + '\\n',\n lines.map(\n xs => xs.map(\n x => justifyRight(3, ' ', x.toString())\n )\n .join(' '))\n .join('\\n')\n ].join('\\n')\n })\n .join('\\n\\n');\n})();\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Magic squares of odd order",
- "type": "Waypoint",
- "description": [
- "
A magic square is an NxN square matrix whose numbers (usually integers) consist of consecutive numbers arranged so that the sum of each row and column, and both long (main) diagonals are equal to the same sum (which is called the magic number or magic constant).
The numbers are usually (but not always) the first N2 positive integers.
A magic square whose rows and columns add up to a magic number but whose main diagonals do not, is known as a semimagic square.
",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7f04",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "(function () {\n\n // n -> [[n]]\n function magic(n) {\n return n % 2 ? rotation(\n transposed(\n rotation(\n table(n)\n )\n )\n ) : null;\n }\n\n // [[a]] -> [[a]]\n function rotation(lst) {\n return lst.map(function (row, i) {\n return rotated(\n row, ((row.length + 1) / 2) - (i + 1)\n );\n })\n }\n\n // [[a]] -> [[a]]\n function transposed(lst) {\n return lst[0].map(function (col, i) {\n return lst.map(function (row) {\n return row[i];\n })\n });\n }\n\n // [a] -> n -> [a]\n function rotated(lst, n) {\n var lng = lst.length,\n m = (typeof n === 'undefined') ? 1 : (\n n < 0 ? lng + n : (n > lng ? n % lng : n)\n );\n\n return m ? (\n lst.slice(-m).concat(lst.slice(0, lng - m))\n ) : lst;\n }\n\n // n -> [[n]]\n function table(n) {\n var rngTop = rng(1, n);\n\n return rng(0, n - 1).map(function (row) {\n return rngTop.map(function (x) {\n return row * n + x;\n });\n });\n }\n\n // [m..n]\n function rng(m, n) {\n return Array.apply(null, Array(n - m + 1)).map(\n function (x, i) {\n return m + i;\n });\n }\n\n /******************** TEST WITH 3, 5, 11 ***************************/\n\n // Results as right-aligned wiki tables\n function wikiTable(lstRows, blnHeaderRow, strStyle) {\n var css = strStyle ? 'style=\"' + strStyle + '\"' : '';\n\n return '{| class=\"wikitable\" ' + css + lstRows.map(\n function (lstRow, iRow) {\n var strDelim = ((blnHeaderRow && !iRow) ? '!' : '|'),\n strDbl = strDelim + strDelim;\n\n return '\\n|-\\n' + strDelim + ' ' + lstRow.join(' ' + strDbl + ' ');\n }).join('') + '\\n|}';\n }\n\n return [3, 5, 11].map(\n function (n) {\n var w = 2.5 * n;\n return 'magic(' + n + ')\\n\\n' + wikiTable(\n magic(n), false, 'text-align:center;width:' + w + 'em;height:' + w + 'em;table-layout:fixed;'\n )\n }\n ).join('\\n\\n')\n})();\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Magic squares of singly even order",
- "type": "Waypoint",
- "description": [
- "
A magic square is an NxN square matrix whose numbers consist of consecutive numbers arranged so that the sum of each row and column, and both diagonals are equal to the same sum (which is called the magic number or magic constant).
A magic square of singly even order has a size that is a multiple of 4, plus 2 (e.g. 6, 10, 14). This means that the subsquares have an odd size, which plays a role in the construction.
GOST 28147-89 is a standard symmetric encryption based on a Feistel network. Structure of the algorithm consists of three levels:
encryption modes - simple replacement, application range, imposing a range of feedback and authentication code generation;",
- "cycles - 32-З, 32-Р and 16-З, is a repetition of the main step;",
- "main step, a function that takes a 64-bit block of text and one of the eight 32-bit encryption key elements, and uses the replacement table (8x16 matrix of 4-bit values), and returns encrypted block.",
- "
Implement the main step of this encryption algorithm.
This task is named after the posix mkdir -p command, and several libraries which implement the same behavior.
Please implement a function of a single path string (for example ./path/to/dir) which has the above side-effect.
",
- "
If the directory already exists, return successfully.
",
- "
Ideally implementations will work equally well cross-platform (on windows, linux, and OS X).
It's likely that your language implements such a function as part of its standard library. If so, please also show how such a function would be implemented.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "{{works with|Node.js}}",
- "",
- "Simplified version of the popular [https://www.npmjs.org/package/mkdirp mkdirp library]:",
- "",
- "var path = require('path');",
- "var fs = require('fs');",
- "",
- "function mkdirp (p, cb) {",
- " cb = cb || function () {};",
- " p = path.resolve(p);",
- "",
- " fs.mkdir(p, function (er) {",
- " if (!er) {",
- " return cb(null);",
- " }",
- " switch (er.code) {",
- " case 'ENOENT':",
- " // The directory doesn't exist. Make its parent and try again.",
- " mkdirp(path.dirname(p), function (er) {",
- " if (er) cb(er);",
- " else mkdirp(p, cb);",
- " });",
- " break;",
- "",
- " // In the case of any other error, something is borked.",
- " default:",
- " cb(er);",
- " break;",
- " }",
- " });",
- "}",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7f07",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "var path = require('path');\nvar fs = require('fs');\n\nfunction mkdirp (p, cb) {\n cb = cb || function () {};\n p = path.resolve(p);\n\n fs.mkdir(p, function (er) {\n if (!er) {\n return cb(null);\n }\n switch (er.code) {\n case 'ENOENT':\n // The directory doesn't exist. Make its parent and try again.\n mkdirp(path.dirname(p), function (er) {\n if (er) cb(er);\n else mkdirp(p, cb);\n });\n break;\n\n // In the case of any other error, something is borked.\n default:\n cb(er);\n break;\n }\n });\n}\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Mandelbrot set",
- "type": "Waypoint",
- "description": [
- "Task:",
- "
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "{{works with|Firefox|3.5.11}}",
- "",
- "This needs the canvas tag of HTML 5 (it will not run on IE8 and lower or old browsers).",
- "",
- "The code can be run directly from the Javascript console in modern browsers by copying and pasting it.",
- "",
- "function mandelIter(cx, cy, maxIter) {",
- " var x = 0.0;",
- " var y = 0.0;",
- " var xx = 0;",
- " var yy = 0;",
- " var xy = 0;",
- "",
- " var i = maxIter;",
- " while (i-- && xx + yy <= 4) {",
- " xy = x * y;",
- " xx = x * x;",
- " yy = y * y;",
- " x = xx - yy + cx;",
- " y = xy + xy + cy;",
- " }",
- " return maxIter - i;",
- "}",
- "",
- "function mandelbrot(canvas, xmin, xmax, ymin, ymax, iterations) {",
- " var width = canvas.width;",
- " var height = canvas.height;",
- "",
- " var ctx = canvas.getContext('2d');",
- " var img = ctx.getImageData(0, 0, width, height);",
- " var pix = img.data;",
- " ",
- " for (var ix = 0; ix < width; ++ix) {",
- " for (var iy = 0; iy < height; ++iy) {",
- " var x = xmin + (xmax - xmin) * ix / (width - 1);",
- " var y = ymin + (ymax - ymin) * iy / (height - 1);",
- " var i = mandelIter(x, y, iterations);",
- " var ppos = 4 * (width * iy + ix);",
- " ",
- " if (i > iterations) {",
- " pix[ppos] = 0;",
- " pix[ppos + 1] = 0;",
- " pix[ppos + 2] = 0;",
- " } else {",
- " var c = 3 * Math.log(i) / Math.log(iterations - 1.0);",
- " ",
- " if (c < 1) {",
- " pix[ppos] = 255 * c;",
- " pix[ppos + 1] = 0;",
- " pix[ppos + 2] = 0;",
- " }",
- " else if ( c < 2 ) {",
- " pix[ppos] = 255;",
- " pix[ppos + 1] = 255 * (c - 1);",
- " pix[ppos + 2] = 0;",
- " } else {",
- " pix[ppos] = 255;",
- " pix[ppos + 1] = 255;",
- " pix[ppos + 2] = 255 * (c - 2);",
- " }",
- " }",
- " pix[ppos + 3] = 255;",
- " }",
- " }",
- " ",
- " ctx.putImageData(img, 0, 0);",
- "}",
- "",
- "var canvas = document.createElement('canvas');",
- "canvas.width = 900;",
- "canvas.height = 600;",
- "",
- "document.body.insertBefore(canvas, document.body.childNodes[0]);",
- "",
- "mandelbrot(canvas, -2, 1, -1, 1, 1000);",
- "",
- "{{out}} with default parameters:",
- "[[File:Mandelbrot-Javascript.png]]",
- "",
- "=== ES6/WebAssembly ===",
- "",
- "With ES6 and WebAssembly, the program can run faster. Of course, this requires a compiled WASM file, but one can easily build",
- "one for instance with the [https://mbebenita.github.io/WasmExplorer/ WebAssembly explorer]",
- "",
- "var mandelIter;",
- "fetch(\"./mandelIter.wasm\")",
- " .then(res => {",
- " if (res.ok) return res.arrayBuffer();",
- " throw new Error('Unable to fetch WASM.');",
- " })",
- " .then(bytes => { return WebAssembly.compile(bytes); })",
- " .then(module => { return WebAssembly.instantiate(module); })",
- " .then(instance => { WebAssembly.instance = instance; draw(); })",
- "",
- "function mandelbrot(canvas, xmin, xmax, ymin, ymax, iterations) {",
- " // ...",
- " var i = WebAssembly.instance.exports.mandelIter(x, y, iterations);",
- " // ...",
- "}",
- "",
- "function draw() {",
- " // canvas initialization if necessary",
- " // ...",
- " mandelbrot(canvas, -2, 1, -1, 1, 1000);",
- " // ...",
- "}",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7f08",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "function mandelIter(cx, cy, maxIter) {\n var x = 0.0;\n var y = 0.0;\n var xx = 0;\n var yy = 0;\n var xy = 0;\n\n var i = maxIter;\n while (i-- && xx + yy <= 4) {\n xy = x * y;\n xx = x * x;\n yy = y * y;\n x = xx - yy + cx;\n y = xy + xy + cy;\n }\n return maxIter - i;\n}\n\nfunction mandelbrot(canvas, xmin, xmax, ymin, ymax, iterations) {\n var width = canvas.width;\n var height = canvas.height;\n\n var ctx = canvas.getContext('2d');\n var img = ctx.getImageData(0, 0, width, height);\n var pix = img.data;\n \n for (var ix = 0; ix < width; ++ix) {\n for (var iy = 0; iy < height; ++iy) {\n var x = xmin + (xmax - xmin) * ix / (width - 1);\n var y = ymin + (ymax - ymin) * iy / (height - 1);\n var i = mandelIter(x, y, iterations);\n var ppos = 4 * (width * iy + ix);\n \n if (i > iterations) {\n pix[ppos] = 0;\n pix[ppos + 1] = 0;\n pix[ppos + 2] = 0;\n } else {\n var c = 3 * Math.log(i) / Math.log(iterations - 1.0);\n \n if (c < 1) {\n pix[ppos] = 255 * c;\n pix[ppos + 1] = 0;\n pix[ppos + 2] = 0;\n }\n else if ( c < 2 ) {\n pix[ppos] = 255;\n pix[ppos + 1] = 255 * (c - 1);\n pix[ppos + 2] = 0;\n } else {\n pix[ppos] = 255;\n pix[ppos + 1] = 255;\n pix[ppos + 2] = 255 * (c - 2);\n }\n }\n pix[ppos + 3] = 255;\n }\n }\n \n ctx.putImageData(img, 0, 0);\n}\n\nvar canvas = document.createElement('canvas');\ncanvas.width = 900;\ncanvas.height = 600;\n\ndocument.body.insertBefore(canvas, document.body.childNodes[0]);\n\nmandelbrot(canvas, -2, 1, -1, 1, 1000);\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Man or boy test",
- "type": "Waypoint",
- "description": [
- "
Background: The man or boy test was proposed by computer scientist Donald Knuth as a means of evaluating implementations of the ALGOL 60 programming language. The aim of the test was to distinguish compilers that correctly implemented \"recursion and non-local references\" from those that did not.
",
- "
I have written the following simple routine, which may separate the 'man-compilers' from the 'boy-compilers' — Donald Knuth
Details: Local variables of routines are often kept in activation records (also call frames). In many languages, these records are kept on a call stack. In Algol (and e.g. in Smalltalk), they are allocated on a heap instead. Hence it is possible to pass references to routines that still can use and update variables from their call environment, even if the routine where those variables are declared already returned. This difference in implementations is sometimes called the Funarg Problem.
In Knuth's example, each call to A allocates an activation record for the variable A. When B is called from A, any access to k now refers to this activation record. Now B in turn calls A, but passes itself as an argument. This argument remains bound to the activation record. This call to A also \"shifts\" the variables xi by one place, so eventually the argument B (still bound to its particular
",
- "
activation record) will appear as x4 or x5 in a call to A. If this happens when the expression x4 + x5 is evaluated, then this will again call B, which in turn will update k in the activation record it was originally bound to. As this activation record is shared with other instances of calls to A and B, it will influence the whole computation.
So all the example does is to set up a convoluted calling structure, where updates to k can influence the behavior
",
- "
in completely different parts of the call tree.
Knuth used this to test the correctness of the compiler, but one can of course also use it to test that other languages can emulate the Algol behavior correctly. If the handling of activation records is correct, the computed value will be −67.
Performance and Memory: Man or Boy is intense and can be pushed to challenge any machine. Memory (both stack and heap) not CPU time is the constraining resource as the recursion creates a proliferation activation records which will quickly exhaust memory and present itself through a stack error. Each language may have ways of adjusting the amount of memory or increasing the recursion depth. Optionally, show how you would make such adjustments.
The table below shows the result, call depths, and total calls for a range of k:
",
- "
{| style=\"font-size: 85%\"
",
- "
! k
",
- "
! 0
",
- "
! 1
",
- "
! 2
",
- "
! 3
",
- "
! 4
",
- "
! 5
",
- "
! 6
",
- "
! 7
",
- "
! 8
",
- "
! 9
",
- "
! 10
",
- "
! 11
",
- "
! 12
",
- "
! 13
",
- "
! 14
",
- "
! 15
",
- "
! 16
",
- "
! 17
",
- "
! 18
",
- "
! 19
",
- "
! 20
",
- "
! 21
",
- "
! 22
",
- "
! 23
",
- "
! 24
",
- "
! 25
",
- "
! 26
",
- "
! 27
",
- "
! 28
",
- "
! 29
",
- "
! 30
",
- "
|-
",
- "
! A
",
- "
|align=\"right\"| 1
",
- "
|align=\"right\"| 0
",
- "
|align=\"right\"| -2
",
- "
|align=\"right\"| 0
",
- "
|align=\"right\"| 1
",
- "
|align=\"right\"| 0
",
- "
|align=\"right\"| 1
",
- "
|align=\"right\"| -1
",
- "
|align=\"right\"| -10
",
- "
|align=\"right\"| -30
",
- "
|align=\"right\"| -67
",
- "
|align=\"right\"| -138
",
- "
|align=\"right\"| -291
",
- "
|align=\"right\"| -642
",
- "
|align=\"right\"| -1,446
",
- "
|align=\"right\"| -3,250
",
- "
|align=\"right\"| -7,244
",
- "
|align=\"right\"| -16,065
",
- "
|align=\"right\"| -35,601
",
- "
|align=\"right\"| -78,985
",
- "
|align=\"right\"| -175,416
",
- "
|align=\"right\"| -389,695
",
- "
|align=\"right\"| -865,609
",
- "
|align=\"right\"| -1,922,362
",
- "
|align=\"right\"| -4,268,854
",
- "
|align=\"right\"| -9,479,595
",
- "
|align=\"right\"| -21,051,458
",
- "
|align=\"right\"| -46,750,171
",
- "
|align=\"right\"| -103,821,058
",
- "
|align=\"right\"| -230,560,902
",
- "
|align=\"right\"| -512,016,658
",
- "
|-
",
- "
! A called
",
- "
|align=\"right\"| 1
",
- "
|align=\"right\"| 2
",
- "
|align=\"right\"| 3
",
- "
|align=\"right\"| 4
",
- "
|align=\"right\"| 8
",
- "
|align=\"right\"| 18
",
- "
|align=\"right\"| 38
",
- "
|align=\"right\"| 80
",
- "
|align=\"right\"| 167
",
- "
|align=\"right\"| 347
",
- "
|align=\"right\"| 722
",
- "
|align=\"right\"| 1,509
",
- "
|align=\"right\"| 3,168
",
- "
|align=\"right\"| 6,673
",
- "
|align=\"right\"| 14,091
",
- "
|align=\"right\"| 29,825
",
- "
|align=\"right\"| 63,287
",
- "
|align=\"right\"| 134,652
",
- "
|align=\"right\"| 287,264
",
- "
|align=\"right\"| 614,442
",
- "
|align=\"right\"| 1,317,533
",
- "
|align=\"right\"| 2,831,900
",
- "
|align=\"right\"| 6,100,852
",
- "
|align=\"right\"| 13,172,239
",
- "
|align=\"right\"| 28,499,827
",
- "
|
",
- "
|
",
- "
|
",
- "
|
",
- "
|
",
- "
|
",
- "
|-
",
- "
! A depth
",
- "
|align=\"right\"| 1
",
- "
|align=\"right\"| 2
",
- "
|align=\"right\"| 3
",
- "
|align=\"right\"| 4
",
- "
|align=\"right\"| 8
",
- "
|align=\"right\"| 16
",
- "
|align=\"right\"| 32
",
- "
|align=\"right\"| 64
",
- "
|align=\"right\"| 128
",
- "
|align=\"right\"| 256
",
- "
|align=\"right\"| 512
",
- "
|align=\"right\"| 1,024
",
- "
|align=\"right\"| 2,048
",
- "
|align=\"right\"| 4,096
",
- "
|align=\"right\"| 8,192
",
- "
|align=\"right\"| 16,384
",
- "
|align=\"right\"| 32,768
",
- "
|align=\"right\"| 65,536
",
- "
|align=\"right\"| 131,072
",
- "
|align=\"right\"| 262,144
",
- "
|align=\"right\"| 524,288
",
- "
|align=\"right\"| 1,048,576
",
- "
|align=\"right\"| 2,097,152
",
- "
|align=\"right\"| 4,194,304
",
- "
|align=\"right\"| 8,388,608
",
- "
|
",
- "
|
",
- "
|
",
- "
|
",
- "
|
",
- "
|
",
- "
|-
",
- "
! B called
",
- "
|align=\"right\"| 0
",
- "
|align=\"right\"| 1
",
- "
|align=\"right\"| 2
",
- "
|align=\"right\"| 3
",
- "
|align=\"right\"| 7
",
- "
|align=\"right\"| 17
",
- "
|align=\"right\"| 37
",
- "
|align=\"right\"| 79
",
- "
|align=\"right\"| 166
",
- "
|align=\"right\"| 346
",
- "
|align=\"right\"| 721
",
- "
|align=\"right\"| 1,508
",
- "
|align=\"right\"| 3,167
",
- "
|align=\"right\"| 6,672
",
- "
|align=\"right\"| 14,090
",
- "
|align=\"right\"| 29,824
",
- "
|align=\"right\"| 63,286
",
- "
|align=\"right\"| 134,651
",
- "
|align=\"right\"| 287,263
",
- "
|align=\"right\"| 614,441
",
- "
|align=\"right\"| 1,317,532
",
- "
|align=\"right\"| 2,831,899
",
- "
|align=\"right\"| 6,100,851
",
- "
|align=\"right\"| 13,172,238
",
- "
|align=\"right\"| 28,499,826
",
- "
|
",
- "
|
",
- "
|
",
- "
|
",
- "
|
",
- "
|
",
- "
|-
",
- "
! B depth
",
- "
|align=\"right\"| 0
",
- "
|align=\"right\"| 1
",
- "
|align=\"right\"| 2
",
- "
|align=\"right\"| 3
",
- "
|align=\"right\"| 7
",
- "
|align=\"right\"| 15
",
- "
|align=\"right\"| 31
",
- "
|align=\"right\"| 63
",
- "
|align=\"right\"| 127
",
- "
|align=\"right\"| 255
",
- "
|align=\"right\"| 511
",
- "
|align=\"right\"| 1,023
",
- "
|align=\"right\"| 2,047
",
- "
|align=\"right\"| 4,095
",
- "
|align=\"right\"| 8,191
",
- "
|align=\"right\"| 16,383
",
- "
|align=\"right\"| 32,767
",
- "
|align=\"right\"| 65,535
",
- "
|align=\"right\"| 131,071
",
- "
|align=\"right\"| 262,143
",
- "
|align=\"right\"| 524,287
",
- "
|align=\"right\"| 1,048,575
",
- "
|align=\"right\"| 2,097,151
",
- "
|align=\"right\"| 4,194,303
",
- "
|align=\"right\"| 8,388,607
",
- "
|
",
- "
|
",
- "
|
",
- "
|
",
- "
|
",
- "
|
",
- "
|}
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "In Chrome we get a \"Maximum call stack size exceeded\" when a > 13. In Firefox we get \"too much recursion\" when a > 12.",
- "function a(k, x1, x2, x3, x4, x5) {",
- " function b() {",
- " k -= 1;",
- " return a(k, b, x1, x2, x3, x4);",
- " }",
- " return (k > 0) ? b() : x4() + x5();",
- "}",
- "",
- "// this uses lambda wrappers around the numeric arguments",
- "function x(n) {",
- " return function () {",
- " return n;",
- " };",
- "}",
- "alert(a(10, x(1), x(-1), x(-1), x(1), x(0)));",
- "",
- "Implemented using ES6 syntax",
- "var x = n => () => n;",
- "",
- "var a = (k, x1, x2, x3, x4, x5) => {",
- " var b = () => return a(--k, b, x1, x2, x3, x4); //decrement k before use",
- " return (k > 0) ? b() : x4() + x5();",
- "};",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7f09",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "function a(k, x1, x2, x3, x4, x5) {\n function b() {\n k -= 1;\n return a(k, b, x1, x2, x3, x4);\n }\n return (k > 0) ? b() : x4() + x5();\n}\n\n// this uses lambda wrappers around the numeric arguments\nfunction x(n) {\n return function () {\n return n;\n };\n}\nalert(a(10, x(1), x(-1), x(-1), x(1), x(0)));\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Map range",
- "type": "Waypoint",
- "description": [
- "
Write a function/subroutine/... that takes two ranges and a real number, and returns the mapping of the real number from the first to the second range.
Use this function to map values from the range [0, 10] to the range [-1, 0].
",
- "Extra credit:",
- "
Show additional idiomatic ways of performing the mapping, using tools available to the language.
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "// Javascript doesn't have built-in support for ranges",
- "// Insted we use arrays of two elements to represent ranges",
- "var mapRange = function(from, to, s) {",
- " return to[0] + (s - from[0]) * (to[1] - to[0]) / (from[1] - from[0]);",
- "};",
- "",
- "var range = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];",
- "for (var i = 0; i < range.length; i++) {",
- " range[i] = mapRange([0, 10], [-1, 0], range[i]);",
- "}",
- "",
- "console.log(range);",
- "{{out}}",
- "
In both cases the sum is over the permutations $\\sigma$ of the permutations of 1, 2, ..., n. (A permutation's sign is 1 if there are an even number of inversions and -1 otherwise; see parity of a permutation.)
More efficient algorithms for the determinant are known: LU decomposition, see for example [[wp:LU decomposition#Computing the determinant]]. Efficient methods for calculating the permanent are not known.
You can compute the total of the numbers you have seen in such walk,
",
- "
in this case it's 205.
Your problem is to find the maximum total among all possible paths from the top to the bottom row of the triangle. In the little example above it's 321.
The purpose of this task to code and validate an implementation of the MD5 Message Digest Algorithm by coding the algorithm directly (not using a call to a built-in or external hashing library). For details of the algorithm refer to MD5 on Wikipedia or the MD5 definition in IETF RFC (1321).
The implementation needs to implement the key functionality namely producing a correct message digest for an input string. It is not necessary to mimic all of the calling modes such as adding to a digest one block at a time over subsequent calls. ",
- "In addition to coding and verifying your implementation, note any challenges your language presented implementing the solution, implementation choices made, or limitations of your solution. ",
- "Solutions on this page should implement MD5 directly and NOT use built in (MD5) functions, call outs to operating system calls or library routines written in other languages as is common in the original MD5 task.",
- "The following are acceptable:",
- "* An original implementation from the specification, reference implementation, or pseudo-code",
- "* A translation of a correct implementation from another language",
- "* A library routine in the same language; however, the source must be included here.",
- "
The solutions shown here will provide practical illustrations of bit manipulation, unsigned integers, working with little-endian data. Additionally, the task requires an attention to details such as boundary conditions since being out by even 1 bit will produce dramatically different results. Subtle implementation bugs can result in some hashes being correct while others are wrong. Not only is it critical to get the individual sub functions working correctly, even small errors in padding, endianness, or data layout will result in failure.
The following verification strings and hashes come from RFC 1321:
Name and briefly demonstrate any support your language has for metaprogramming. Your demonstration may take the form of cross-references to other tasks on Rosetta Code. When possible, provide links to relevant documentation.
For the purposes of this task, \"support for metaprogramming\" means any way the user can effectively modify the language's syntax that's built into the language (like Lisp macros) or that's conventionally used with the language (like the C preprocessor). Such facilities need not be very powerful: even user-defined infix operators count. On the other hand, in general, neither operator overloading nor eval count. The task author acknowledges that what qualifies as metaprogramming is largely a judgment call.
The goal of this task is to create a counting semaphore used to control the execution of a set of concurrent units. This task intends to demonstrate coordination of active concurrent units through the use of a passive concurrent unit. The operations for a counting semaphore are acquire, release, and count. Each active concurrent unit should attempt to acquire the counting semaphore before executing its assigned duties. In this case the active concurrent unit should report that it has acquired the semaphore. It should sleep for 2 seconds and then release the semaphore.
The metronome should be capable of producing high and low audio beats, accompanied by a visual beat indicator, and the beat pattern and tempo should be configurable.
For the purpose of this task, it is acceptable to play sound files for production of the beat notes, and an external player may be used.
However, the playing of the sounds should not interfere with the timing of the metronome.
The visual indicator can simply be a blinking red or green area of the screen (depending on whether a high or low beat is being produced), and the metronome can be implemented using a terminal display, or optionally, a graphical display, depending on the language capabilities.
If the language has no facility to output sound, then it is permissible for this to implemented using just the visual indicator.
Write a function/procedure/subroutine that is called with an integer value and returns the middle three digits of the integer if possible or a clear indication of an error if this is not possible.
Note: The order of the middle digits should be preserved.
Your function should be tested with the following values; the first line should return valid answers, those of the second line should return clear indications of an error:
The Miller–Rabin primality test or Rabin–Miller primality test is a primality test: an algorithm which determines whether a given number is prime or not.
",
- "",
- "===ES6===",
- "(() => {",
- " 'use strict';",
- "",
- " // monteCarloPi :: Int -> Float",
- " const monteCarloPi = n =>",
- " 4 * range(1, n)",
- " .reduce(a => {",
- " const [x, y] = [rnd(), rnd()];",
- " return x * x + y * y < 1 ? a + 1 : a;",
- " }, 0) / n;",
- "",
- "",
- " // GENERIC FUNCTIONS",
- "",
- " // range :: Int -> Int -> [Int]",
- " const range = (m, n) =>",
- " Array.from({",
- " length: Math.floor(n - m) + 1",
- " }, (_, i) => m + i);",
- "",
- " // rnd :: () -> Float",
- " const rnd = Math.random;",
- "",
- "",
- " // TEST with from 1000 samples to 10E8 samples",
- " return range(3, 8)",
- " .map(x => monteCarloPi(Math.pow(10, x)));",
- "",
- " // e.g. -> [3.14, 3.1404, 3.13304, 3.142408, 3.1420304, 3.14156788]",
- "})();",
- "",
- "",
- "{{Out}} (5 sample runs with increasing sample sizes)",
- "[3.14, 3.1404, 3.13304, 3.142408, 3.1420304, 3.14156788]",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7f21",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "function mcpi(n) {\n var x, y, m = 0;\n\n for (var i = 0; i < n; i += 1) {\n x = Math.random();\n y = Math.random();\n\n if (x * x + y * y < 1) {\n m += 1;\n }\n }\n\n return 4 * m / n;\n}\n\nconsole.log(mcpi(1000));\nconsole.log(mcpi(10000));\nconsole.log(mcpi(100000));\nconsole.log(mcpi(1000000));\nconsole.log(mcpi(10000000));\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Monty Hall problem",
- "type": "Waypoint",
- "description": [
- "
Run random simulations of the Monty Hall game. Show the effects of a strategy of the contestant always keeping his first guess so it can be contrasted with the strategy of the contestant always switching his guess.
Suppose you're on a game show and you're given the choice of three doors. Behind one door is a car; behind the others, goats. The car and the goats were placed randomly behind the doors before the show. The rules of the game show are as follows: After you have chosen a door, the door remains closed for the time being. The game show host, Monty Hall, who knows what is behind the doors, now has to open one of the two remaining doors, and the door he opens must have a goat behind it. If both remaining doors have goats behind them, he chooses one randomly. After Monty Hall opens a door with a goat, he will ask you to decide whether you want to stay with your first choice or to switch to the last remaining door. Imagine that you chose Door 1 and the host opens Door 3, which has a goat. He then asks you \"Do you want to switch to Door Number 2?\" Is it to your advantage to change your choice? (Krauss and Wang 2003:10)
Note that the player may initially choose any of the three doors (not just Door 1), that the host opens a different door revealing a goat (not necessarily Door 3), and that he gives the player a second choice between the two remaining unopened doors.
",
- "Task:",
- "
Simulate at least a thousand games using three doors for each strategy and show the results in such a way as to make it easy to compare the effects of each strategy.
",
- "Reference:",
- "Monty Hall Problem - Numberphile. (Video)."
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "",
- "===Extensive Solution===",
- "",
- "This solution can test with n doors, the difference in probability for switching is shown to diminish as the number of doors increases.",
- "",
- "",
- "function montyhall(tests, doors) {",
- "\t'use strict';",
- "\ttests = tests ? tests : 1000;",
- "\tdoors = doors ? doors : 3;",
- "\tvar prizeDoor, chosenDoor, shownDoor, switchDoor, chosenWins = 0, switchWins = 0;",
- "\t",
- "\t// randomly pick a door excluding input doors",
- "\tfunction pick(excludeA, excludeB) {",
- "\t\tvar door;",
- "\t\tdo {",
- "\t\t\tdoor = Math.floor(Math.random() * doors);",
- "\t\t} while (door === excludeA || door === excludeB);",
- "\t\treturn door;",
- "\t}",
- "\t",
- "\t// run tests",
- "\tfor (var i = 0; i < tests; i ++) {",
- "\t\t",
- "\t\t// pick set of doors",
- "\t\tprizeDoor = pick();",
- "\t\tchosenDoor = pick();",
- "\t\tshownDoor = pick(prizeDoor, chosenDoor);",
- "\t\tswitchDoor = pick(chosenDoor, shownDoor);",
- "",
- "\t\t// test set for both choices",
- "\t\tif (chosenDoor === prizeDoor) {",
- "\t\t\tchosenWins ++;",
- "\t\t} else if (switchDoor === prizeDoor) {",
- "\t\t\tswitchWins ++;",
- "\t\t}",
- "\t}",
- "\t",
- "\t// results",
- "\treturn {",
- "\t\tstayWins: chosenWins + ' ' + (100 * chosenWins / tests) + '%',",
- "\t\tswitchWins: switchWins + ' ' + (100 * switchWins / tests) + '%'",
- "\t};",
- "}",
- "",
- "",
- "{{out}}",
- "",
- "montyhall(1000, 3)",
- "Object {stayWins: \"349 34.9%\", switchWins: \"651 65.1%\"}",
- "montyhall(1000, 4)",
- "Object {stayWins: \"253 25.3%\", switchWins: \"384 38.4%\"}",
- "montyhall(1000, 5)",
- "Object {stayWins: \"202 20.2%\", switchWins: \"265 26.5%\"}",
- "",
- "",
- "===Basic Solution===",
- "",
- "",
- "",
- "var totalGames = 10000,",
- " selectDoor = function () {",
- "\treturn Math.floor(Math.random() * 3); // Choose a number from 0, 1 and 2.",
- " },",
- " games = (function () {",
- "\tvar i = 0, games = [];",
- "",
- "\tfor (; i < totalGames; ++i) {",
- "\t games.push(selectDoor()); // Pick a door which will hide the prize.",
- "\t}",
- "",
- "\treturn games;",
- " }()),",
- " play = function (switchDoor) {",
- "\tvar i = 0, j = games.length, winningDoor, randomGuess, totalTimesWon = 0;",
- "",
- "\tfor (; i < j; ++i) {",
- "\t winningDoor = games[i];",
- "\t randomGuess = selectDoor();",
- "\t if ((randomGuess === winningDoor && !switchDoor) || ",
- "\t\t(randomGuess !== winningDoor && switchDoor)) ",
- "\t {",
- "\t\t/*",
- "\t\t * If I initially guessed the winning door and didn't switch,",
- "\t\t * or if I initially guessed a losing door but then switched,",
- "\t\t * I've won.",
- "\t\t *",
- "\t\t * The only time I lose is when I initially guess the winning door ",
- "\t\t * and then switch.",
- "\t\t */",
- "",
- "\t\ttotalTimesWon++;",
- "\t }",
- "\t}",
- "\treturn totalTimesWon;",
- " };",
- "",
- "/*",
- " * Start the simulation",
- " */",
- "",
- "console.log(\"Playing \" + totalGames + \" games\");",
- "console.log(\"Wins when not switching door\", play(false));",
- "console.log(\"Wins when switching door\", play(true));",
- "",
- "",
- "{{out}}",
- "",
- "Playing 10000 games",
- "Wins when not switching door 3326",
- "Wins when switching door 6630",
- "",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7f22",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "\nfunction montyhall(tests, doors) {\n\t'use strict';\n\ttests = tests ? tests : 1000;\n\tdoors = doors ? doors : 3;\n\tvar prizeDoor, chosenDoor, shownDoor, switchDoor, chosenWins = 0, switchWins = 0;\n\t\n\t// randomly pick a door excluding input doors\n\tfunction pick(excludeA, excludeB) {\n\t\tvar door;\n\t\tdo {\n\t\t\tdoor = Math.floor(Math.random() * doors);\n\t\t} while (door === excludeA || door === excludeB);\n\t\treturn door;\n\t}\n\t\n\t// run tests\n\tfor (var i = 0; i < tests; i ++) {\n\t\t\n\t\t// pick set of doors\n\t\tprizeDoor = pick();\n\t\tchosenDoor = pick();\n\t\tshownDoor = pick(prizeDoor, chosenDoor);\n\t\tswitchDoor = pick(chosenDoor, shownDoor);\n\n\t\t// test set for both choices\n\t\tif (chosenDoor === prizeDoor) {\n\t\t\tchosenWins ++;\n\t\t} else if (switchDoor === prizeDoor) {\n\t\t\tswitchWins ++;\n\t\t}\n\t}\n\t\n\t// results\n\treturn {\n\t\tstayWins: chosenWins + ' ' + (100 * chosenWins / tests) + '%',\n\t\tswitchWins: switchWins + ' ' + (100 * switchWins / tests) + '%'\n\t};\n}\n\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Morse code",
- "type": "Waypoint",
- "description": [
- "
Morse code is one of the simplest and most versatile methods of telecommunication in existence.
",
- "
It has been in use for more than 160 years — longer than any other electronic encoding system.
",
- "Task:",
- "
Send a string as audible Morse code to an audio device (e.g., the PC speaker).
",
- "
As the standard Morse code does not contain all possible characters,
",
- "
you may either ignore unknown characters in the file,
",
- "
or indicate them somehow (e.g. with a different pitch).
"
- ],
- "challengeSeed": [
- "function replaceMe (foo) {",
- " // Good luck!",
- " return true;",
- "}"
- ],
- "rawSolutions": [
- "=={{header|JavaScript}}==",
- "",
- "This implementation utilises the fairly new Web Audio API in the browser for generating tones, as such it only uses one vendor implementation (WebKit). It is split into three modules; 1. translating the characters into morse code. 2. creating timings for the morse code. 3. creating tones with the timings.",
- "",
- "",
- "var globalAudioContext = new webkitAudioContext();",
- "",
- "function morsecode(text, unit, freq) {",
- "\t'use strict';",
- "",
- "\t// defaults",
- "\tunit = unit ? unit : 0.05;",
- "\tfreq = freq ? freq : 700;",
- "\tvar cont = globalAudioContext;",
- "\tvar time = cont.currentTime;",
- "",
- "\t// morsecode",
- "\tvar code = {",
- "\t\ta: '._', b: '_...', c: '_._.', d: '_..', e: '.', f: '.._.',",
- "\t\tg: '__.', h: '....', i: '..', j: '.___', k: '_._', l: '._..',",
- "\t\tm: '__', n: '_.', o: '___', p: '.__.', q: '__._', r: '._.',",
- "\t\ts: '...', t: '_', u: '.._', v: '..._', w: '.__', x: '_.._',",
- "\t\ty: '_.__', z: '__..', 0: '_____', 1: '.____', 2: '..___', 3: '...__',",
- "\t\t4: '...._', 5: '.....', 6: '_....', 7: '__...', 8: '___..', 9: '____.'",
- "\t};",
- "",
- "\t// generate code for text",
- "\tfunction makecode(data) {",
- "\t\tfor (var i = 0; i <= data.length; i ++) {",
- "\t\t\tvar codedata = data.substr(i, 1).toLowerCase();",
- "\t\t\tcodedata = code[codedata];",
- "\t\t\t// recognised character",
- "\t\t\tif (codedata !== undefined) {",
- "\t\t\t\tmaketime(codedata);",
- "\t\t\t}",
- "\t\t\t// unrecognised character",
- "\t\t\telse {",
- "\t\t\t\ttime += unit * 7;",
- "\t\t\t}",
- "\t\t}",
- "\t}",
- "",
- "\t// generate time for code",
- "\tfunction maketime(data) {",
- "\t\tfor (var i = 0; i <= data.length; i ++) {",
- "\t\t\tvar timedata = data.substr(i, 1);",
- "\t\t\ttimedata = (timedata === '.') ? 1 : (timedata === '_') ? 3 : 0;",
- "\t\t\ttimedata *= unit;",
- "\t\t\tif (timedata > 0) {",
- "\t\t\t\tmaketone(timedata);",
- "\t\t\t\ttime += timedata;",
- "\t\t\t\t// tone gap",
- "\t\t\t\ttime += unit * 1;",
- "\t\t\t}",
- "\t\t}",
- "\t\t// char gap",
- "\t\ttime += unit * 2;",
- "\t}",
- "",
- "\t// generate tone for time",
- "\tfunction maketone(data) {",
- "\t\tvar start = time;",
- "\t\tvar stop = time + data;",
- "\t\t// filter: envelope the tone slightly",
- "\t\tgain.gain.linearRampToValueAtTime(0, start);",
- "\t\tgain.gain.linearRampToValueAtTime(1, start + (unit / 8));",
- "\t\tgain.gain.linearRampToValueAtTime(1, stop - (unit / 16));",
- "\t\tgain.gain.linearRampToValueAtTime(0, stop);",
- "\t}",
- "",
- "\t// create: oscillator, gain, destination",
- "\tvar osci = cont.createOscillator();",
- "\tosci.frequency.value = freq;",
- "\tvar gain = cont.createGainNode();",
- "\tgain.gain.value = 0;",
- "\tvar dest = cont.destination;",
- "\t// connect: oscillator -> gain -> destination",
- "\tosci.connect(gain);",
- "\tgain.connect(dest);",
- "\t// start oscillator",
- "\tosci.start(time);",
- "",
- "\t// begin encoding: text -> code -> time -> tone",
- "\tmakecode(text);",
- "",
- "\t// return web audio context for reuse / control",
- "\treturn cont;",
- "}",
- "",
- "",
- "Usage:",
- "",
- "",
- "morsecode('Hello World');",
- "",
- "",
- "{{out}}",
- "",
- "[http://jsbin.com/orubaq/1/edit Live Version]",
- "",
- ""
- ],
- "tail": [
- "const replaceThis = 3;"
- ],
- "id": "5a23c84252665b21eecc7f23",
- "challengeType": 5,
- "releasedOn": "December 27, 2017",
- "isBeta": "true",
- "betaSolutions": [
- "\nvar globalAudioContext = new webkitAudioContext();\n\nfunction morsecode(text, unit, freq) {\n\t'use strict';\n\n\t// defaults\n\tunit = unit ? unit : 0.05;\n\tfreq = freq ? freq : 700;\n\tvar cont = globalAudioContext;\n\tvar time = cont.currentTime;\n\n\t// morsecode\n\tvar code = {\n\t\ta: '._', b: '_...', c: '_._.', d: '_..', e: '.', f: '.._.',\n\t\tg: '__.', h: '....', i: '..', j: '.___', k: '_._', l: '._..',\n\t\tm: '__', n: '_.', o: '___', p: '.__.', q: '__._', r: '._.',\n\t\ts: '...', t: '_', u: '.._', v: '..._', w: '.__', x: '_.._',\n\t\ty: '_.__', z: '__..', 0: '_____', 1: '.____', 2: '..___', 3: '...__',\n\t\t4: '...._', 5: '.....', 6: '_....', 7: '__...', 8: '___..', 9: '____.'\n\t};\n\n\t// generate code for text\n\tfunction makecode(data) {\n\t\tfor (var i = 0; i <= data.length; i ++) {\n\t\t\tvar codedata = data.substr(i, 1).toLowerCase();\n\t\t\tcodedata = code[codedata];\n\t\t\t// recognised character\n\t\t\tif (codedata !== undefined) {\n\t\t\t\tmaketime(codedata);\n\t\t\t}\n\t\t\t// unrecognised character\n\t\t\telse {\n\t\t\t\ttime += unit * 7;\n\t\t\t}\n\t\t}\n\t}\n\n\t// generate time for code\n\tfunction maketime(data) {\n\t\tfor (var i = 0; i <= data.length; i ++) {\n\t\t\tvar timedata = data.substr(i, 1);\n\t\t\ttimedata = (timedata === '.') ? 1 : (timedata === '_') ? 3 : 0;\n\t\t\ttimedata *= unit;\n\t\t\tif (timedata > 0) {\n\t\t\t\tmaketone(timedata);\n\t\t\t\ttime += timedata;\n\t\t\t\t// tone gap\n\t\t\t\ttime += unit * 1;\n\t\t\t}\n\t\t}\n\t\t// char gap\n\t\ttime += unit * 2;\n\t}\n\n\t// generate tone for time\n\tfunction maketone(data) {\n\t\tvar start = time;\n\t\tvar stop = time + data;\n\t\t// filter: envelope the tone slightly\n\t\tgain.gain.linearRampToValueAtTime(0, start);\n\t\tgain.gain.linearRampToValueAtTime(1, start + (unit / 8));\n\t\tgain.gain.linearRampToValueAtTime(1, stop - (unit / 16));\n\t\tgain.gain.linearRampToValueAtTime(0, stop);\n\t}\n\n\t// create: oscillator, gain, destination\n\tvar osci = cont.createOscillator();\n\tosci.frequency.value = freq;\n\tvar gain = cont.createGainNode();\n\tgain.gain.value = 0;\n\tvar dest = cont.destination;\n\t// connect: oscillator -> gain -> destination\n\tosci.connect(gain);\n\tgain.connect(dest);\n\t// start oscillator\n\tosci.start(time);\n\n\t// begin encoding: text -> code -> time -> tone\n\tmakecode(text);\n\n\t// return web audio context for reuse / control\n\treturn cont;\n}\n\n"
- ],
- "betaTests": [
- "assert(typeof replaceMe === 'function', 'message: replaceMe is a function.');"
- ],
- "tests": []
- },
- {
- "title": "Move-to-front algorithm",
- "type": "Waypoint",
- "description": [
- "
Given a symbol table of a zero-indexed array of all possible input symbols
",
- " for each symbol of the input sequence:",
- " output the index of the symbol in the symbol table",
- " move that symbol to the front of the symbol table",
- "
Decoding algorithm:",
- "
",
- " # Using the same starting symbol table",
- " for each index of the input sequence:",
- " output the symbol at that index of the symbol table",
- " move that symbol to the front of the symbol table",
- "
Example:",
- "
Encoding the string of character symbols 'broood' using a symbol table of
",
- "
the characters 'a'-to-'z'
{| border=\"1\"
",
- "
|-
",
- "
! Input
",
- "
! Output
",
- "
! SymbolTable
",
- "
|-
",
- "
| broood
",
- "
| 1
",
- "
| 'abcdefghijklmnopqrstuvwxyz'
",
- "
|-
",
- "
| broood
",
- "
| 1 17
",
- "
| 'bacdefghijklmnopqrstuvwxyz'
",
- "
|-
",
- "
| broood
",
- "
| 1 17 15
",
- "
| 'rbacdefghijklmnopqstuvwxyz'
",
- "
|-
",
- "
| broood
",
- "
| 1 17 15 0
",
- "
| 'orbacdefghijklmnpqstuvwxyz'
",
- "
|-
",
- "
| broood
",
- "
| 1 17 15 0 0
",
- "
| 'orbacdefghijklmnpqstuvwxyz'
",
- "
|-
",
- "
| broood
",
- "
| 1 17 15 0 0 5
",
- "
| 'orbacdefghijklmnpqstuvwxyz'
",
- "
|}
Decoding the indices back to the original symbol order:
",
- "
{| border=\"1\"
",
- "
|-
",
- "
! Input
",
- "
! Output
",
- "
! SymbolTable
",
- "
|-
",
- "
| 1 17 15 0 0 5
",
- "
| b
",
- "
| 'abcdefghijklmnopqrstuvwxyz'
",
- "
|-
",
- "
| 1 17 15 0 0 5
",
- "
| br
",
- "
| 'bacdefghijklmnopqrstuvwxyz'
",
- "
|-
",
- "
| 1 17 15 0 0 5
",
- "
| bro
",
- "
| 'rbacdefghijklmnopqstuvwxyz'
",
- "
|-
",
- "
| 1 17 15 0 0 5
",
- "
| broo
",
- "
| 'orbacdefghijklmnpqstuvwxyz'
",
- "
|-
",
- "
| 1 17 15 0 0 5
",
- "
| brooo
",
- "
| 'orbacdefghijklmnpqstuvwxyz'
",
- "
|-
",
- "
| 1 17 15 0 0 5
",
- "
| broood
",
- "
| 'orbacdefghijklmnpqstuvwxyz'
",
- "
|}
Task:",
- "Encode and decode the following three strings of characters using the symbol table of the characters 'a'-to-'z' as above. ",
- "Show the strings and their encoding here.",
- "Add a check to ensure that the decoded string is the same as the original.",
- "
In all cases, the terms in the products are positive integers.
If we define the degree of the multifactorial as the difference in successive terms that are multiplied together for a multifactorial (the number of exclamation marks), then the task is twofold:
",
- "Write a function that given n and the degree, calculates the multifactorial.",
- "Use the function to generate and display here a table of the first ten members (1 to 10) of the first five degrees of multifactorial.
Create a sequence (array, list, whatever) consisting of n distinct, initialized items of the same type. n should be determined at runtime.
By distinct we mean that if they are mutable, changes to one do not affect all others; if there is an appropriate equality operator they are considered unequal; etc. The code need not specify a particular kind of distinction, but do not use e.g. a numeric-range generator which does not generalize.
By initialized we mean that each item must be in a well-defined state appropriate for its type, rather than e.g. arbitrary previous memory contents in an array allocation. Do not show only an initialization technique which initializes only to \"zero\" values (e.g. calloc() or int a[n] = {}; in C), unless user-defined types can provide definitions of \"zero\" for that type.
This task was inspired by the common error of intending to do this, but instead creating a sequence of n references to the same mutable object; it might be informative to show the way to do that as well, both as a negative example and as how to do it when that's all that's actually necessary.
This task is most relevant to languages operating in the pass-references-by-value style (most object-oriented, garbage-collected, and/or 'dynamic' languages).