Re: Mathematica loop question
- To: mathgroup at smc.vnet.net
- Subject: [mg118392] Re: Mathematica loop question
- From: Stefan <wutchamacallit27 at gmail.com>
- Date: Tue, 26 Apr 2011 06:50:37 -0400 (EDT)
- References: <ip60j0$aan$1@smc.vnet.net>
On Apr 26, 4:43 am, Sol Lederman <sol.leder... at gmail.com> wrote:
> Hi,
>
> I'm teaching myself Mathematica.
>
> I've plotted this:
>
> Graphics[{
> Blue,
> Disk[{5, 10}, .25],
> Disk[{4, 9}, .25],
> Disk[{6, 9}, .25],
> Disk[{3, 8}, .25],
> Disk[{5, 8}, .25],
> Disk[{7, 8}, .25],
> Disk[{2, 7}, .25],
> Disk[{4, 7}, .25],
> Disk[{6, 7}, .25],
> Disk[{8, 7}, .25],
> Disk[{1, 6}, .25],
> Disk[{3, 6}, .25],
> Disk[{5, 6}, .25],
> Disk[{7, 6}, .25],
> Disk[{9, 6}, .25]
> }]
>
> Is there an elegant way to write this without a bunch of Disk statements?
> I'm imagining that this would be a double nested loop.
>
> Thanks.
>
> Sol
Sol,
First of all, cheers to teaching yourself Mathematica, I'm also self
taught (and still learning). I'd recommend attending some of the
online seminars (free!) if you havent already.
Second, below is what I would do, though I have shifted your points
down by 5 (the top point is not at {5,10}, but {5,5} instead) because
this simplified things. A quick fix would just be to add this term
back in, but it makes no visual difference. The code is for a general
n, where n is the number of points in the bottom row, and consequently
the number of rows.
In[1]:= n = 5;
In[2]:= Graphics[Table[ Table[Disk[{x, y}, 0.25], {x, y, 2 n + 1 - y,
2}], {y, 1, n}]]
or just for fun (takes a few seconds)
In[6]:= n = 100;
In[7]:= Graphics[Table[Table[{Hue[(-2Mod[x,y])/n],Disk[{x,y},x*y/n^2]},
{x,y,2 n+1-y,2}],{y,1,n}],
ImageSize->{621,325},Background->Black]
I did indeed use nested Table statements. Hope this helps!
-Stefan S