Evet, eski güzel GIF. Çok yönlülüğü için sevilen, patentleri için nefret eden ve sınırlamaları (ve patentleri) nedeniyle kısmen eskimiş olan GIF, özünde bir renk paletinden ve LZW algoritması kullanılarak sıkıştırılmış bir palet indeksli görüntüden oluşur.
Göreviniz , standart girdiden ASCII PPM biçiminde ("P3" sihirli numarası) bir görüntüyü okuyan ve aynı görüntüyü (piksel piksel) aynı çıktıyı standart çıktıya yazan bir program yazmaktır . Çıktı ikili formda olabilir veya her bayt boşlukla ayrılmış 0 ile 255 (dahil) arasında bir sayı ile temsil edilen ASCII metninde olabilir.
Giriş görüntüsünün 256'dan fazla farklı renge sahip olmaması garanti edilir.
puanlama:
Programınız 3 örnek görüntü üzerinde test edilecek ve puanınız şu şekilde hesaplanacaktır:
program boyutu + toplamı (çıktı boyutu - her örnek görüntü için referans boyutu)
En düşük puan kazanır.
Gereksinimler:
- Programınız, çeşitli boyutlardaki benzer görüntülerle çalışmalı ve örnek görüntülerle sınırlı olmamalıdır. Örneğin, boyutları 2'nin katları olarak sınırlandırabilir veya ppm maksimum rengin 255 olduğunu varsayabilirsiniz, ancak yine de çok çeşitli giriş görüntüleri ile çalışması gerekir.
- Çıktı, uyumlu bir programla yüklenebilecek geçerli bir GIF dosyası olmalıdır (ASCII çıktı seçeneği kullanılıyorsa ikili dosyaya dönüştürüldükten sonra).
- Görüntü işleme işlevlerini (yerleşik veya üçüncü taraf) kullanamazsınız, programınız ilgili tüm kodu içermelidir.
- Programınız Linux'ta serbestçe kullanılabilen yazılımlar kullanılarak çalıştırılabilir olmalıdır.
- Kaynak kod yalnızca ASCII karakterleri kullanmalıdır.
Örnek görüntüler:
Puanlama için kullanılacak 3 örnek resim. Ppm dosyalarıyla bir zip arşivi indirebilirsiniz (bu sayfanın üst kısmındaki indirme düğmesini kullanın). Veya aşağıdaki komutla ImageMagick'i kullanarak bunları aşağıdaki png resimlerinden dönüştürebilirsiniz:
convert file.png -compress none file.ppm
Ayrıca onay için ppm dosyalarının MD5 sağlama toplamlarını sağlıyorum.
1. sarı
Referans boyutu: 38055
ppm MD5 sağlama toplamı: d1ad863cb556869332074717eb278080
2. blueeyes
Referans boyutu: 28638
ppm MD5 sağlama toplamı: e9ad410057a5f6c25a22a534259dcf3a
3. biber
Referans boyutu: 53586 PP5
ppm sağlama toplamı: 74112dbdbb8b7de5216f9e24c2e1a627