[Date Prev][Date Next][Thread Prev][Thread Next][Author Index][Date Index][Thread Index]
Re: [zzdev] Proper abstractions
- To: Tuomas Lukka <lukka@xxxxxxxxxx>
- Subject: Re: [zzdev] Proper abstractions
- From: Benjamin Fallenstein <b.fallenstein@xxxxxx>
- Date: Sun, 22 Oct 2000 21:23:43 +0200
- Cc: zzdev@xxxxxxxxxx
- References: <Pine.HPP.3.96.1001022020852.11505D-100000@xxxxxxxxxxxxxx>
Hi Tuomas--
I agree about abstractions, but the particular way you coded this one
seems to be really clumsy to me -- a nameless inner class for each
iteration. Why not use something like an enumeration, i.e.:
ZZAlternator i = new ZZAlternator(...)
for(i.start(accursed); i.more(); i.next()) {
if(done.get(i.cell) != null) { i.stoppart(); continue; }
if(i.distance() > rows) { i.stoppart(); continue; }
col[i.steps() + cmain] = i.cell;
}
for(<every cell in col>) {
for(i.start(<current col cell>); i.more(); i.next()) {
// plac the cell
}
}
Possibly we could even abstract out the recursion:
ZZAlternator alter = new ZZAlternator(...);
ZZDimRecursor rec = new ZZDimRecursor(dims, alter, ...);
for(rec.start(accursed); rec.more(); rec.next()) {
if(done.get(rec.cell) != null) { rec.stoppart(); continue; }
if(rec.distance() > maxdepth) { rec.stoppart(); continue; }
// (place cell)
}
- Benja
Tuomas Lukka wrote:
>
> Whew, finding the proper abstraction can make things a LOT easier.
>
> One I just discovered is that going along a rank in two directions at
> once (alternating), starting from a given cell is what made the vanishing
> and row-column views so complicated. Abstracting this out to ZZIter made
> such a difference (also of course separating rowcol from vanishing).
>
> Now, we can start thinking about bootstrapping in an easier way since we
> have that abstraction... I'm thinking of starting to code views first in
> terms of cells to gain some experience.