Tantangannya adalah: menghasilkan file audio yang terbuat dari white noise.
Persyaratan dan instruksi:
- Program Anda harus menghasilkan file audio yang hanya mengandung white noise, yang berarti intensitasnya sama untuk semua frekuensi (masuk akal) dan bukan nol [lihat contoh plot ];
- Seseorang harus dapat memutar file audio pada versi terbaru VLC [pada saat menulis jawaban Anda];
- Program ini tidak memerlukan keacakan yang kuat secara kriptografis,
rand
fungsi atau membaca/dev/rand
tidak apa-apa; - Program harus dapat menghasilkan audio setidaknya 1 jam, setidaknya secara teori (artinya batasan sistem seperti file maksimum tidak berlaku);
- Skor Anda adalah jumlah byte dalam kode sumber Anda, ditambah semua bonus yang berlaku;
- Menggunakan pihak ketiga, perpustakaan eksternal tidak apa-apa;
- Program harus bekerja tanpa akses ke Internet.
Bonusnya adalah:
- -15%: Bolehkan untuk menentukan format file audio (setidaknya dua pilihan; jumlah pilihan yang mungkin tidak mengubah skor);
- -10%: Izinkan untuk menentukan durasi file audio;
- -5%: Izinkan untuk menentukan bitrate file audio.
Pengaturan dapat disimpan dalam variabel, file, atau diberikan sebagai parameter baris perintah, pilihan Anda. Persentase dihitung dari jumlah byte asli, sebelum bonus diterapkan.
Jawaban:
MATLAB, 25
menulis file WAV baru ke disk yang disebut
a
. Ini memiliki tingkat sampel 8 kHz dan 16 bit per sampel dalam format integer yang ditandatangani. Data sumber didistribusikan secara seragam pada interval[0,1]
, yang dipetakan ke interval[0,32767]
setelah konversi ke format integer.MATLAB, 28 - 4 (10% + 5%) = 24
Saya tidak yakin apa yang dimaksud OP tentang bagaimana pengaturan dapat disimpan dalam variabel, tetapi saya menafsirkannya dengan cara yang menguntungkan untuk kasus ini. Berasumsi bahwa:
Kecepatan bit yang diinginkan (dalam bit / detik) disediakan oleh pengguna dalam variabel
b
. Bit per sampel dikode keras pada 16.Durasi file yang diinginkan (dalam sampel) diberikan dalam variabel
d
.Hasilnya adalah:
MATLAB, 16 - 4 (15% + 10%) = 12
Menambahkan lapisan kebatilan dalam mengejar bonus, saya membuat asumsi lain: fungsi yang diinginkan untuk digunakan untuk menampilkan file harus ditentukan dalam variabel
f
. Kemudian kode tersebut disederhanakan menjadi:Nilai yang diizinkan untuk fungsi ini adalah:
atau
Setiap fungsi akan menyebabkan cuplikan di atas untuk menulis file dengan format yang sesuai (WAV atau
.au
) pada laju sampel 8 kHz dengan durasi yang ditentukan. Saya melepas bonus untuk spesifikasi bitrate di sini, karenaauwrite
standarnya adalah 8 bit per sampel, bukan 16 sepertiwavwrite
halnya. Saya tidak melihat cara untuk menyelaraskan keduanya tanpa menggunakan lebih banyak karakter.sumber
Bash, 34
Jika Anda tidak ingin 'keacakan' hard drive, (jauh lebih lambat)
SPIN, 28
sumber
/dev
.Mathematica 52 - 5 = 47
g
mengekspor file .wav derau putihs
detik dan 8000 bps.Contoh: file white noise 6 detik diekspor.
sumber
Supercollider, 89 - 10% = 80,1 byte
Sayangnya, meskipun sengaja dibuat untuk generasi suara / audio, bahasa ini tidak akan menang di sini. Tapi ini penampilan pertama Supercollider di Code Golf, jadi itu keren!
Kiriman ini hilang terutama karena pengaturan perekaman dan mewujudkannya adalah proses verbal karena desain klien / server bahasa ini. Namun, ini adalah bahasa yang keren dengan banyak daya dalam kode yang sangat sedikit ketika Anda memintanya hal hal yang lebih kompleks daripada sekadar white noise.
Durasi file diatur dengan mengubah nilai wait (). Saya bisa memasukkannya ke dalam variabel, tetapi benar-benar tidak ada gunanya karena Supercollider tidak memiliki stdio untuk berbicara tentang. Interaktivitas dalam memanipulasi kode langsung saat server masih diputar. Intinya, IDE adalah I / O (kecuali jika Anda membangun UI untuk kreasi Anda).
Ini versi golfnya:
Berikut adalah versi golf dengan opsi untuk merekam dalam aiff atau wav, dan tentukan format sampel (int16, int8, dan float adalah semua opsi). Sayangnya, bahkan dengan semua bonus, versi di atas tarif lebih baik. Ini akan menjadi 139 - 30% = 97,3 byte.
Dan ini adalah versi yang terakhir dari yang tidak diserang, sehingga Anda dapat melihat apa yang terjadi.
sumber
Bash + ALSA, skor: 44 (52 karakter - (10% + 5%) bonus)
Lebih panjang dari
bash
jawaban yang lain , tetapi menerima durasi dan bitrate. Juga menambahkan tajuk yang cukup benar ke file, sehingga harus cukup portabel:Simpan sebagai skrip,
chmod +x
dan jalankan:Catatan, output .wav adalah untuk stdout, sehingga harus diarahkan ke file.
sumber
C
127115 byteMayoritas kode menulis tajuk untuk file * .au. Ini mencetak file suara pseudorandom ke standar keluar.
Tingkat sampel dapat disesuaikan dengan mengubah
8000
.Durasi dapat disesuaikan dengan memukul
ctrl-c
kapan pun Anda ingin berhenti :-)sumber
JavaScript, 167 byte
PERHATIAN: Kurangi volume sebelum dijalankan. Kebisingan putih itu jahat
Jangan menghasilkan file, mungkin bukan yang diharapkan.
-4 Bytes retas kebisingan pemutaran di saluran kiri saja
sumber