Bonus Baru! (Lihat di bawah)
Tim kartografi calon presiden dari Partai Republik AS Ben Carson mengalami masalah dengan peta mereka (gambar melalui Washington Post ):
Masalahnya adalah mereka tidak memiliki Alat yang Tepat Untuk Pekerjaan ™. Mereka membutuhkan program yang paling ringkas dan andal, sehingga mereka tidak perlu khawatir membuat peta lagi. Itu sebabnya mereka mempekerjakan Anda. Anda perlu mengambil peta ini dan menampilkannya kembali dengan pewarnaan yang diinginkan:
Oleh Theshibboleth [GFDL ( http://www.gnu.org/copyleft/fdl.html ) atau CC-BY-SA-3.0 ( http://creativecommons.org/licenses/by-sa/3.0/)] , melalui Wikimedia Commons
Jika Anda tidak tahu di mana semua negara bagian (karena Anda bukan orang Amerika ... atau Anda orang Amerika), berikut adalah peta dengan semua nama (Washington DC tidak diperlukan untuk tantangan ini):
"Peta USA dengan nama negara 2". Berlisensi di bawah CC BY-SA 3.0 melalui Wikimedia Commons - https://commons.wikimedia.org/wiki/File:Map_of_USA_with_state_names_2.svg#/media/File:Map_of_USA_with_state_names_2.svg
Misalnya jika inputnya adalah Ohio, Indiana, Illinois;New York, New Jersey, Florida
, Anda menghasilkan:
Gambar peta kosong tersedia dalam format SVG dan PNG . Untuk kenyamanan Anda, berikut adalah daftar semua 50 negara bagian dalam urutan abjad
Ini adalah tantangan kode-golf dan grafis-output . Keluaran harus berupa SVG atau file gambar. Cukup menampilkan output di layar tidak cukup. Masukan harus diambil dari STDIN atau dengan membaca file teks. Saya fleksibel dengan cara Anda memformat input, meskipun harus berisi nama lengkap masing-masing negara, dengan negara merah (Republik) terdaftar pertama dan negara biru (Demokrat) kedua. Dua warna berbeda dari merah dan biru dapat diterima untuk pewarnaan. Tentu saja, Anda dapat memiliki gambar peta kosong di folder yang sama dengan program Anda dengan nama file apa pun yang Anda inginkan.
Kriteria Akurasi
Jika output Anda adalah file raster, itu harus setidaknya 800px oleh 495px, dan garis tidak boleh menyimpang dari hasil peningkatan skala SVG ke ukuran yang sama dengan lebih dari 1,5 piksel. Jika output Anda adalah file vektor, garis tidak boleh menyimpang dari SVG lebih dari 1,5 piksel saat keduanya diskalakan ke 800px oleh 495px.
Bonus!
Ben sedang berusaha mengurangi ketergantungan pada perpustakaan asing, dan sekarang menawarkan bonus -50% kepada siapa saja yang hanya menggunakan versi grafik raster peta sebagai input dan menciptakan algoritma mereka sendiri untuk deteksi wilayah. Pada akhirnya, penilaian saya yang menentukan apakah pendekatan Anda dianggap sebagai algoritma "tulis Anda sendiri".
Semoga berhasil!
sumber
Jawaban:
Python 626
Dalam pendekatan di bawah ini, saya menambahkan .rstate dan .bstate berdasarkan .state dalam deskripsi CSS. Di saya, saya mengganti nama file .svg yang disediakan menjadi
v.svg
. Dibutuhkan input seperti yang dijelaskan di bawah ini dan menulis ke filew.png
. Untuk mentransfer dari nama negara lengkap ke versi singkat, saya mencarinya berdasarkan dua huruf pertama dan terakhir dari negara bagian.Contoh input:
Contoh output:
Atau terinspirasi oleh bendera Prancis:
sumber
Memproses, 425 byte (259 byte + 1 +165 byte file)
Kode:
Peta kosong harus dinamai " M.svg " dan disimpan dalam folder bernama / data (semua file lain berada di folder yang sama dengan program.)
File Input (" a "):
File Kunci (" b "): http://pastebin.com/0pNufAH9
Output (" m.tif "):
Ok, ini saya coba di tantangan saya sendiri. Beberapa catatan:
Jika ada yang memiliki ketidaksesuaian dengan penilaian diri saya terhadap kode saya, jangan ragu untuk meninggalkan komentar.
Juga, jika ada orang yang ingin mencoba tantangan ini dalam Memproses , ia mendukung membaca file SVG ke
PShape
, serta mem-parsing file SVG sebagai XML.sumber
for(int i=0;i++<51;)
sajafor(int i=0;i<51;i++)
. Ini menghemat 1 byte dan memiliki wajah smiley di dalamnya;)++i
agar berfungsi. Apakah itu benar?String[] a
PHP, 714 byte
Outputnya adalah file SVG kosong, yang harus disimpan dalam file bernama
a
, dengan CSS tambahan untuk mewarnai negara, yang harus disimpan dalam file bernamab
dalam format berikut:Saya telah menambahkan beberapa baris baru untuk keterbacaan.
Ini adalah versi yang tidak dikoleksi:
Prinsipnya sederhana: dalam SVG kosong, setiap jalur memiliki ID yang sesuai dengan singkatan negara yang diwakilinya (misalnya,
<path d="…" id="HI" />
untuk Hawaii).Yang harus kita lakukan adalah menambahkan beberapa CSS untuk mewarnai jalur ini di tempat yang sesuai. Tetapi sudah ada beberapa CSS di file kosong (khususnya
<style type="text/css">…</style>
tag sudah ada), jadi sangat mudah dan singkat untuk melakukannya. Kami dapat melihat bahwa string.b
hanya ditemukan di CSS untuk.border
. Kabar baik! Kami hanya akan mengganti.b
denganOUR_WONDERFUL_CSS.b
.Membuat "CSS kami yang luar biasa" tidak terlalu sulit:
Ohio0Indiana0Illinois1New York0New Jersey0Florida
.OH0IN0IL1NY0NJ0FL
.0
karakter dengan,#
:OH,#IN,#IL1NY,#NJ,#FL
.1
karakter dengan{fill:red}#
:OH,#IN,#IL{fill:red}#NY,#NJ,#FL
.#
di awal dan{fill:blue}
di akhir:#OH,#IN,#IL{fill:red}#NY,#NJ,#FL{fill:blue}
.sumber
implode
dan nama pengguna Anda!Mathematica 1025
Tidak elegan tapi berhasil.
Saya tidak menyadari bahwa file SVG memiliki jalur untuk setiap negara bagian, jadi saya menemukan negara bagian menggunakan
MorphologicalComponents
dan kemudian menghubungkan setiap komponen dengan masing-masing negara. Negara-negara seperti Michigan (dengan semenanjung atas dan bawah) dan Hawaii (beberapa pulau) memiliki lebih dari satu komponen.Kode mengasumsikan bahwa file peta terkandung dalam variabel, m .
Di bawah ini adalah gambar yang akan diekspor oleh input berikut:
sumber