Masalah:
Tantangan ini datang dari masalah nyata yang saya alami. Saya memiliki pengaturan dual monitor di tempat kerja, dan saya ingin menggunakan gambar berikut sebagai wallpaper saya:
Namun, monitor saya memiliki bezel yang cukup signifikan, dan ketika saya mengatur latar belakang saya, terlihat seperti ini, di mana dermaga muncul (appiers?) Menjadi rusak:
Saya dapat menyelesaikan ini dengan membuat gambar dengan bagian tengahnya terpotong, dan kemudian merentangkannya kembali ke ukuran aslinya, seperti pada gambar di bawah ini:
Tantangan:
Tulis program yang mengambil gambar dan "pantau" untuk digunakan dengan pengaturan dua monitor (yaitu menghapus bagian tengah gambar, di mana bezel berada). Aturannya adalah sebagai berikut:
- Ini harus berupa program lengkap yang menerima gambar, baik sebagai jalur (argumen string, dll), atau dalam bentuk dialog pemilih file.
- Program harus mengambil sebagai input jumlah garis vertikal (lebar satu piksel) untuk memotong dari bagian tengah gambar
- Pemangkasan harus berasal dari pusat (lebar-bijaksana) dari gambar asli
- Gambar yang dihasilkan harus diskalakan kembali ke ukuran asli dari gambar input. (Salah satu bagiannya dapat diskalakan secara individual, dan kemudian digabungkan, atau digabungkan dan kemudian diskalakan. Penskalaan secara individual menghasilkan gambar / efek yang lebih baik, tetapi hampir tidak terlihat di dunia nyata)
- Gambar latar belakang pada umumnya genap, sehingga untuk membuat tantangan ini lebih mudah, input gambar hanya akan memiliki jumlah piksel yang genap, dan jumlah garis untuk dihapus hanya akan sama rata.
- Tantangan ini adalah kode golf - kode terpendek dalam byte yang menang
Semoga berhasil!
sumber
Jawaban:
Oktaf, 85 byte
Menentukan fungsi anonim dengan
f
nama file, dann
jumlah kolom yang akan dihapus. Karena fungsi anonim membutuhkan satu ekspresi, penugasan inline digunakan, fitur yang tidak ada di MATLAB.MATLAB, 98 byte
Sebagai bonus, saya juga mengirim jawaban yang kompatibel dengan MATLAB. Menariknya, ini hanya 13 byte lebih lama, karena versi Oktaf membutuhkan banyak tanda kurung untuk mengurai tugas inline dengan benar.
sumber
Matlab 2013, 150 byte
Ini usaha saya di Matlab. Jelas bukan kode terpendek, tapi ini awal.
Peringatan, ini menimpa gambar asli, jadi buat salinannya terlebih dahulu.
Versi Golf
Ungolfed Code, dengan peningkatan untuk ukuran gambar ganjil dan jumlah kolom ganjil
sumber
os
dll ke huruf lain dalam alfabet! Dan mengapa tidak hanya menulis gambar kembali ke gambar inputf
untuk menyimpan keseluruhanstrcat
? (yang, kebetulan, Anda dapat menggantikannya dengan['',...]
bukanstrcat(...)
)Bahasa Wolfram,
134,127,119111 byteMembuat fungsi
f
yang mengambil gambar sebagai input pertama (sebagai simbol dalam Mathematica atau Wolfram Cloud), dan integer sebagai input kedua.Tidak disatukan :
Secara teknis, itu tidak akan berfungsi dengan baik jika salah satu dari dimensi gambar melebihi 362.880 piksel, tapi saya berasumsi tidak apa-apa, karena itu jauh di luar lingkup masalah (dan beberapa komputer).Tetap!sumber
PHP, 206 byte
membutuhkan tiga argumen baris perintah: nama file sumber, jumlah baris untuk dipangkas, dan nama file target. Jalankan dengan
-r
.Anda mungkin ingin menggunakan
imagecopyresampled
sebagai gantiimagecopyresized
(+2 byte) untuk hasil yang lebih baik.ungolfed
Saya bisa menghemat 9 byte lagi dengan mengirim hasil PNG ke STDOUT ... tapi untuk apa?
sumber
php -r image.php image.png 1 > output.png
, kan?