1#from http://www.bagley.org/~doug/shootout/bench/lists/lists.ruby
2
3NUM = 300
4SIZE = 10000
5
6def test_lists()
7  # create a list of integers (Li1) from 1 to SIZE
8  li1 = (1..SIZE).to_a
9  # copy the list to li2 (not by individual items)
10  li2 = li1.dup
11  # remove each individual item from left side of li2 and
12  # append to right side of li3 (preserving order)
13  li3 = Array.new
14  while (not li2.empty?)
15    li3.push(li2.shift)
16  end
17  # li2 must now be empty
18  # remove each individual item from right side of li3 and
19  # append to right side of li2 (reversing list)
20  while (not li3.empty?)
21    li2.push(li3.pop)
22  end
23  # li3 must now be empty
24  # reverse li1 in place
25  li1.reverse!
26  # check that first item is now SIZE
27  if li1[0] != SIZE then
28    p "not SIZE"
29    0
30  else
31    # compare li1 and li2 for equality
32    if li1 != li2 then
33      return(0)
34    else
35      # return the length of the list
36      li1.length
37    end
38  end
39end
40
41i = 0
42while i<NUM
43  i += 1
44  result = test_lists()
45end
46
47result
48