Skip to content

Instantly share code, notes, and snippets.

@shanestillwell
Last active December 27, 2015 15:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shanestillwell/7347114 to your computer and use it in GitHub Desktop.
Save shanestillwell/7347114 to your computer and use it in GitHub Desktop.
Code Challenges
var input = "BMC_TEST_INPUT_MAGIC"
input = input.split(',');
var evenRow = "";
var oddRow = "";
var board = "";
// gen columns
for(i = 0; input[0] > i; i++){
if(i % 2 == 1){
evenRow += 1;
oddRow += 0;
}else{
evenRow += 0;
oddRow += 1;
}
}
// gen rows
for(i = 0; input[1] > i; i++){
if(i % 2 != 1){
board += evenRow + "\n";
}else{
board += oddRow + "\n";
}
}
process.stdout.write(board);
var isPrime = function(num) {
for(var i = 2; i*i <= num; i++) {
if(num % i == 0) { return false; }
}
return true;
}
var rotationsArePrime = function(num) {
var arr = num.toString().split("");
var rotations = [];
// Pop off last element and stick it on front.
arr.unshift(arr.pop());
var currNum = arr.join("");
while(currNum != num) {
if(!isPrime(currNum)) { return false; }
arr = currNum.split("");
arr.unshift(arr.pop());
currNum = arr.join("");
}
return true;
}
var input = "BMC_TEST_INPUT_MAGIC";
var primes = 0;
for(var i = 2; i <= input; i++) {
if(isPrime(i)) {
if(rotationsArePrime(i)) {
//console.log(i);
primes++;
}
}
}
console.log(primes);
function getCardIndex(card){
var card = card.split("");
switch(card[0]){
case "T":
card[0] = 10;
break;
case "J":
card[0] = 11;
break;
case "Q":
card[0] = 12;
break;
case "K":
card[0] = 13;
break;
case "A":
card[0] = 14;
break;
default:
card[0] = parseInt(card[0]);
break;
}
switch(card[1]){
case "S":
card[1] = 0;
break;
case "C":
card[1] = 1;
break;
case "H":
card[1] = 2;
break;
case "D":
card[1] = 3;
break;
}
return (card[0]-2)+13*card[1];
}
var input = "BMC_TEST_INPUT_MAGIC";
var cards = input.split(",");
//console.log(cards);
//console.log(getCardIndex(cards[0]));
var hashtable = Array(52);
for(var i = 0; i < 52; i++)
hashtable[i] = 0;
//console.log(hashtable);
for(var i = 0; i < cards.length; i++){
hashtable[getCardIndex(cards[i])]+=1;
}
//console.log(hashtable);
var min = Number.MAX_VALUE;
for(var i = 0; i < 52; i++){
if(hashtable[i] < min)
min = hashtable[i];
}
console.log(min);
var str = "BMC_TEST_INPUT_MAGIC";
var pieces = str.split(':');
var numbers = pieces[1].split(',');
for(i = 1; i <= pieces[0]; i++) {
if(numbers.indexOf(i.toString()).toString() == -1) {
process.stdout.write(i.toString());
}
}
function digitSum(n)
{
var sumUpTo = [0, 0, 1, 3, 6, 10, 15, 21, 28, 36, 45];
var ZeroToTenSum = 45;
var total = 0;
var leftSide = n;
var rightSide = 0;
var placeVal = 1;
while(leftSide > 0)
{
total += Math.floor(leftSide/10) * ZeroToTenSum * placeVal ;
total += sumUpTo[leftSide%10]*placeVal + (leftSide%10)*(rightSide+1);
rightSide += (leftSide%10)*placeVal;
leftSide = Math.floor(leftSide / 10);
placeVal *= 10;
}
return total;
}
var testnum = parseInt("BMC_TEST_INPUT_MAGIC");
var outputVal = digitSum(testnum);
console.log(outputVal);
var input = "BMC_TEST_INPUT_MAGIC";
var number = parseInt(input);
var squares = Math.pow((number << 1) + 1, 2);
if (number === 1) {
console.log(--squares);
return;
}
console.log(squares);
//sampleInput = "X X X O\nX O X O\nX X X O";
sampleInput = "BMC_TEST_INPUT_MAGIC";
arrayBoard = [];
width = 0;
height = 0;
readInput = function(input) {
var rows = input.split("\n");
height = rows.length;
width = rows[0].split(" ").length;
for(var i = 0; i < height; i++) {
var thisRow = rows[i].split(" ");
for(var j = 0; j < width; j++) {
arrayBoard.push(thisRow[j]);
}
}
}
getMineCount = function(cell) {
var functions = [getNorth, getNE, getEast, getSE, getSouth, getSW, getWest, getNW];
var mineCount = 0;
for(var i = 0; i < functions.length; i++) {
var curFunc = functions[i];
mineCount += curFunc(cell);
}
return mineCount;
}
UP = 0;
LEFT = 1;
DOWN = 2;
RIGHT = 3;
isWall = function(cell, direction) {
var numCells = width*height;
switch(direction) {
case UP:
if(cell < width) { return true; } // top cells
return false;
case LEFT:
if(cell % width == 0) { return true; } // left cells
return false;
case DOWN:
if(cell >= width * (height - 1)) { return true; } // bottom row
return false;
case RIGHT:
if(cell % width == (width - 1) ) { return true; } // right cells
return false;
}
}
getNorth = function(cell) {
if(isWall(cell, UP)) { return 0; }
if(arrayBoard[cell-width] == 'X') { return 1; }
return 0;
}
getNE = function(cell) {
if(isWall(cell, UP)) { return 0; }
if(isWall(cell, RIGHT)) { return 0;}
if(arrayBoard[cell-width+1] == 'X') { return 1; }
return 0;
}
getEast = function(cell) {
if(isWall(cell, RIGHT)) { return 0;}
if(arrayBoard[cell+1] == 'X') { return 1; }
return 0;
}
getSE = function(cell) {
if(isWall(cell, DOWN)) { return 0; }
if(isWall(cell, RIGHT)) { return 0;}
if(arrayBoard[cell+width+1] == 'X') { return 1; }
return 0;
}
getSouth = function(cell) {
if(isWall(cell, DOWN)) { return 0; }
if(arrayBoard[cell+width] == 'X') { return 1; }
return 0;
}
getSW = function(cell) {
if(isWall(cell, DOWN)) { return 0; }
if(isWall(cell, LEFT)) { return 0;}
if(arrayBoard[cell+width-1] == 'X') { return 1; }
return 0;
}
getWest = function(cell) {
if(isWall(cell, LEFT)) { return 0; }
if(arrayBoard[cell-1] == 'X') { return 1; }
return 0;
}
getNW = function(cell) {
if(isWall(cell, UP)) { return 0; }
if(isWall(cell, LEFT)) { return 0;}
if(arrayBoard[cell-width-1] == 'X') { return 1; }
return 0;
}
printOutput = function() {
var output = "";
for(var i = 0; i < height; i++) {
var toPrint = "";
var thisLine = [];
for(var j = 0; j < width; j++) {
var cellNum = (i*width)+j;
if(arrayBoard[cellNum] == 'X') {
thisLine.push("X");
//toPrint = toPrint+"X ";
} else {
thisLine.push(getMineCount(cellNum));
//toPrint = toPrint+getMineCount(cellNum)+" ";
}
}
output = output + thisLine.join(" ")+"\n";
}
console.log(output);
}
readInput(sampleInput);
printOutput();
var inputData = "BMC_TEST_INPUT_MAGIC";
if (inputData == "") {
console.log(0);
return;
}
var sortedLetters = inputData.split("").sort().join("").replace(/(.)(?=\1)/g, "").split("");
var feed = [];
for (var i = 0; i < inputData.length; i++) {
var currentLetter = inputData[i];
for (var j = 0; j < sortedLetters.length; j++) {
if(currentLetter == sortedLetters[j]) {
feed.push(j + 1);
}
}
}
var factorials = [0];
var factorial = 1;
for (var i = 0; i < inputData.length - 1; i++) {
factorial *= i + 1;
factorials.push(factorial);
}
var returnValue = 0;
while(feed.length) {
var current = feed.shift();
var currentPos = 0;
for (i = 0; i < feed.length; i++) {
currentPos += feed[i] < current ? 1 : 0;
}
returnValue += factorials[feed.length] * currentPos;
//returnValue += factorials
}
console.log(returnValue + 1);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment