Hasilkan garis besar pulau dari benih [ditutup]

8

Tantangannya adalah menggambar garis besar 'pulau', yang dihasilkan menggunakan seed sebagai input.

  • Input (seed): string 6 karakter (persis) yang hanya memungkinkan huruf kecil (yaitu abcdefghijklmnopqrstuvwxyz) - contoh: 'island', 'aaaaaa', 'jhgcfj'
  • Setiap benih memberikan pulau yang unik (yaitu tidak ada dua benih yang akan memberikan hasil yang sama)
  • Tidak ada output yang menjadi transformasi dari output benih lain. Itu terjemahan, refleksi, rotasi, penskalaan atau kombinasi apa pun darinya.
  • Menggunakan benih yang sama harus selalu memberikan hasil yang sama
  • Output: 600px oleh 600px gambar

Pulau yang valid digambar menggunakan satu garis, yang:

  • membentuk loop tertutup
  • tebal 1px tanpa perataan, kabur, dll.
  • kontinu (yaitu setelah menggambar piksel, piksel berikutnya akan berada di salah satu dari 8 ruang yang berdampingan yang tidak ditempati)
  • tidak menyeberangi dirinya sendiri pada titik mana pun
  • tidak meninggalkan batas gambar
  • berwarna hitam (# 000), dengan latar belakang putih (#FFF)
  • tidak memiliki garis simetri reflektif
  • harus menyertakan ruang putih

Kode sumber memiliki batas 500 byte.

Selain itu, popularitas juga menentukan; suara terbanyak menang.

jsh
sumber
6
Saya pikir, dalam hal ini, kontes popularitas sedang digunakan sebagai penutup untuk spek yang tidak lengkap. Saya pikir Anda sedang mengerjakan sesuatu di sini - saya belum melihat banyak tantangan yang memerlukan seed sebagai input dan sesuatu yang keren sebagai output. Bagian yang benar-benar membutuhkan pekerjaan adalah "tidak ada kriteria khusus". Jika Anda ingin bantuan komunitas menentukan beberapa kriteria yang solid, Anda dapat memposting pertanyaan Anda ke Sandbox .
Rainbolt
2
Tampaknya ini terlalu luas dan juga lebih merupakan kontes seni daripada kontes pemrograman. Seperti berdiri, hampir semua kode yang menghasilkan gumpalan warna bisa dijual sebagai "pulau".
Martin Ender
1
Anda dapat menggambar beberapa inspirasi dari Polygonal Map Generation for Games . Seluruh proses mungkin sedikit terlalu luas, tetapi Anda bisa mempersempitnya.
Rainbolt
3
Saya suka pertanyaan ini! Saya memilih untuk menutup sehingga kami tidak memiliki orang yang menjawabnya karena sepertinya kami masih membahas spesifikasi. Pertanyaan ini bisa mendapat manfaat dari kotak pasir, tapi saya pikir kita masih bisa memperbaikinya dan membukanya kembali.
hmatt1
2
@chememagic tidak peduli apa yang dipikirkan orang lain, bagaimana menurutmu? Saya pikir sifat pertanyaan "menggambar sebuah pulau" adalah subyektif. Orang-orang cenderung memilih kode pendek yang menggambarkan pulau yang realistis (jika itu adalah codegolf, seseorang akan menggambar bintang dan orang-orang akan mengeluh itu tidak terlihat seperti sebuah pulau.) pertanyaan grafis tertentu saya pikir pengecualian harus dibuat.
Level River St

Jawaban:

3

Dasar BBC

Berikut adalah algoritma yang sangat sederhana, yang dapat disempurnakan untuk lebih banyak realisme. Jika ada perubahan lebih lanjut dalam aturan, saya bersedia mengubah / menghapus.

ambil string 6 karakter dan tambahkan }@untuk memastikan asimetri (pilihan karakter ini memberikan pulau-pulau yang agak menyerupai Antartika)

menggambar garis yang menghubungkan 8 titik pada interval 45 derajat, dengan jarak dari pusat ditentukan oleh kode 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

masukkan deskripsi gambar di sini

Level River St
sumber
2
@ BetaDecay Black-on-white diperlukan oleh spec.
undergroundmonorail
Masih ada output yang merupakan variasi satu sama lain - @} zzaa dan @} aazz adalah refleksi satu sama lain
haskeller bangga
1
@proudhaskeller @ dan} tidak diizinkan dalam input. Itu sebabnya mereka dipilih untuk ditambahkan ke input sebelum merencanakan.
Level River St
0

Algoid

Algoid adalah bahasa yang mirip dengan LOGO atau Turtle dan hampir seluruhnya berbasis grafis.

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)

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

Benih: islands in the stream

Peluruhan Beta
sumber