Skip to content

Instantly share code, notes, and snippets.

@KarlHerler
Last active December 14, 2015 08:09
Show Gist options
  • Save KarlHerler/5056076 to your computer and use it in GitHub Desktop.
Save KarlHerler/5056076 to your computer and use it in GitHub Desktop.
N-back test in javascript with some beautiful swedish comments.
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