Wireworld adalah otomat seluler yang dirancang menyerupai elektron yang mengalir melalui kabel. Mekaniknya yang sederhana memungkinkan pembangunan sirkuit digital. Bahkan memungkinkan pembangunan seluruh komputer .
Misi Anda adalah menciptakan implementasi Wireworld terpendek dalam bahasa pilihan Anda.
Setiap sel di grid memiliki satu dari empat negara. Keempat negara bagian itu "kosong," "tembaga," "kepala elektron," atau "ekor elektron."
- Sel kosong akan selalu menjadi sel kosong
- Kepala elektron akan selalu menjadi ekor elektron
- Ekor elektron akan selalu menjadi tembaga
- Sel tembaga akan menjadi kepala elektron jika hanya satu atau dua dari delapan tetangganya adalah kepala elektron, jika tidak maka akan tetap tembaga
Kompetisi ini akan memiliki gaya yang mirip dengan kompetisi Game Terpendek Kehidupan , tetapi dengan beberapa perubahan.
- Grid harus setidaknya 40 kali 40 sel
- Tepi kisi harus TIDAK membungkus (bukan torus). Perlakukan sel di luar bidang sebagai "kosong" terus-menerus.
- Harus memungkinkan bagi pengguna untuk memasukkan konfigurasi awal mereka sendiri.
- Menatap layar kosong tidak menyenangkan. Program harus secara visual menampilkan simulasi ketika sedang berjalan.
Ini adalah kode golf, byte paling sedikit menang.
sumber
ALPACA, 82 karakter
ALPACA adalah bahasa yang dirancang khusus untuk otomat seluler.
o bukan apa-apa; c adalah konduktor; e adalah elektron; t adalah ekor elektron.
sumber
GolfScript (
125 120 105100 karakter)Perhatikan bahwa saya menghitung
\033
masing-masing sebagai satu karakter, karena mereka dapat digantikan olehESC
karakter literal . Ini menggunakan kode kontrol ANSI, jadi andalkan tty yang kompatibel. Perhatikan juga bahwa frame dicetak mulai dengan kisi masukan.Ada beberapa tumpang tindih dengan Generate grid of the sums , yang juga menggunakan lingkungan Moore.
Pengkodean: ruang kosong =>
; kepala elektron =>
i
; ekor elektron =>`
; tembaga =>X
.Jeda antara iterasi adalah waktu yang diperlukan untuk menghitung 46656 46656 . Mengubah
6.?.?
ke ekspresi lain memungkinkan Anda untuk mengontrol kecepatan; yang paling lambat berikutnya untuk jumlah karakter yang sama adalah7.?.?
, yang jauh lebih lambat (outputnya 22 kali lebih besar, dan itu bukan perhitungan kompleksitas linier).Untuk test case, saya sudah menggunakan
dari tantangan Rosetta Code Wireworld .
sumber
Python
371341 karakterYa, ini tidak sesingkat itu, tetapi memiliki gui interaktif!
Instruksi:
Klik dengan tombol kiri mouse untuk memasang kawat
Klik dengan tombol kanan mouse untuk menghapus
Klik dengan tombol tengah mouse untuk menempatkan kepala elektron
Klik di luar sumbu untuk melangkah otomat
sumber
(x>0)&(x<3)
->(0<x<3)
. :)Python (
243214)Mencoba membuat persilangan antara kegunaan dan karakter. Kotak adalah 40x40. Masukan diberikan pada stdin. Kepala elektron adalah
h
, ekor elektron adalaht
, tembaga adalahc
, yang lainnya kosong.Loop sementara (baris 3) tidak terkompresi (tidak akan berfungsi jika ditempatkan dalam kode):
sumber
g[e]='h'if(t=='c')&...else't'if i=='h'else'c'if i=='t'else i
. Tidak yakin apakah itu bekerja persis seperti apa adanya, tetapi sesuatu di sepanjang garis itu harus bekerjaC,
355347300294 karakterSunting: menyadari saya tidak perlu
feof()
Sunting: Disimpan 47 karakter! Removed the Sleep, menghilangkan hampir semua kawat gigi, menggabungkan banyak operasi.
Sunting: Terakhir hari ini, sejak saya memecahkan 300 karakter. Diubah
printf
menjadiputs
, ditemukan optimasi kecil yang lucu dengan perbandingan pertama.C tidak cocok untuk masalah semacam ini, tapi hei, bermain golf itu menyenangkan. Ini adalah implementasi yang sangat kasar, tetapi saya ingin melihat sejauh mana saya bisa menggunakannya.
Input adalah nama file teks
i
. Ini berisi representasi dari keadaan awal, dengan*
untuk tembaga,+
untuk kepala elektron,-
untuk ekor elektron, ruang untuk sel kosong. Saya menggunakan gerbang XOR dari halaman wiki untuk pengujian.sumber
cond?43:42
ditulis42+(cond)
? Dan saya yakinr=s[j][i++];*p=r==43?45:r;if(r==45)*p=42;
dapat dikurangi menjadir=s[j][i++];*p=r==43?45:r==45?42:r;
jika tidakr=s[j][i++]-43;*p=!r?45:r==2?42:r;
Python,
234218 karakterAnda memasukkan papan sebagai tiga daftar bilangan kompleks yang mewakili koordinat sel tembaga (yang harus menyertakan daftar kepala dan ekor), kepala, dan ekor. Ini sebuah contoh:
Perhatikan bahwa kita
eval
input, sehingga Anda dapat menggunakan ekspresi kompleks sewenang-wenang untuk daftar bilangan kompleks.sumber
QBasic, 309 byte
Peringatan: versi golf tidak ramah-pengguna: ia memiliki metode input yang aneh, berjalan sebagai loop tak terbatas, dan tidak memiliki penundaan (dengan demikian, berjalan terlalu cepat pada beberapa sistem). Jalankan saja jika Anda tahu cara menghentikan program di lingkungan QBasic Anda. Versi ungolfed direkomendasikan (lihat di bawah).
Untuk menjalankan, tentukan di input prompt lebar
w
dan tinggi konfigurasi Andah
. 1 Kemudian ketikkanw*h
kode satu digit untuk sel (bergerak dari kiri ke kanan, lalu dari atas ke bawah), dengan0
= kosong6
= kawat7
= kepala sinyal1
= sinyal ekorSetelah Anda memasukkan semua sel, simulasi akan dimulai (dan berlanjut selamanya, sampai Anda mematikan program).
Tidak disatukan
Versi yang lebih ramah pengguna. Untuk memodifikasi tata letak, ubah
DATA
pernyataan di bagian akhir.Kode mengambil keuntungan dari
POINT
fungsi, yang membaca nilai warna piksel dari layar. Ini berarti kita tidak perlu menyimpan sel secara terpisah sebagai array. Untuk memastikan bahwa semua sel memperbarui secara bersamaan, kami melakukan pembaruan pada "halaman" kedua. Kita dapat beralih halaman aktif menggunakan versiSCREEN
pernyataan, dan menyalin konten satu halaman ke yang lain menggunakanPCOPY
pernyataan itu.1 Nilai maksimum untuk lebar dan tinggi tergantung pada mode layar mana yang digunakan. Dalam
SCREEN 9
, lebar bisa hingga 638 dan tinggi hingga 348.SCREEN 7
memiliki resolusi lebih kecil (ukuran konfigurasi maks 318 kali 198), tetapi pikselnya lebih besar dan karenanya lebih mudah dilihat (pada DOS QBasic atau emulator DOSBox - sayangnya QB64 hanya memberikan jendela yang lebih kecil).Contoh dijalankan
Versi ungolfed di archive.org , dengan mode layar 7:
sumber