var pos var array[100] func main(value) { initialize() find(value) } // Fills the array with initial values in a pseudo-random way // Works by incrementing array elements until one of the elements func initialize() { var i = 0, j = 0 var index println("Filling up array with \"random\" values") while (1) { i = i * 21 + i / 31 + 7 j = j * 16 + j / 13 + 18 index = i + j index = index < 0 ? 1 - index : index // Turn the numbers into an index in the range [0,99] index = index - index / 100 * 100 // Increment the array at the given index, stop once a 10 is written array[index] = array[index] + 1 if (array[index] >= 10) break } } // Starts looking for an array element with the given value, starting at "pos" // If a match is found, 1 is returned, and pos is the index of the match func nextPos(value) { while (pos < 100) { if (array[pos] == value) return 1 pos = pos + 1 } return 0 } func find(value) { println("Looking for all occurances of ", value) pos = 0 print("Found at:") while (nextPos(value)) { print(" ", pos) pos = pos + 1 } println("") println("Done!") } //TESTCASE: 3 //Filling up array with "random" values //Looking for all occurances of 3 //Found at: 0 2 9 23 26 36 42 50 64 71 72 78 80 87 95 //Done!