Ini adalah versi audio dari tantangan penyandian gambar Twitter .
Rancang format kompresi audio yang dapat mewakili setidaknya satu menit musik dalam 140 byte atau kurang dari teks berkode UTF-8 yang dapat dicetak.
Menerapkannya dengan menulis program baris perintah yang mengambil 3 argumen berikut (setelah nama program itu sendiri):
- String
encode
ataudecode
. - Nama file input.
- Nama file keluaran.
(Jika bahasa pemrograman pilihan Anda tidak memiliki kemampuan untuk menggunakan argumen baris perintah, Anda dapat menggunakan pendekatan alternatif, tetapi harus menjelaskannya dalam jawaban Anda.)
The encode
operasi akan mengkonversi dari format audio Anda memilih untuk dikompresi “Tweet” format Anda, dan decode
operasi akan mengkonversi dari “Tweet” format ke format audio asli. (Tentu saja, Anda diharapkan untuk menerapkan kompresi lossy, sehingga file output tidak harus identik dengan input, hanya dalam format yang sama.)
Sertakan dalam jawaban Anda:
- Kode sumber program Anda, secara penuh. (Jika terlalu lama untuk halaman ini, Anda dapat meng-host-nya di tempat lain dan memposting tautan ke sana.)
- Penjelasan tentang cara kerjanya.
- Setidaknya satu contoh, dengan tautan ke file audio asli, teks "tweet" yang dimampatkan, dan file audio diperoleh dengan mendekode tweet. (Penjawab bertanggung jawab atas pernyataan “penggunaan wajar” hak cipta.)
Aturan
- Saya berhak untuk menutup celah dalam peraturan kontes kapan saja.
- [Diedit 24 April] Untuk input
encode
fungsi Anda (dan outputdecode
fungsi Anda ), Anda dapat menggunakan format audio umum yang masuk akal, apakah itu:- Gelombang terkompresi, seperti WAV.
- Gelombang terkompresi, seperti MP3.
- Gaya "Lembaran musik", seperti MIDI.
- Format "tweet" terkompresi Anda harus benar-benar menyandikan suara dalam file input. Jadi, tipe-tipe output berikut ini tidak masuk hitungan:
- URI atau jalur file yang memberikan lokasi penyimpanan output aktual.
- Kunci ke tabel database di mana output aktual disimpan sebagai gumpalan.
- Ada yang mirip.
- Program Anda harus dirancang untuk mengompres file musik umum , jadi jangan lakukan hal-hal yang terlalu jelas terkait dengan lagu contoh spesifik Anda. Misalnya, jika Anda mendemonstrasikan "Twinkle, Twinkle, Little Star", rutinitas kompresi Anda seharusnya tidak membuat hard-code simbol khusus untuk urutan do-do-so-la-la-so.
- Output program Anda seharusnya benar-benar dapat melalui Twitter dan keluar tanpa cedera. Saya tidak memiliki daftar karakter persis yang didukung, tetapi cobalah untuk tetap berpegang pada huruf, angka, simbol, dan tanda baca; dan menghindari karakter kontrol, menggabungkan karakter, penanda BIDI, atau hal-hal aneh lainnya seperti itu.
- Anda dapat mengirimkan lebih dari satu entri.
Kriteria penilaian
Ini adalah kontes popularitas (yaitu, sebagian besar upvote bersih menang), tetapi pemilih didorong untuk mempertimbangkan hal berikut:
Ketepatan
- Masih bisakah Anda mengenali lagu itu setelah dikompres?
- Apakah itu terdengar bagus?
- Masih bisakah Anda mengenali instrumen yang sedang dimainkan?
- Masih bisakah Anda mengenali liriknya? (Ini mungkin tidak mungkin, tetapi akan mengesankan jika ada yang menyelesaikannya.)
Kompleksitas
Pilihan contoh lagu penting di sini.
- [Ditambahkan 24 April] Tantangan ini akan paling mudah dengan MIDI atau format serupa. Namun, jika Anda melakukan upaya ekstra untuk membuatnya berfungsi dengan format tipe gelombang, itu layak mendapatkan kredit ekstra.
- Apa strukturnya? Tentu, Anda dapat memenuhi persyaratan satu menit dengan hanya mengulangi 4 langkah yang sama beberapa kali secara acak. Tetapi struktur lagu yang lebih kompleks layak mendapat poin lebih banyak.
- Bisakah format menangani banyak catatan yang dimainkan sekaligus?
Kode
- Buatlah sesingkat dan sesederhana mungkin. Namun, ini bukan kode golf, jadi keterbacaan lebih penting daripada jumlah karakter.
- Algoritma yang cerdas dan rumit juga OK, asalkan dibenarkan oleh peningkatan kualitas hasil.