Ya, GIF tua yang bagus. Dicintai karena keserbagunaannya, dibenci karena patennya dan sebagian sudah usang karena keterbatasannya (dan patennya), GIF pada intinya terdiri dari palet warna dan gambar yang diindeks palet yang dikompres menggunakan algoritma LZW.
Tugas Anda adalah menulis program yang membaca gambar dalam format ASCII PPM ("nomor ajaib") dari input standar, dan menulis gambar yang sama (pixel-by-pixel identik) dalam format GIF ke output standar. Outputnya bisa dalam bentuk biner, atau teks ASCII dengan setiap byte diwakili oleh angka antara 0 dan 255 (inklusif), dipisahkan oleh spasi putih.
Gambar input dijamin tidak memiliki lebih dari 256 warna berbeda.
Mencetak:
Program Anda akan diuji pada 3 gambar sampel, dan skor Anda akan dihitung sebagai:
ukuran program + jumlah (ukuran output - ukuran referensi untuk setiap gambar sampel)
Skor terendah menang.
Persyaratan:
- Program Anda harus bekerja dengan jenis gambar yang serupa dari berbagai ukuran, dan tidak terbatas pada gambar sampel. Anda dapat, misalnya, membatasi dimensi menjadi kelipatan 2 atau menganggap bahwa warna ppm max adalah 255, tetapi masih harus bekerja dengan berbagai macam gambar input.
- Keluaran harus berupa file GIF yang valid yang dapat dimuat dengan program apa pun yang sesuai (setelah mengonversi kembali ke biner jika menggunakan opsi keluaran ASCII).
- Anda tidak dapat menggunakan fungsi pemrosesan gambar apa pun (bawaan atau pihak ketiga), program Anda harus berisi semua kode yang relevan.
- Program Anda harus dapat dijalankan di Linux menggunakan perangkat lunak yang tersedia secara bebas.
- Kode sumber harus hanya menggunakan karakter ASCII.
Contoh gambar:
Berikut adalah 3 contoh gambar yang akan digunakan untuk penilaian. Anda dapat mengunduh arsip zip dengan file ppm (gunakan tombol unduh di bagian atas halaman itu). Atau Anda dapat mengonversinya dari gambar png di bawah ini, menggunakan ImageMagick dengan perintah berikut:
convert file.png -compress none file.ppm
Saya juga menyediakan checksum MD5 dari file ppm untuk konfirmasi.
1. kuning
Ukuran referensi: 38055
MD5 checksum dari ppm: d1ad863cb556869332074717eb278080
2. mata biru
Ukuran referensi: 28638
MD5 checksum dari ppm: e9ad410057a5f6c25a22a534259dcf3a
3. paprika
Ukuran referensi: 53586
MD5 checksum dari ppm: 74112dbdbb8b7de5216f9e24c2e1a627