Superkomputer baru yang memprediksi cuaca telah tiba, dan itu tidak berfungsi.
Sementara itu bos Anda ingin Anda membeli teknisi beberapa waktu dengan memalsukan peta angin harian.
Tugas Anda adalah menggambar kisi-kisi panah yang mewakili arah angin.
Gridnya adalah:
- terdiri dari ubin persegi 15px
- 8 ubin dengan 8 ubin
- Total 120px persegi
000 latar belakang
Setiap petak kisi memiliki 8 orientasi potensial, mewakili arah angin:
- Utara
- Timur laut
- Timur
- Tenggara
- Selatan
- Barat daya
- Barat
- Barat laut
Yang harus digambarkan sebagai berikut:
N NE E SE S SW W NW
Peta harus bervariasi secara bertahap , agar dapat dipercaya.
Ini berarti setiap ubin hanya berbeda dari tetangganya dengan satu langkah. Secara khusus:
- Ubin hanya dapat berbeda dengan satu kenaikan atau penurunan dari masing-masing 4 ubin yang berdekatan. (atau 3 untuk ubin samping, 2 untuk ubin sudut).
- mis. ubin dengan tetangga E dapat berupa NE, E atau SE (dengan asumsi sesuai dengan tetangga lainnya).
- Orientasi dapat berputar kembali, yaitu N -> NW dan NW -> N.
Sebagai ilustrasi, peta berikut ini valid:
NW N NE NE NE NE NE NE
N NE NE NE NE NE NE E
NE NE NE NE NE NE E SE
E NE NE NE NE E SE S
SE E E E E SE S SE
S SE SE SE SE S SE E
SW S S S S SE E NE
SW SW S S SE E NE N
Peta harus unik , jangan buat peta yang sama untuk input yang berbeda.
- Input adalah bilangan bulat yang sesuai dengan hari-hari antara sekarang dan perkiraan Anda (mis. 1 adalah perkiraan besok, 365 adalah waktu satu tahun).
- Output adalah peta sebagai gambar.
- Output harus dapat direproduksi, input yang sama akan selalu memberikan output yang sama
- Anda harus memberikan peta unik selama minimal 8 tahun - yaitu tidak ada output yang identik untuk input antara 1 dan 2920 (saya mengabaikan tahun kabisat).
- Tidak ada output yang ditentukan untuk input apa pun yang lebih besar dari 2920.
Pengajuan yang menang akan menghasilkan peta yang valid (hingga hari 2920) dengan byte kode sumber paling sedikit.
Jawaban:
BBC Basic, 83 karakter ASCII, filesize terpatok 72
Unduh emulator di http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Ini pada dasarnya adalah konsep pelabuhan Martin, tetapi implementasi di BBC basic sangat berbeda. Saya memprogram ulang font untuk angka-angka
0
dan1
kemudian menampilkan digit binern
dalam urutan terbalik.Kode tidak dikumpulkan di bawah ini. Di dasar BBC Anda dapat mencetak karakter ASCII individu menggunakan
VDU
perintah, tetapi bahasa memiliki serangkaian kode khusus mesin yang mirip dengan urutan melarikan diri tetapi mulai dengan karakter yang tidak patut dicetak. Untuk memprogram ulang font, kita mulai dengan ASCII 23. Biasanya nilai 8-bit diambil, tetapi jika Anda menggunakan titik koma sebagai pemisah alih-alih koma, dibutuhkan nilai endian 16-bit kecil (seperti yang digunakan dalam versi golf.)Keluaran
Untuk angka 0 hingga 7. Perhatikan bahwa font tidak diatur ulang di akhir program, maka angka 0 dan 1 muncul sebagai panah dalam dua contoh pertama.
sumber
Matlab (182 *)
Diasumsikan bahwa input disimpan di
n
. Ketika melihat algoritma, tidak yakin bahwa hasilnya akan unik, tetapi saya memeriksan=1 upto 3000
bahwa mereka unik dan memenuhi aturan. Saya pada dasarnya hanya menggunakan bilangan kompleks dari lingkaran unit dan 'menghaluskan' mereka dengan conv2 dengan filter gaussian. Setelah itu mereka 'dibulatkan' ke 8 kemungkinan arah.* Saya tidak tahu cara mengukur skala output ke sejumlah piksel, sehingga harus dilakukan secara manual = /
EDIT: Saya baru saja menemukan bahwa ada kasus di mana program pengecekan saya tidak mengenali solusi yang salah (berubah lebih dari 1 langkah), tetapi saya mencoba mencari solusi lain.
Memasukkan:
Kode:
sumber
Mathematica,
116115 byteSaya kira kuda yang baik tidak pernah melompat lebih tinggi dari yang seharusnya. 2920 grid yang berbeda sangat mudah dicapai dengan hanya menggunakan dua arah (Saya menggunakan
N
danNE
), yang membuat memuaskan aturan kontinuitas sepele. Saya hanya memilih antara N dan NE berdasarkan bitn
, jadi ini sebenarnya akan menghasilkan 2 64 peta angin yang berbeda.Berikut ini sepuluh peta pertama:
PS: Ide awal saya adalah untuk menghitung semua 8 4 kombinasi untuk 4 sudut dan "linear" interpolasi sisa grid. Itu mungkin akan menghasilkan peta yang lebih bagus, tapi ini kode golf, jadi saya pergi dengan apa yang memenuhi persyaratan minimum.
sumber
PHP 5.4, 549 byte
Agak terhalang oleh kebutuhan untuk mendefinisikan panah sebagai grafik, berikut ini adalah kode PHP saya:
Mengambil argumennya dari baris perintah, seperti:
Solusi ini akan menggunakan input sebagai definisi keempat sudut. Sisa peta akan diinterpolasi dengan lancar antar nilai. Ini telah menentukan hasil untuk semua nilai dari 0 hingga 4095, total besar ~ 11,25 tahun perkiraan palsu, yang seharusnya lebih dari cukup waktu untuk memperbaiki perangkat lunak cuaca!
Inilah GIF dari semua hasil:
Dan ZIP yang berisi setiap peta dapat diunduh di sini
(Catatan kecil: Domain saya baru-baru ini kedaluwarsa karena saya tidak memperhatikan. Saya telah memperbaruinya, tetapi gambar dan tautan di atas mungkin tidak berfungsi sampai pembaruan DNS)
Tidak dipadamkan:
sumber