Mercurial > repos > other > SevenLanguagesInSevenWeeks
view 2-Io/day2-reflection.io @ 101:1fae0cca1ef8
Reduce large maze to single width corridors
This reduces the permutations for
a x
x x
b x
To one (two steps north) from four (two steps north; one east, two north, one west; one east, one north, one west, one north; and one north, one east, one north, one west). Longer corridors were worse!
We would filter this in the "been here before via another path" but that's still a lot of lookups in lists, which is inefficient.
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 14 Jul 2019 13:42:24 +0100 |
parents | e8407d4e72dd |
children |
line wrap: on
line source
# Reflection in Io is about working out what goes on in slots # We're now going to create an "ancestors" method that we needed # on day 1 to find all slots! Object ancestors := method( # Store our prototype prototype := self proto # If we're not at the top if (prototype != Object, # Then print the type name as a header writeln("Slots of ", prototype type,"\n--------------------") # And iterate the slots with foreach() before printing with writeln() # TODO: Find the difference between println and writeln, other than "message vs function" prototype slotNames foreach(slotName, writeln(slotName)) # Blank line writeln # Recurse! prototype ancestors ) ) Animal := Object clone Animal speak := method("*ambiguous animal noise" println) Duck := Animal clone Duck speak := method("Quack-quack!" println) Duck walk := method("waddle" println) donald := Duck clone donald ancestors