Catatan: Dalam posting ini, istilah 'karakter' dan 'warna' pada dasarnya berarti hal yang sama
Gambar ini:
dapat direpresentasikan sebagai
....'''333
.eeee'''3e
..dddd33ee
%%%dd####e
(memetakan warna ke karakter ascii)
Teorema empat warna menyatakan bahwa "diberikan setiap pemisahan pesawat ke daerah yang berdekatan, menghasilkan gambar yang disebut peta, tidak lebih dari empat warna yang diperlukan untuk mewarnai wilayah peta sehingga tidak ada dua daerah yang berdekatan memiliki warna yang sama. Dua daerah disebut berdekatan jika mereka memiliki batas bersama yang bukan sudut, di mana sudut adalah titik yang dibagi oleh tiga atau lebih daerah. " - Wikipedia ( tautan )
Ini berarti bahwa harus dimungkinkan untuk mewarnai peta menggunakan empat warna sehingga tidak ada dua bagian yang berbagi sisi yang berbagi warna.
Algoritma untuk mewarnai peta menggunakan hanya empat warna rumit sehingga dalam tantangan ini program Anda hanya perlu mewarnai peta menggunakan lima warna atau kurang.
Peta sebelumnya yang di-recolored bisa seperti ini:
yang dapat direpresentasikan sebagai
....'''333
.eeee'''3e
..dddd33ee
333dd....e
atau setara
@@@@$$$!!!
@^^^^$$$!^
@@<<<<!!^^
!!!<<@@@@^
Tantangan:
Diberi "peta" yang terbuat dari karakter ascii (di mana setiap karakter mewakili warna yang berbeda), "mengubah warna" peta (mewakili peta menggunakan karakter ascii yang berbeda) sehingga hanya menggunakan lima atau kurang warna.
Contoh:
Memasukkan:
%%%%%%%%%%%%##########$$$$$$$$%%
*****%%%####!!!!!!!%%%%%%%%%#^^^
(((((((***>>>>??????????%%%%%%%%
&&&&&&&&$$$$$$$^^^^^^^))@@@%%%%%
^^^^^^%%%%%%%%%%%%##############
Output yang mungkin:
11111111111122222222223333333311
44444111222255555551111111112444
22222224441111444444444411111111
55555555222222255555553355511111
22222211111111111122222222222222
Klarifikasi:
- Peta input akan selalu menggunakan enam karakter atau lebih
- Anda dapat menggunakan lima karakter berbeda dalam output
- Anda dapat menggunakan kurang dari lima karakter yang berbeda dalam output
- Anda dapat mengambil input dalam format wajar apa pun (termasuk array array, atau array string)
- Ini adalah kode-golf sehingga jawaban terpendek menang.
121
sebagai 3 wilayah terpisah untuk menghindari masalah ini, meskipun contohnya menyiratkan sebaliknya, atau haruskah kita memperlakukannya sebagai 2, dan menganggap bahwa tidak ada peta yang akan diberikan yang membutuhkan lebih dari 5 warna?Jawaban:
Python 2 ,
375361359357355353350347 byteCobalah online!
Mengambil input sebagai daftar string, dan mengembalikan daftar daftar
f
mengambil input peta dan mewarnainya,g
mengembalikan semua karakter yang terhubung dan mengatur tetangganya, ke area tersebut dapat diwarnai dengan warna yang berbeda.sumber
if~-(n!={c}or(i,j)in m):
untuk -2 byte