Bintang terdekat kita, matahari, cukup gelisah. Waktu naik dan set tergantung pada di mana Anda berada, dan apakah itu musim dingin atau tidak.
Kami ingin dapat menyimpulkan jika matahari bersinar di luar tanpa harus meninggalkan kenyamanan ruang bawah tanah kami - itulah sebabnya kami membutuhkan peta matahari terbaru (alias peta siang hari). Anda yang menulis program yang hanya menghasilkan itu!
Aturan: Program Anda harus menampilkan gambar (dalam format yang diketahui) atau representasi seni ASCII dari planet kita, menunjukkan (perkiraan) bagian mana yang saat ini dinyalakan oleh matahari. Program Anda harus asli dan mandiri : Anda tidak boleh menyalin, menggunakan, memasukkan atau memanggil kode apa pun kecuali perpustakaan standar bahasa pemrograman Anda.
Jika Anda masih tidak tahu apa yang saya bicarakan, berikut adalah contoh dari Wikipedia:
Ini adalah kontes popularitas . Anda harus mencatat dalam jawaban Anda yang mana dari hal-hal berikut yang ingin Anda capai (beberapa pilihan mungkin):
Ketepatan. Perhatikan bahwa aturan mengatakan 'aproksimasi' - semakin baik aproksimasi Anda, semakin banyak poin dalam kategori ini. Anda dapat memeriksa implementasi Anda terhadap Wolfram Alpha's , Time and Date's atau die.net's .
Fungsionalitas. Misalnya, bagaimana dengan interaktivitas? Menandai lokasi tertentu? Memetakan planet lain?
Estetika. Menggambar benua? Poin bonus. Benua bertekstur? Poin bonus. Di bumi 3D? Dengan awan? Bintang? Bintang yang benar ? Poin bonus besar. Dan seterusnya.
Menggunakan teknologi yang tidak biasa, lama, atau salah. Tentu, Anda bisa menyiapkan ini di Mathematica, tetapi apakah Anda sudah mempertimbangkan untuk menggunakan
m4
? SQL Keempat? perakitan x86?Menyenangkan. Ingin menggunakan peta proyeksi-Dymaxion ? Lanjutkan!
Kode pendek. Lagipula, ini adalah Code Golf SE.
Selamat bersenang-senang!
sumber
m4
setiap hari dalam seminggu untuk tugas ini ...Jawaban:
Haskell - kode berkualitas rendah
Saya sangat lelah ketika menulis ini.
Saya mungkin sudah terlalu jauh dengan gagasan proyeksi, bagaimanapun, inilah proyeksi yang digunakan program. Pada dasarnya seperti memproyeksikan bumi ke sebuah kubus dan kemudian membukanya. Selain itu, dalam proyeksi ini, bayangan terbuat dari garis lurus.
Program menggunakan tanggal / waktu saat ini, dan menampilkan file PPM pada stdout.
Itu benar - triangular
where
-code, nestedcase
s, penggunaan IO tidak valid.sumber
fromIntegral (fromEnum $ utctDayTime c)
lebih rapi(realToFrac $ utctDayTime c)
. (Saya hanya belajar ini saat menulis jawaban saya)Haskell, dalam kategori 'karena itu ada'
Saya penasaran jadi saya menulis satu. Rumusnya cukup akurat [1], tapi kemudian saya pergi dan menggunakan beberapa seni ascii alih-alih peta Plate Carrée yang tepat, karena itu terlihat lebih bagus (cara saya mengonversi piksel ke lat / panjang hanya berfungsi dengan benar untuk Plate Carrée)
Contoh output, dari waktu yang lebih menarik tahun ini (kami berada di dekat titik balik, sehingga gumpalan persegi panjang Wander Nauta cukup akurat :)) - ini untuk Jan 16 13:55:51 UTC 2014:
[1] mereka sama dengan yang akan Anda temukan di tempat lain, kecuali tanpa kerja ekstra untuk menjaga derajat antara 0 dan 360, jam antara 0 dan 24, dan radian antara 0 dan 2pi. Saya pikir itu adalah peninggalan dari hari-hari kami menggunakan aturan slide; Fungsi trigonometri bekerja dengan baik di luar rentang tersebut ...
sumber
.
Bash, 882 * karakter
Ini adalah entri kedua saya, kali ini dalam kategori Aesthetics , Weird tech , Fun dan Short code . Ini terinspirasi oleh entri Ram Narasimhan dan komentar Peter Taylor.
Script pertama-tama menghasilkan tekstur beresolusi rendah di dunia, dibundel sebagai data yang di-encode base64. Ini kemudian menghasilkan 24 adegan PovRay yang mengandung bola dengan tekstur itu, masing-masing diputar untuk 'menghadapi matahari'. Akhirnya, frame digabungkan menjadi animasi GIF menggunakan ImageMagick. Ini artinya Anda harus menginstal PovRay dan ImageMagick agar skrip berfungsi - jangan sungkan untuk mengabaikan entri ini jika Anda pikir itu akan mendiskualifikasi.
Seperti entri Ram, dan entri pertama saya, ini tidak memperhitungkan perubahan musiman, yang berarti tidak terlalu tepat. Namun, ini lebih pendek, lebih cantik dan lebih tepat daripada entri pertama saya - dan tidak seperti entri Ram, data peta dan kode untuk menghasilkan animasi GIF disertakan.
Sebagai bonus , inilah GIF yang menggunakan gambar Blue Marble NASA alih-alih tekstur hemat 1-bit, yaitu seperti apa hasilnya tanpa batasan ukuran: http://i.imgur.com/AnahEIu.gif
*: 882 karakter tidak termasuk spasi putih dekoratif, total 1872 karakter.
sumber
Saya memutuskan untuk memulai kontes dengan entri saya sendiri, dalam kategori kode pendek . Panjangnya 923 karakter, tidak termasuk baris baru.
C: 923 karakter
Ini kodenya:
Begini cara kerjanya:
Berikut ini contoh output, dikonversi ke PNG ( versi lebih besar ):
*: Seluruh dunia kecuali Antartika, tetapi siapa yang tinggal di sana ...
sumber
Haskell - saatnya Hammer.
Saya melakukan satu lagi. Diadaptasi dari versi saya sebelumnya, yang ini menggunakan proyeksi Hammer miring untuk menunjukkan kedua kutub pada saat yang sama (sebenarnya Anda melihat seluruh bumi di setiap frame). Hanya untuk menambah keanehan, alih-alih menggunakan bitmap secara langsung, saya mencicipi bumi dengan spiral untuk memberikan cakupan area yang kira-kira sama; inilah yang memungkinkan saya mengubah bumi dan memutarnya dengan mudah. Proyeksi Hammer adalah area yang sama juga; ide saya adalah bahwa memasangkan kedua hal ini akan mengurangi distorsi ketika saya mengisi kekosongan. Saya menampilkan graticule pada proyeksi juga, menggunakan algoritma Bresenham untuk menggambar garis. Garis globe dan terminator bergerak sepanjang hari.
Diedit untuk mengubah gambar ke resolusi yang lebih tinggi tetapi bitmap yang mendasari lebih kasar, sehingga Anda dapat melihat efek spiral. Ini menggunakan 5000 poin (sampel dari ~ 260000 ), setara dengan bitmap 50x100, tetapi memberikan resolusi lebih ke khatulistiwa daripada ke kutub.
Untuk menggunakan kode, kompilasi dengan ghc, jalankan dengan parameter numerik opsional yang merupakan offset jam; file dihasilkan seperti 'earth0.pgm', 'earth1.pgm'.
sumber
C, menggunakan gambar pnm
Jawaban terlambat, fokus pada kebenaran dan estetika . Outputnya merupakan perpaduan dari dua gambar input (siang.pnm dan night.pnm), termasuk garis senja. Saya menggunakan gambar berdasarkan NASA blue marble di sini.
Kode menggunakan img.h saya sendiri untuk kejelasan (bayangkan saja itu dimasukkan kata demi kata dalam .c untuk kepatuhan aturan yang ketat ...). Semua yang ada di sana diimplementasikan melalui makro C. Animasi dibangun dengan konversi imagemagick dari banyak frame - program itu sendiri hanya akan menghasilkan gambar statis. Kode di bawah ini.
Sekarang: (13 Agustus, ~ 13:00 CEST)
Suatu hari: (1 Januari)
Satu tahun: (12:00 UTC)
sun.c
img
sumber
R: Menggunakan proyeksi ggplot2 dan Map
Terinspirasi oleh pos @ mniip, saya memutuskan untuk mencoba menggunakan paket mapproj R, di mana kita dapat mengarahkan dunia dengan menentukan di mana Kutub Utara seharusnya berada ketika menghitung proyeksi.
Berdasarkan waktu GMT saat ini, saya menghitung garis bujur di mana saat ini siang hari dan menjadikan titik itu sebagai pusat peta. Kami melihat Bumi dari "sudut pandang Sun" sehingga apa pun yang terlihat adalah di siang hari.
Sebagian besar kode hanyalah estetika. Satu-satunya bagian saya harus mencari tahu adalah untuk menghitung "Siang Bujur," itu adalah nilai bujur di mana itu siang hari diberikan waktu GMT.
Saya kemudian menggunakan paket animasi R untuk menghasilkan 24 gambar dan menjahitnya menjadi satu GIF.
sumber
JavaScript - oleh Martin Kleppe ( http://aem1k.com/ )
Saya ingin menekankan bahwa ini bukan pekerjaan saya, tetapi karya Martin Kleppe. Saya hanya berpikir itu sangat cocok sehingga tidak boleh hilang di sini:
Demo Online (atau cukup rekatkan ke konsol)
sumber