Generar el contorno de una isla a partir de una semilla [cerrado]


8

El desafío es dibujar el contorno de una 'isla', generada usando una semilla como entrada.

  • Entrada (semilla): cadena de 6 caracteres (exactamente) que solo permite letras minúsculas (es decir, abcdefghijklmnopqrstuvwxyz) - ejemplos: 'island', 'aaaaaa', 'jhgcfj'
  • Cada semilla debe dar una isla única (es decir, no habrá dos semillas que den el mismo resultado)
  • Ningún resultado debe ser una transformación del resultado de otra semilla. Eso es traslación, reflexión, rotación, escala o cualquier combinación de los mismos.
  • Usar la misma semilla siempre debe dar el mismo resultado
  • Salida: imagen de 600 px por 600 px

Se dibuja una isla válida usando una sola línea, que:

  • forma un circuito cerrado
  • tiene 1 px de grosor sin suavizado, desenfoque, etc.
  • es continuo (es decir, después de dibujar un píxel, el siguiente píxel estará en uno de los 8 espacios adyacentes que no está ocupado)
  • no se cruza en ningún punto
  • no abandona los límites de la imagen
  • es negro (# 000), sobre un fondo blanco (#FFF)
  • no tiene líneas de simetría reflexiva
  • debe encerrar espacios en blanco

El código fuente tiene un límite de 500 bytes.

Aparte de eso, la popularidad decide; La mayoría de los votos gana.


66
Creo que, en este caso, el concurso de popularidad se está utilizando como una tapa para una especificación incompleta. Creo que estás haciendo algo aquí: no he visto muchos desafíos que requieran una semilla como entrada y algo genial como salida. La parte que realmente necesita trabajo es "no hay criterios específicos". Si desea que la ayuda de la comunidad se establezca en unos criterios sólidos, puede publicar su pregunta en el Sandbox .
Rainbolt

2
Esto parece demasiado amplio y también es más un concurso de arte que un concurso de programación. Tal como está, casi cualquier código que produzca una gota de color podría venderse como una "isla".
Martin Ender

1
Puede inspirarse en Polygonal Map Generation para juegos . Todo el proceso puede ser un poco demasiado amplio, pero podría reducirlo.
Rainbolt

3
Me gusta esta pregunta! He votado a favor de cerrar para que no haya personas que respondan, ya que parece que todavía estamos discutiendo las especificaciones. Esta pregunta podría haberse beneficiado del sandbox, pero creo que aún podemos mejorarla y volver a abrirla.
hmatt1

2
@chilemagic no importa lo que piensen los demás, ¿qué te parece? Creo que la naturaleza misma de la pregunta "dibujar una isla" es subjetiva. Es probable que las personas voten por un código corto que dibuje una isla realista (si es un codegolf, alguien dibujará una estrella y la gente se quejará de que no parece una isla). Con frecuencia he abogado por cambiar el concurso de popularidad a codegolf, pero por Ciertas preguntas gráficas creo que se debe hacer una excepción.
Level River St

Respuestas:


3

BBC basic

Aquí hay un algoritmo muy simple, que podría refinarse para obtener más realismo. Si hay más cambios en las reglas, estoy dispuesto a cambiar / eliminar.

tome la cadena de 6 caracteres y agregue }@para garantizar la asimetría (esta elección particular de caracteres da islas que se parecen vagamente a la Antártida)

dibuje una línea que conecte 8 puntos a intervalos de 45 grados, con la distancia desde el centro determinada por el 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

ingrese la descripción de la imagen aquí


2
@BetaDecay Black-on-white es requerido por la especificación.
undergroundmonorail

Todavía hay salidas que son variaciones entre sí: @} zzaa y @} aazz son reflejos el uno del otro
orgulloso Haskeller el

1
@proudhaskeller @ y} no están permitidos en la entrada. Es por eso que fueron elegidos para ser agregados a la entrada antes de trazar.
Level River St

0

Algoid

Algoid es un lenguaje similar a LOGO o Turtle y está basado casi en su totalidad en 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)

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

Semilla: islands in the stream

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.