Kita semua mendengar tentang pengujian kompiler menggunakan input yang dibuat secara acak. Tugas Anda adalah menulis program untuk menghasilkan program yang valid (termasuk tidak ada perilaku yang tidak ditentukan) dalam bahasa favorit Anda. Bahasa program yang dihasilkan tidak harus sama dengan bahasa program yang dihasilkan.
Program Anda akan menerima integer sebagai argumen yang dapat Anda gunakan sebagai seed untuk generator nomor acak Anda. Program yang dihasilkan harus berbeda secara struktural (diberikan benih yang berbeda) bukan hanya nama variabel atau konstanta yang berbeda.
Contoh:
$ ./generate 1
int main() { return 0; }
$ ./generate 2
#include <math.h>
int main() { return (int) pow(4, 3); }
Harap sertakan beberapa output dalam jawaban Anda.
Solusi terpendek menang. Saya akan memberikan bonus kecil berdasarkan jumlah suara, jadi silakan pilih solusi paling kreatif.
sumber
main(seed) { return 4; // Chosen by dice roll - Guaranteed to be random }
ReferensiJawaban:
Python → Brainf * ck (185
223233255285287303karakter)Kode
math.ceil
(tidak benar-benar diperlukan).Contohnya
Sebenarnya mencari tahu apa yang dilakukan program BF yang tersisa sebagai latihan untuk pembaca.
sumber
if o: s+=0(NL)else: s+='['+b()+']'
Python -> Piet,
385345 charDimungkinkan untuk menghasilkan program Piet dengan ini. Saya bisa saja berhenti pada piksel acak, tetapi saya ingin membuat program "menarik". Fungsinya
m
melukis sebuah piksel warna, dan secara rekursif melangkah ke masing-masing tetangga piksel tersebut. Ada cara-cara yang lebih baik untuk menggambar gumpalan acak, tetapi ini disesuaikan untuk mengakhiri dalam sejumlah langkah yang wajar, jadi itu cukup baik untuk golf. Fungsi iniR(w,h,n)
menarik n gumpalan acak ke gambar putih ( w x h ), dan mencetak hasilnya dalam format PPM.Saya terutama bangga dengan cara saya menghasilkan warna - untuk pilihan acak
0 <= c < 20
,adalah kode desimal untuk warna yang valid dalam palet Piet dengan cara a kode Gray single-track . Artinya, setiap warna diwakili oleh 3 bit yang berdekatan, dan setiap irisan
'0003...0'[c:c+3]
mewakili warna yang berbeda. Karena ini bukan daftar lengkap 27 kata pada 3 huruf, saya benar-benar beruntung menemukan kode Gray.Output sampel, dihasilkan oleh perintah
R(30,40,500)
Tanpa impor, saya dapat menuliskannya sebagai 1-liner yang tepat (bebas koma):
tapi ini sangat lambat (dan hampir 100 karakter lebih lama) ... meskipun saya tidak sepenuhnya yakin mengapa (dan tidak terlalu cenderung untuk mencari tahu).
sumber
Python -> Python, 135 karakter
Menghasilkan sedikit evaluasi ekspresi acak, seperti ini:
sumber
Python -> HQ9 +: 108 karakter
sumber
PHP, 352 karakter
Menghasilkan kode PHP dalam PHP.
Saya memutuskan untuk tidak peduli tentang panjang, tetapi sebaliknya menginginkan solusi yang menarik dan beragam. Ini jawaban saya untuk itu.
Kode
Tidak disatukan
Contoh
sumber
scala: 1543 (scala => scala)
Saya memiliki variabel (x, y, z), fungsi (mul, tambah, neg, abs), nilai, dan tanda kurung seimbang.
Seperti yang Anda lihat, ini bukan golf. Karena, itu tidak akan membuat saya dekat dengan solusi lain, tetapi masalahnya adalah, bahwa variasi lebih banyak biaya lebih banyak. 3 variabel, 4 fungsi dapat dengan mudah direduksi menjadi dua, misalnya.
Menghasilkan beberapa sampel:
Menguji yang terpanjang:
res6: Int = -5425
sumber
Perl -> shell: 66 karakter
Mungkin sedikit di luar topik, tapi mungkin begitu.
sumber
Ruby → Brainfuck (
110107 karakter)Pemakaian
Menghasilkan program brainfuck yang dapat dieksekusi.
Semacam penipuan tanpa malu dari ESultanik, jadi saya akan memuji dia untuk ide itu.
sumber
Javascript -> Brainf * ck: 119 karakter
Sampel I / O:
Kode pasti bisa lebih pendek, tetapi beberapa hal akan, IMHO, membuatnya kurang menarik. Tetapi jika orang lain membuat program yang lebih pendek, saya akan mengurangi lebih banyak.
sumber
Python -> Python, 148 karakter
Lebih lama dari entri Python lainnya dengan mengorbankan menjadi (secara subyektif) sedikit lebih menarik.
Ini mencetak atribut yang sangat bersarang dari objek bawaan.
sumber
PowerShell, menghasilkan PowerShell - 43
Dalam semangat solusi Keith:
menghasilkan ekspresi acak dari penambahan dan pengurangan:
sumber
gcm|random -c @args|% na*
:)Python -> Fractran (117)
sumber
Bahasa Pembuat Game -> Arduino atau Ti84-Basic, 6 3 karakter
Penjelasan:
a=argument0
Masukkan input ke dalam variabela
if a mod 2
Pada dasarnya, separuh kemungkinan programnya adalah Arduino, setengah Ti-Basic 84Program Arduino mengeluarkan hal-hal acak pada interval acak, melewatkan hal-hal acak secara acak.
Program Ti-Basic menggambar garis horizontal seperti orang gila.
Juga, ada bonus - program yang dihasilkan sudah golf! Tidak yakin apakah itu akan membantu ...
sumber
Perl -> HQ9 + (42 Karakter)
Contoh input
Keluaran
sumber
JavaScript -> Javascript (44 karakter)
Dan dengan 43 karakter, ia dapat menjalankan program yang dihasilkan alih-alih menampilkan sumbernya:
Contoh:
Seed: 5
Eksekusi 3 kali:
sumber