1. array(0, {800,600}) is easier.
- Posted by "Lucius L. Hilley III" <lhilley at CDC.NET> May 10, 2000
- 567 views
Assume that you want a sequence of 8x10. Maybe it is a sprite or FONT. :) IE: sequence s s = { {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0} } --or currently we may use: s = repeat(repeat(0,10), 8) Notice that the dimension definitions are reversed to get the desired arrangement. This can easily lead to programming confusion. function array(object obj, sequence dimensions) object x x = obj for A = length(dimensions) to 1 by -1 do x = repeat(x, dimensions[A]) end for return x end function now you can use: s = array(0, {8,10}) OR what the subject states. I know this is simple just a simple little thing that any of you can do at will when needed. I think it would make a nice addition to misc.e A sort of tool to make some types of programming easier. In the mean time I will build and use it when needed. OH, I also think that array(0, {8, 10}) is more readable because of the declaration isn't reversed. Lucius L. Hilley III lhilley at cdc.net +----------+--------------+--------------+ | Hollow | ICQ: 9638898 | AIM: LLHIII | | Horse +--------------+--------------+ | Software | http://www.cdc.net/~lhilley | +----------+-----------------------------+
2. Re: array(0, {800,600}) is easier.
- Posted by Dan B Moyer <DANMOYER at PRODIGY.NET> May 11, 2000
- 534 views
Lucius, I wouldn't be surprised if I am woefully misunderstanding something really basic, but it seems to me that neither your "repeat" example nor your array function yield the 8x10 array you want. Doesn't "repeat(repeat(0,10), 8)" give a sequence of TEN zeroes, repeated 8 times, instead of the 8 zeroes repeated 10 times you show in your example? Ditto for your array function when I run it & display it with smart_print. Looks to me like "for A = length(dimensions) to 1 by -1 do" should be "for A = 1 to length(dimensions) do" ? Dan Moyer -----Original Message----- From: Lucius L. Hilley III >Assume that you want a sequence of 8x10. Maybe it is a sprite or FONT. :) >IE: >sequence s >s = { > {0,0,0,0,0,0,0,0}, > {0,0,0,0,0,0,0,0}, > {0,0,0,0,0,0,0,0}, > {0,0,0,0,0,0,0,0}, > {0,0,0,0,0,0,0,0}, > {0,0,0,0,0,0,0,0}, > {0,0,0,0,0,0,0,0}, > {0,0,0,0,0,0,0,0}, > {0,0,0,0,0,0,0,0}, > {0,0,0,0,0,0,0,0} > } > >--or currently we may use: >s = repeat(repeat(0,10), 8) > >Notice that the dimension definitions are reversed to get the desired >arrangement. >This can easily lead to programming confusion. > >function array(object obj, sequence dimensions) > object x > > x = obj > for A = length(dimensions) to 1 by -1 do > x = repeat(x, dimensions[A]) > end for > return x >end function > >now you can use: >s = array(0, {8,10}) > >OR what the subject states. I know this is simple just a simple little >thing that any of you can do at will when needed. I think it would make a >nice addition to misc.e A sort of tool to make some types of programming >easier. In the mean time I will build and use it when needed. > >OH, I also think that array(0, {8, 10}) is more readable because of the >declaration isn't reversed. > > Lucius L. Hilley III > lhilley at cdc.net >+----------+--------------+--------------+ >| Hollow | ICQ: 9638898 | AIM: LLHIII | >| Horse +--------------+--------------+ >| Software | http://www.cdc.net/~lhilley | >+----------+-----------------------------+
3. Re: array(0, {800,600}) is easier.
- Posted by "Lucius L. Hilley III" <lhilley at CDC.NET> May 13, 2000
- 560 views
In the words of the great Homer Simpson. "DOH!" It should have been repeat(repeat(0,8),10)--No reversal Similarly it should be. function array(integer filler, sequence dimensions) object x x = filler for A = 1 to length(dimensions) do x = repeat(x, dimensions[A])--corrected before sent to listserv end for return x end function The mixed up version of the routine, that I cooked up the first time, properly served my purposes. I guess that is why I didn't notice I had done it all wrong. Bells should have gone off when I tried to reverse it because I knew I was handling the data backwards and then it would not work. :) ------Thanks again Dan. Lucius L. Hilley III lhilley at cdc.net +--------------+--------------+ | ICQ: 9638898 | AIM: LLHIII | +--------------+--------------+ | http://www.cdc.net/~lhilley | +-----------------------------+ ----- Original Message ----- From: "Dan B Moyer" <DANMOYER at prodigy.net> To: "Euphoria Programming for MS-DOS" <EUPHORIA at LISTSERV.MUOHIO.EDU> Sent: Thursday, May 11, 2000 7:27 AM Subject: Re: array(0, {800,600}) is easier. > Lucius, > > It seems to me that neither your "repeat" example nor your array > function yield the 8x10 array you want. <SNIP> > Dan Moyer >