Gere o contorno de uma ilha a partir de uma semente [fechada]

8

O desafio é desenhar o contorno de uma 'ilha', gerada usando uma semente como insumo.

  • Entrada (semente): sequência de 6 caracteres (exatamente), permitindo apenas letras minúsculas (ou seja, abcdefghijklmnopqrstuvwxyz) - exemplos: 'ilha', 'aaaaaa', 'jhgcfj'
  • Cada semente deve dar uma ilha única (ou seja, não há duas sementes que dêem a mesma produção)
  • Nenhuma saída deve ser uma transformação da saída de outra semente. Isso é translação, reflexão, rotação, redimensionamento ou qualquer combinação dos mesmos.
  • Usar a mesma semente sempre deve dar a mesma saída
  • Saída: 600px por imagem de 600px

Uma ilha válida é desenhada usando uma única linha, que:

  • forma um loop fechado
  • tem 1px de espessura sem suavização, desfoque, etc.
  • é contínuo (ou seja, depois de desenhar um pixel, o próximo pixel estará em um dos 8 espaços adjacentes que não estão ocupados)
  • não se cruza a qualquer momento
  • não sai dos limites da imagem
  • é preto (# 000), sobre um fundo branco (#FFF)
  • não tem linhas de simetria reflexiva
  • deve incluir espaço em branco

O código-fonte tem um limite de 500 bytes.

Além disso, a popularidade decide; a maioria dos votos vence.

jsh
fonte
6
Eu acho que, neste caso, o concurso de popularidade está sendo usado como uma capa para uma especificação incompleta. Acho que você está interessado em algo aqui - não vi muitos desafios que exijam uma semente como entrada e algo interessante como saída. A parte que realmente precisa de trabalho é "não há critérios específicos". Se você quiser a ajuda da comunidade para estabelecer critérios sólidos, envie sua pergunta para a Sandbox .
Rainbolt 5/09/14
2
Isso parece muito amplo e também é mais um concurso de arte do que um concurso de programação. Tal como está, quase todo código que produz alguma mancha de cor pode ser vendido como uma "ilha".
Martin Ender
1
Você pode se inspirar em Geração de mapa poligonal para jogos . Todo o processo pode ser um pouco amplo demais, mas você pode reduzi-lo.
Rainbolt
3
Eu gosto dessa pergunta! Votei em fechar para que não tenhamos pessoas respondendo, pois parece que ainda estamos discutindo as especificações. Essa pergunta poderia ter se beneficiado do sandbox, mas acho que ainda podemos melhorá-lo e reabri-lo.
precisa saber é
2
@chilemagic não importa o que os outros pensam, o que você acha? Eu acho que a própria natureza da pergunta "desenhar uma ilha" é subjetiva. É provável que as pessoas votem no código curto que desenha uma ilha realista (se for um codegolf, alguém desenhará uma estrela e as pessoas reclamarão que não se parece com uma ilha.) Eu sempre defendi a mudança do concurso de popularidade para o codegolf, mas para certas perguntas gráficas acho que uma exceção deve ser feita.
Level River St

Respostas:

3

BBC basic

Aqui está um algoritmo muito simples, que pode ser refinado para mais realismo. Se houver mais alterações nas regras, estou disposto a alterar / excluir.

pegue a sequência de 6 caracteres e adicione }@para garantir assimetria (essa escolha específica de caracteres fornece ilhas que se parecem vagamente com a Antártica)

desenhe uma linha que conecte 8 pontos em intervalos de 45 graus, com a distância do centro determinada pelo código ASCII.

  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

insira a descrição da imagem aqui

Level River St
fonte
2
@BetaDecay Preto e branco é exigido pelas especificações.
Undergroundmonorail
Ainda existem resultados que são variações um do outro - @} zzaa e @} aazz são reflexos um do outro
proud haskeller
1
@proudhaskeller @ e} não são permitidos na entrada. É por isso que eles foram escolhidos para serem adicionados à entrada antes da plotagem.
Level River St
0

Algoid

Algoid é uma linguagem semelhante ao LOGO ou Turtle e é quase inteiramente baseada em gráficos.

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)

Semente: supercalifragilisticexpialiadocious even though the sound of it is rather quite atrocious

Semente: islands in the stream

Beta Decay
fonte