Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

added initial puzzles

  • Loading branch information...
commit bfd81e178859fad13c60b8ce1ceebf2ea80812fc 1 parent 5ddcf2a
Rob Righter authored

Showing 3 changed files with 93 additions and 0 deletions. Show diff stats Hide diff stats

  1. +49 0 puzzles/array_sort.js
  2. +17 0 puzzles/index.js
  3. +27 0 puzzles/pi.js
49 puzzles/array_sort.js
... ... @@ -0,0 +1,49 @@
  1 +function makeArray(){
  2 + var length = 5000;
  3 + var toreturn = [];
  4 + for(var i=0; i<length; i++){
  5 + toreturn[i] = Math.floor(Math.random()*(length*2));
  6 + }
  7 + return toreturn;
  8 +}
  9 +
  10 +function sortArray(tosort){
  11 + var copy = [];
  12 + for(var i=0; i<tosort.length; i++){
  13 + copy[i] = parseInt(tosort[i]);
  14 + }
  15 + return copy.sort(function(a,b){
  16 + return parseInt(a) > parseInt(b);
  17 + });
  18 +}
  19 +
  20 +module.exports={
  21 + name:'Array Sort',
  22 +
  23 + createQuestion:function(){
  24 + return {
  25 + array_to_sort: makeArray(),
  26 + solution_template: [0,1,2,3,4,5,6,7,8,9,10]
  27 + }
  28 + },
  29 +
  30 + validateAnswer:function(question,answer){
  31 + if(question.hasOwnProperty('array_to_sort')){
  32 + try{
  33 + assert.deepEqual(question.array_to_sort, sortArray(answer));
  34 + return true;
  35 + }
  36 + catch(e){ return false }
  37 + }else{ return false }
  38 + }
  39 +}
  40 +
  41 +//test
  42 + var question = module.exports.createQuestion();
  43 + console.log('Question is: ');
  44 + console.log(question);
  45 +
  46 + var answer = sortArray(question.array_to_sort);
  47 + console.log(answer);
  48 + console.log(module.exports.validateAnswer(question, answer));
  49 +
17 puzzles/index.js
... ... @@ -0,0 +1,17 @@
  1 +var fs = require('fs');
  2 +
  3 +var puzzles = fs.readdirSync('./').filter(function(i){ return i !== 'index.js' });
  4 +
  5 +
  6 +module.exports = puzzles.reduce(function(acc, i){
  7 + var puzzle = require('./' + i);
  8 + if(puzzle.hasOwnProperty('name')){
  9 + acc[puzzle.name] = puzzle;
  10 + }
  11 + return acc
  12 +},{})
  13 +
  14 +console.log('-----------------------------------------');
  15 +console.log('Found the following Puzzles:')
  16 +console.log(module.exports);
  17 +console.log('-----------------------------------------');
27 puzzles/pi.js
... ... @@ -0,0 +1,27 @@
  1 +var pi='3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303598253490428755468731159562863882353787593751957781857780532171226806613001927876611195909216420198938095257201065485863278865936153381827968230301952035301852968995773622599413891249721775283479131515574857242454150695950829533116861727855889075098381754637464939319255060400927701671139009848824012858361603563707660104710181942955596198946767837449448255379774726847104047534646208046684259069491293313677028989152104752162056966024058038150193511253382430035587640247496473263914199272604269922796782354781636009341721641219924586315030286182974555706749838505494588586926995690927210797509302955321165344987202755960236480665499119881834797753566369807426542527862551818417574672890977772793800081647060016145249192173217214772350141441973568548161361157352552133475741849468438523323907394143334547762416862518983569485562099219222184272550254256887671790494601653466804988627232791786085784383827967976681454100953883786360950680064225125205117392984896084128488626945604241965285022210661186306744278622039194945047123713786960956364371917287467764657573962413890865832645995813390478027590099465764078951269468398352595709825822620522489407726719478268482601476990902640136394437455305068203496252451749399651431429809190659250937221696461515709858387410597885959772975498930161753928468138268683868942774155991855925245953959431049972524680845987273644695848653836736222626099124608051243884390451244136549762780797715691435997700129616089441694868555848406353422072225828488648158456028506016842739452267467678895252138522549954666727823986456596116354886230577456498035593634568174324112515076069479451096596094025228879710893145669136867228748940560101503308617928680920874760917824938589009714909675985261365549781893129784821682998948722658804857564014270477555132379641451523746234364542858444795265867821051141354735739523113427166102135969536231442952484937187110145765403590279934403742007310578539062198387447808478489683321445713868751943506430218453191048481005370614680674919278191197939952061419663428754440643745123718192179998391015919561814675142691239748940907186494231961567945208095146550225231603881930142093762137855956638937787083039069792077346722182562599661501421503068038447734549202605414665925201497442850732518666002132434088190710486331734649651453905796268561005508106658796998163574736384052571459102897064140110971206280439039759515677157700420337869936007230558763176359421873125147120532928191826186125867321579198414848829164470609575270695722091756711672291098169091528017350671274858322287183520935396572512108357915136988209144421006751033467110314126711136990865851639831501970165151168517143765761835155650884909989859982387345528331635507647918535893226185489632132933089857064204675259070915481416549859461637180270981994309924488957571282890592323326097299712084433573265489382391193259746366730583604142813883032038249037589852437441702913276561809377344403070746921120191302033038019762110110044929321516084244485963766983895228684783123552658213144957685726243344189303968642624341077322697802807318915441101044682325271620105265227211166039666557309254711055785376346682065310989652691862056476931257058635662018558100729360659876486117910453348850346113657686753249441668039626579787718556084552965412665408530614344431858676975145661406800700237877659134401712749470420562230538994561314071127000407854733269939081454664645880797270826683063432858785698305235808933065757406795457163775254202114955761581400250126228594130216471550979259230990796547376125517656751357517829666454779174501129961489030463994713296210734043751895735961458901938971311179042978285647503203'
  2 +
  3 +module.exports={
  4 + name:'Pi',
  5 +
  6 + createQuestion:function(){
  7 + return {
  8 + digits_after_decimal: pi.length - Math.floor(Math.random()*1000),
  9 + solution_template: '3.1415926535897932'
  10 + }
  11 + },
  12 +
  13 + validateAnswer:function(question,answer){
  14 + if(question.hasOwnProperty('digits_after_decimal')){
  15 + var digits = parseInt(question.digits_after_decimal) + 2; //plus 2 for the '3.'
  16 + return pi.slice(0,digits) === answer;
  17 + }else{ return false; }
  18 + }
  19 +}
  20 +
  21 +//test
  22 +// console.log(module.exports.createQuestion());
  23 +// var question = {
  24 +// digits_after_decimal: 10
  25 +// }
  26 +// var answer = '3.1415926535';
  27 +// console.log(module.exports.validateAnswer(question, answer));

0 comments on commit bfd81e1

Please sign in to comment.
Something went wrong with that request. Please try again.