Memasukkan
Nama file dalam format grafik raster pilihan Anda. Format yang dipilih harus mendukung setidaknya 8 bit per saluran dan 3 saluran.
Keluaran
File dalam format yang sama, dengan dimensi dan piksel yang sama dengan yang pertama, tetapi pikselnya dikelompokkan berdasarkan urutan berapa kali terjadinya, diurutkan dari kiri ke kanan, atas ke bawah.
- Jika warna-warna piksel tertentu muncul beberapa kali sama, urutannya tidak ditentukan.
- Anda tidak boleh menimpa file input (gunakan nama file yang berbeda untuk output).
- Setiap dan semua perpustakaan pemrosesan gambar pihak ketiga diizinkan.
Contoh
Akan memberikan hasil yang mirip dengan:
Terutama di bagian bawah gambar beberapa variasi dapat terjadi, karena ikatan yang berbeda antara warna dengan frekuensi yang sama.
File
objek tipe- kompleks ...? Itu akan membuat perbedaan besar dalam beberapa bahasa.Jawaban:
J,
9481 byteSebuah fungsi mengambil nama file PNG (tanpa saluran transparansi) dan menulis hasilnya dalam nama file input yang diawali dengan "o".
metode
sumber
x
.y
karakter. (Jika Anda mendefinisikan fungsi dengan dua argumen yang diakses olehx
dany
dan Anda tidak dapat mendefinisikan fungsi dengan lebih banyak argumen.)Mathematica,
125123 byteIni mendefinisikan fungsi yang tidak disebutkan namanya yang mengambil nama file dalam format gambar umum dan menulis hasilnya ke file dengan nama yang sama tetapi diawali dengan
a
. Hasilnya terlihat sedikit berbeda dari OP, karena MathematicaSortBy
memutus ikatan dengan urutan urutan default, sehingga bit bawah tempat banyak ikatan terlihat terlihat lebih rapi:Implementasinya sendiri sangat mudah:
ImageData
untuk mendapatkan kisi nilai warna.Join
untuk meratakan array.Tally
untuk menghitung kemunculan setiap warna.SortBy[...,-Last@#&]
untuk mengurutkan berdasarkan frekuensi dari tertinggi ke terendah.ConstantArray
danJoin
untuk memperluas penghitungan lagi.ArrayReshape
untuk memulihkan bentuk gambar asli (diperoleh denganDimensions
).Image
untuk mengubah data kembali ke objek gambar.FYI, 22 byte digunakan pada file I / O. Versi setara yang mengambil dan mengembalikan objek gambar muncul pada 103 byte:
sumber
Python2 / PIL,
244226225223222202186182170159Changelog
Tampilkan cuplikan kode
Versi lebih pendek oleh stokastic , 123
Yah, setidaknya mari kita coba, meskipun sudah dikalahkan.
Ini sangat lambat, Panda diproses selama beberapa menit di laptop saya.
Menghemat dengan nama file dengan nama file asli diulang dua kali.
sumber
i=open(raw_input());d=list(i.getdata());i.putdata(sorted(d,key=lambda D:d.count(D)));i.save('o.png')
, meskipun sangat sangat lambat untuk gambar besar (panggilan list.count pada setiap piksel).o.png
?)Python, 1197 byte
The
png
modul I digunakan .sumber
C # 413
Program lengkap. Lulus nama file pada baris perintah, output disimpan dalam format yang sama dengan file "o".
Tidak menggunakan beberapa fitur linq yang rapi, seperti SelectMany dan Enumerable.Range, karena programnya akan lebih bersih tetapi lebih lama.
Formating courtesy of VS2010 yang dapat dibaca
sumber
{
karakter}
karakterPython 2: 191 byte
Inilah usaha saya. Saya pikir saya mungkin bisa menghemat ruang dengan menggunakan
Counter
, tetapi tidak berakhir sekecil jawaban Pietu1998.Output dari Panda
sumber