Re: Problem using a loop to generate data for Point function
- To: mathgroup at smc.vnet.net
- Subject: [mg35635] Re: Problem using a loop to generate data for Point function
- From: Oliver Ruebenkoenig <ruebenko at donne.imtek.uni-freiburg.de>
- Date: Wed, 24 Jul 2002 02:05:51 -0400 (EDT)
- Organization: Rechenzentrum der Universitaet Freiburg, Germany
- References: <ahg821$92v$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On Mon, 22 Jul 2002, Michael Carnright wrote:
> For[i = 1, i < 10, i++, Show[Graphics[Point[{i, i}]]]]
>
> This genereates nine graphics with one point each. I was trying to
> generate one graphic with nine points. I see my problem as calling
> the Point function nine times instead of only once. I wish to use the
> data generated by the loop on a single graphic.
It looks as if you are coming from an imperative programming background.
Is the "for loop" a must?
Here is a suggestion on a functional solution:
Show[Graphics[Point[{#1, #1}] & /@ Range[1, 9]]]
i assume you are not familiar with some of the expressions above.
evaluate:
Range[1, 9]
this returns a list with numbers 1 to 9.
now Point[{#1, #1}] & is a pure function. this means a function without a
name. usually you would write something like
a = 1 + i
with a pure function you write (1 + #1)& here #1 takes the job of i and
the & is to denote that we are dealing with a pure function.
to put some values into #1 you could map them. this is what the /@ does.
so we map the result from Range[1,9] onto the pure function
Point[{#1,#1}]. to see that evaluate:
Point[{#1, #1}] & /@ Range[1, 9]
does this help ?
Oliver Ruebenkoenig, <ruebenko at imtek.de>
Phone: ++49 +761 203 7293