Speed trial [mini-contest] ;-)

new topic     » topic index » view thread      » older message » newer message

{{{ Just a bit of fun (or maybe a bit dull, this isn't AI):

I was a bit undecided on the very fastest way this could be done, so I scribbled down four ways to do it and was a little surprised that case 4 was the fastest (only a little, not a lot, surprised that is).

I just wondered if anyone could think of a 5th or 6th way to do it, though I doubt there will be much faster.

Code follows: Speed trial:

increment or decrement bracelevel but keep result within 1..8: ?=find(c,"([{)]}")

integer bracelevel atom a

1:

constant bway={{2,3,4,5,6,7,8,1},{8,1,2,3,4,5,6,7} constant bn={1,1,1,2,2,2

verify: for i1 to 6 do for j1 to 8 do bracelevelj bracelevel=bway[bn[i]][bracelevel] printf(1,"%d ",bracelevel) end for end for puts(1,"\n")

time: a=time() for i1 to 6 do for j1 to 1000000 do bracelevelbway[bn[i]][bracelevel] end for end for a=time()-a ?a

2:

verify: for i1 to 6 do for j1 to 8 do bracelevelj if i <3 then bracelevel=remainder(bracelevel,8)+1 else bracelevel=8-remainder(9-bracelevel,8) end if printf(1,"%d ",bracelevel) end for end for puts(1,"\n")

time: a=time() for i1 to 6 do for j1 to 1000000 do if i <=3 then bracelevelremainder(bracelevel,8)+1 else bracelevel=8-remainder(9-bracelevel,8) end if end for end for a=time()-a ?a

3:

verify: for i1 to 6 do for j1 to 8 do bracelevelj if i<=3 then bracelevel+=1 if bracelevel9 then bracelevel=1 end if else bracelevel-1 if bracelevel=0 then bracelevel=8 end if end if printf(1,"%d ",bracelevel) end for end for puts(1,"\n")

time: atime() for i=1 to 6 do for j=1 to 1000000 do if i<3 then bracelevel+=1 if bracelevel=9 then bracelevel1 end if else bracelevel-=1 if bracelevel0 then bracelevel=8 end if end if end for end for a=time()-a ?a

4:

constant bplus={2,3,4,5,6,7,8,1} constant bminus={8,1,2,3,4,5,6,7

verify: for i1 to 6 do for j1 to 8 do bracelevelj if i<=3 then bracelevelbplus[bracelevel] else bracelevel=bminus[bracelevel] end if printf(1,"%d ",bracelevel) end for end for puts(1,"\n")

time: a=time() for i1 to 6 do for j1 to 1000000 do if i<=3 then bracelevel=bplus[bracelevel] else bracelevel=bminus[bracelevel] end if end for end for a=time()-a ?a

if getc(0) then end if

new topic     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu