# Generate the outline of an island from a seed [closed]

The challenge is to draw the outline of an 'island', generated using a seed as input.

• Input (seed): string of 6 characters (exactly) allowing only lowercase letters (i.e. abcdefghijklmnopqrstuvwxyz) - examples: 'island', 'aaaaaa', 'jhgcfj'
• Each seed is to give a unique island (i.e. no two seeds will give the same output)
• No output is to be a transformation of another seed's output. That's translation, reflection, rotation, scaling or any combination thereof.
• Using the same seed should always give the same output
• Output: 600px by 600px image

A valid island is drawn using a single line, which:

• forms a closed loop
• is 1px thick with no smoothing, blurring etc.
• is continuous (i.e. after drawing a pixel the next pixel will be in one of the 8 adjoining spaces that isn't occupied)
• does not cross itself at any point
• does not leave the boundaries of the image
• is black (#000), on a background of white (#FFF)
• has no lines of reflective symmetry
• must enclose white space

Source code has a limit of 500 bytes.

Aside from that, popularity decides; most votes wins.

• I think that, in this case, popularity-contest is being used as a cover for an incomplete spec. I do think you're on to something here - I haven't seen many challenges that require a seed as input and something cool as output. The part that really needs work is "there are no specific criteria". If you want community's help settling on some solid criteria, you could post your question to the Sandbox. – Rainbolt Sep 5 '14 at 13:14
• This seems way too broad and is also more of an art contest than a programming contest. As it stands, almost any code which produces some blob of colour could be sold as an "island". – Martin Ender Sep 5 '14 at 13:14
• You might draw some inspiration from Polygonal Map Generation for Games. The entire process may be a little too broad, but you could narrow it down. – Rainbolt Sep 5 '14 at 13:24
• I like this question! I voted to close so we don't have people answering it since it seems like we are still discussing the spec. This question could have benefited from the sandbox, but I think we can still improve it and reopen it. – hmatt1 Sep 5 '14 at 14:47
• @chilemagic never mind what others think, what do you think? I think the very nature of the question "draw an island" is subjective. People are likely to vote for short code that draws a realistic island (if it's a codegolf, someone will draw a star and people will complain it doesn't look like an island.) I have frequently advocated changing popularity contest to codegolf, but for certain graphical questions I think an exception should be made. – Level River St Sep 5 '14 at 19:52

# BBC basic

Here's a very simple algorithm, which could be refined for more realism. If there are further changes in the rules I'm willing to change / delete.

take the 6 character string and add }@ to ensure asymmetry (this particular choice of characters gives islands that vaguely resemble Antarctica)

draw a line that connects 8 points at 45 degree intervals, with distance from the centre determined by the ASCII code.

  INPUT a$a$=a$+"}@" MOVE 364,300 FOR i=1 TO 8 r=4*ASC(MID$(a\$,i))-192
DRAW 300+r*COS(i*PI/4),300+r*SIN(i*PI/4)
NEXT


• @BetaDecay Black-on-white is required by the spec. – undergroundmonorail Sep 5 '14 at 22:15
• There are still outputs who are variations of each other - @}zzaa and @}aazz are reflections of each other – proud haskeller Sep 5 '14 at 23:02
• @proudhaskeller @ and } are not allowed in the input. That is why they were chosen to be added to the input before plotting. – Level River St Sep 5 '14 at 23:14

# Algoid

Algoid is a language similar to LOGO or Turtle and is almost entirely graphics based.

algo.hide()
algo.setBgColor(15)
algo.setStroke(1)
algo.setColor(0)
algo.goTo(-400,100)
set seed="put seed here".lower()
set letters = "abcdefghijklmnopqrstuvwxyz"
set sides=seed.length()
for (set i=0;i<sides-(sides/6);i++) {
set letter = seed.getChar(i%seed.length())
set value = letters.indexOf(letter)*5
set turn = 360/seed.length()
algo.go(math.sin(value)*(1500/seed.length()))
algo.turnRight(turn)
}
algo.lineTo(-400,100)