pragma on/off improvements; endb rewritten
This commit is contained in:
parent
e92693ec8d
commit
8d19a93f1a
23 changed files with 517 additions and 202 deletions
|
|
@ -25,40 +25,55 @@ proc bubbleSort[T](a: var openArray[T],
|
|||
when isMainModule:
|
||||
proc main() =
|
||||
const order = Ascending
|
||||
var data: seq[string]
|
||||
|
||||
for i in 0..10_000:
|
||||
var L = random(59)
|
||||
newSeq(data, L)
|
||||
var data: seq[string] = @[]
|
||||
|
||||
var L = random(59)
|
||||
for i in 0..1:
|
||||
echo "loop: ", i
|
||||
#newSeq(data, L)
|
||||
setLen(data, L)
|
||||
for j in 0 .. L-1:
|
||||
data[j] = $(math.random(90) - 10)
|
||||
assert getRefcount(data[j]) == 1
|
||||
{.watchpoint: data.}
|
||||
var copy = data
|
||||
for j in 0 .. L-1:
|
||||
assert getRefcount(copy[j]) == 1
|
||||
assert(cast[pointer](copy[j]) != cast[pointer](data[i]))
|
||||
|
||||
bubblesort(data, system.cmp, order)
|
||||
if not sorted(data, order):
|
||||
quit "bubblesort failed"
|
||||
sort(copy, cmp, order)
|
||||
if copy.len != data.len:
|
||||
quit "lengths differ!"
|
||||
for i in 0 .. copy.high:
|
||||
if copy[i] != data[i]:
|
||||
quit "algorithms differ!"
|
||||
|
||||
for i in 0..10_000:
|
||||
var data: seq[int]
|
||||
var L = random(59)
|
||||
newSeq(data, L)
|
||||
for j in 0 .. L-1:
|
||||
data[j] = (math.random(90) - 10)
|
||||
var copy = data
|
||||
sort(data, cmp[int], order)
|
||||
if not sorted(data, order):
|
||||
quit "sort for seq[int] failed"
|
||||
bubblesort(copy, system.cmp[int], order)
|
||||
sort(copy, cmp, order)
|
||||
for j in 0 .. L-1:
|
||||
let rc = getRefcount(data[j])
|
||||
if rc != 1:
|
||||
echo "RC IST ", rc, " j: ", j
|
||||
assert getRefcount(data[j]) == 1
|
||||
when false:
|
||||
if copy.len != data.len:
|
||||
quit "lengths differ!"
|
||||
for i in 0 .. copy.high:
|
||||
if copy[i] != data[i]:
|
||||
quit "algorithms differ!"
|
||||
when false:
|
||||
for i in 0..10_000:
|
||||
var data: seq[int]
|
||||
var L = random(59)
|
||||
newSeq(data, L)
|
||||
for j in 0 .. L-1:
|
||||
data[j] = (math.random(90) - 10)
|
||||
var copy = data
|
||||
sort(data, cmp[int], order)
|
||||
if not sorted(data, order):
|
||||
quit "sort for seq[int] failed"
|
||||
bubblesort(copy, system.cmp[int], order)
|
||||
if copy.len != data.len:
|
||||
quit "lengths differ!"
|
||||
for i in 0 .. copy.high:
|
||||
if copy[i] != data[i]:
|
||||
quit "algorithms differ!"
|
||||
|
||||
main()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue