Last active
December 14, 2015 08:09
-
-
Save KarlHerler/5056076 to your computer and use it in GitHub Desktop.
N-back test in javascript with some beautiful swedish comments.
This file contains 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
n = 2 // hur långt det är mellan repetitionerna, n värdet | |
nbackArr = []; // slutlliga arrayn som vi vill ha | |
sampleArr = []; // Arrayn som vi "väljer från" | |
noElements = 24; // Denna borde sättas som längden på sampleArray men efter som vi inte har den | |
// så lägger vi den som 24, cause...24 e fint. | |
// Generera sample array, om du har den innan, t.ex. bilderna, så behöver du inte göra den | |
for (i=0;i<noElements;i++) { | |
sampleArr[i] = i+1; // Vår hög me siffor att välja från, nu just är den siffrorna 1-25 | |
} | |
// Välj från arrayn, dehe e lite javascript magic och förstör | |
// arrayn så se till att du använder en kopia av arrayn eller | |
// nått om du ska köra dehe många gånger på samma array | |
function getRandomFromArray() { | |
var randomIndex = Math.floor(Math.random()*sampleArr.length); // Tar ut ett element ur vår sample array (så den e "borta" från arrayn) | |
return sampleArr.splice(randomIndex, 1)[0]; // Returnerar elementet. | |
} | |
for (i=0;i<noElements;i++) { | |
nbackArr[i] = getRandomFromArray(); // tar en slumpmessig "permutation" av arrayn me ti plock ut olika element. | |
} | |
// nbackArray innehåller nu en permutation av alla element. | |
// Om du vill ha en permutation av en del av elmenten så minska på längden på loopen. | |
// Denna permuation är garanterat unik om sampleArray är unik. | |
// vi måste garantera att det finns minst 4 rätta svar, d.v.s | |
// det finns minst 4 ställen där samma element visas med n stegs mellanrum | |
// välj 4 random ställen som minst är n+1 långt ifrån varan | |
done = false; // while seeden | |
placesToCorrect = [] // en array där vi kommer att ha platserna som vi kan lägga värden i | |
while(!done) { | |
candPlace = Math.round(Math.random()*(noElements - n)); // vi vill int overflow så 23, deklarera längden som en variabel sen | |
// kontrollerar att platsen är ok | |
okPlace = true; | |
for (i=0;i<placesToCorrect.length;i++) { | |
// Platsen är ok omm den inte är samma som en tidigare eller samma som någon tidigare + n | |
if (placesToCorrect[i]==candPlace && placesToCorrect[i]==candPlace+n) { | |
okPlace = false; | |
} | |
} | |
if (okPlace) { placesToCorrect.push(candPlace) } // om det är ok så lägger vi till det i kandidaterna | |
if (placesToCorrect.length>3) { done = true; } // då vi har 4 kandidater är allt ok | |
} | |
// Vi tar platserna som vi som vi ska lägga in lika på | |
for (i=0;i<placesToCorrect.length;i++) { | |
p = placesToCorrect[i] | |
nbackArr[p+n] = nbackArr[p]; | |
} | |
// nu är nbackArray klar | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment