Last active
December 4, 2017 20:20
-
-
Save nickhallph/037e6e06dec9e85350241fb4211737e3 to your computer and use it in GitHub Desktop.
Codewars exercise "Find the word 'needle' in the string" that was implemented so horribly, it quickly became the best code I've ever laid my eyes upon. (Disclaimer: I am not the genius who architected this precious artifact)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var a = "a"; | |
var b = "b"; | |
var c = "c"; | |
var d = "d"; | |
var e = "e"; | |
var f = "f"; | |
var g = "g"; | |
var h = "h"; | |
var i = "i"; | |
var j = "j"; | |
var k = "k"; | |
var l = "l"; | |
var m = "m"; | |
var n = "n"; | |
var o = "o"; | |
var p = "p"; | |
var q = "q"; | |
var r = "r"; | |
var s = "s"; | |
var t = "t"; | |
var u = "u"; | |
var v = "v"; | |
var w = "w"; | |
var x = "x"; | |
var y = "y"; | |
var z = "z"; | |
var space = " "; | |
var theWordNeedleWhichWillNeedToBeFoundWithinTheHaystackContainingTheNeedle = [].concat(n).concat(e).concat(e).concat(d).concat(l).concat(e).join(''); | |
var returnStringPrefix = [].concat(f).concat(o).concat(u).concat(n).concat(d).concat(space).concat(t).concat(h).concat(e).concat(space).concat(n).concat(e).concat(e).concat(d).concat(l).concat(e).concat(space).concat(a).concat(t).concat(space).concat(p).concat(o).concat(s).concat(i).concat(t).concat(i).concat(o).concat(n).concat(space).join(''); | |
function findNeedle ( theHaystackContainingTheNeedle ) | |
{ | |
var indexOfNeedleWithinTheHaystackContainingTheNeedle = -1; | |
var numberOfStrawsPlusTheNeedleThatAreContainedWithinTheGiantHaystackContainingTheNeedleWhichIsProbablyLocatedInAFieldSomewhereNearABarnOnAFarmPotentiallyWithinTheVicinityOfRuralTexas = getLengthOfArrayContainingElements( theHaystackContainingTheNeedle ); | |
for( | |
var currentIndexOfTheCurrentlyExecutingForLoop = 0; | |
currentIndexOfTheCurrentlyExecutingForLoop <= numberOfStrawsPlusTheNeedleThatAreContainedWithinTheGiantHaystackContainingTheNeedleWhichIsProbablyLocatedInAFieldSomewhereNearABarnOnAFarmPotentiallyWithinTheVicinityOfRuralTexas; | |
currentIndexOfTheCurrentlyExecutingForLoop = currentIndexOfTheCurrentlyExecutingForLoop + 1 | |
) | |
{ | |
if(currentIndexOfTheCurrentlyExecutingForLoop < 0) | |
{ | |
throw new Error("This shouldn\"t happen".replace("\u0022","\u2019")); | |
} | |
if(currentIndexOfTheCurrentlyExecutingForLoop > numberOfStrawsPlusTheNeedleThatAreContainedWithinTheGiantHaystackContainingTheNeedleWhichIsProbablyLocatedInAFieldSomewhereNearABarnOnAFarmPotentiallyWithinTheVicinityOfRuralTexas) | |
{ | |
throw new Error("This shouldn\"t happen".replace("\u0022","\u2019")); | |
} | |
var theValueOfTheCurrentStrawOrNeedleThatResidesWithinTheLargeHaystack = getElementFromArrayGivenIndex( theHaystackContainingTheNeedle, currentIndexOfTheCurrentlyExecutingForLoop ); | |
if( theValueOfTheCurrentStrawOrNeedleThatResidesWithinTheLargeHaystack === theWordNeedleWhichWillNeedToBeFoundWithinTheHaystackContainingTheNeedle) { | |
indexOfNeedleWithinTheHaystackContainingTheNeedle = currentIndexOfTheCurrentlyExecutingForLoop; | |
} | |
} | |
var theCompleteReturnValueContainingTheReturnPrefixAndTheIndexOfTheNeedleWithinTheHaystackContainingTheNeedle = returnStringPrefix.split('').concat(indexOfNeedleWithinTheHaystackContainingTheNeedle).join(''); | |
return theCompleteReturnValueContainingTheReturnPrefixAndTheIndexOfTheNeedleWithinTheHaystackContainingTheNeedle; | |
} | |
function getElementFromArrayGivenIndex( arrayContainingElements, indexToRetrieveFromArrayContainingElements ) | |
{ | |
var valueFromArrayWhereIndexWasBeingSearchedFor = -1; | |
var numberOfElementsInArrayContainingElements = getLengthOfArrayContainingElements(arrayContainingElements); | |
for( | |
var currentIndexOfTheCurrentlyExecutingForLoop = 0; | |
currentIndexOfTheCurrentlyExecutingForLoop <= numberOfElementsInArrayContainingElements; | |
currentIndexOfTheCurrentlyExecutingForLoop = currentIndexOfTheCurrentlyExecutingForLoop + 1 | |
) | |
{ | |
if(currentIndexOfTheCurrentlyExecutingForLoop < 0) | |
{ | |
throw new Error("This shouldn\"t happen".replace("\u0022","\u2019")); | |
} | |
if(currentIndexOfTheCurrentlyExecutingForLoop > numberOfElementsInArrayContainingElements) | |
{ | |
throw new Error("This shouldn\"t happen".replace("\u0022","\u2019")); | |
} | |
var valueBasedOnCurrentIndexOfTheArrayThatIsCurrentlyBeingReferencedWithinTheExecutingForLoop = arrayContainingElements[ currentIndexOfTheCurrentlyExecutingForLoop ]; | |
if(currentIndexOfTheCurrentlyExecutingForLoop === indexToRetrieveFromArrayContainingElements) | |
{ | |
valueFromArrayWhereIndexWasBeingSearchedFor = valueBasedOnCurrentIndexOfTheArrayThatIsCurrentlyBeingReferencedWithinTheExecutingForLoop; | |
} | |
} | |
return valueFromArrayWhereIndexWasBeingSearchedFor; | |
} | |
function getIndexFromArrayGivenValue( arrayContainingElements, valueForWhichToUseToFindTheIndexAndRetrieveItFromArrayContainingElements ) | |
{ | |
var indexFromArrayWhereValueWasFound = -1; | |
var numberOfElementsInArrayContainingElements = getLengthOfArrayContainingElements(arrayContainingElements); | |
for( | |
var currentIndexOfTheCurrentlyExecutingForLoop = 0; | |
currentIndexOfTheCurrentlyExecutingForLoop <= numberOfElementsInArrayContainingElements; | |
currentIndexOfTheCurrentlyExecutingForLoop = currentIndexOfTheCurrentlyExecutingForLoop + 1 | |
) | |
{ | |
if(indexFromArrayWhereValueWasFound > -1) | |
{ | |
continue; | |
} | |
var valueBasedOnCurrentIndexOfTheArrayThatIsCurrentlyBeingReferencedWithinTheExecutingForLoop = getElementFromArrayGivenIndex( arrayContainingElements, currentIndexOfTheCurrentlyExecutingForLoop ); | |
if( valueBasedOnCurrentIndexOfTheArrayThatIsCurrentlyBeingReferencedWithinTheExecutingForLoop === valueForWhichToUseToFindTheIndexAndRetrieveItFromArrayContainingElements ) | |
{ | |
indexFromArrayWhereValueWasFound = currentIndexOfTheCurrentlyExecutingForLoop; | |
} | |
} | |
return indexFromArrayWhereValueWasFound; | |
} | |
function getLengthOfArrayContainingElements( arrayContainingElementsForWhichToRetreiveTheLengthFrom ) | |
{ | |
var theLengthOfTheArrayContainingElementsForWhichToRetreiveTheLengthFrom = arrayContainingElementsForWhichToRetreiveTheLengthFrom.length; | |
if(theLengthOfTheArrayContainingElementsForWhichToRetreiveTheLengthFrom < 0) | |
{ | |
theLengthOfTheArrayContainingElementsForWhichToRetreiveTheLengthFrom = 0; | |
} | |
return theLengthOfTheArrayContainingElementsForWhichToRetreiveTheLengthFrom; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment