Representasi presisi ganda desimal hanya dapat menjamin keakuratan 15 tempat desimal, sehingga pi diperkirakan sebagai:
3.141592653589793
Anda dapat melihat bahwa digit 3
ada di posisi 1, 10, 16
, digit 1
ada di posisi 2, 4
dll.
Tantangan
Tugas Anda adalah membuat program atau fungsi yang membuat angka ganda acak antara 0 dan 1, dan memetakan nilai-nilai nomor itu ke nilai pi. Anda melakukan ini dengan menempatkan angka-angka yang berbeda di angka acak di posisi digit itu di pi. Jika digit tidak ditemukan di pi, Anda akan melewati itu, dan setiap digit di pi yang tidak ada dalam angka acak akan diwakili oleh x
. Setiap nilai hanya dapat digunakan sekali, mulai dari kiri.
Beberapa contoh mungkin akan memperjelas hal ini. Dalam contoh berikut, angka pertama adalah pi, yang kedua adalah angka acak, dan yang terakhir adalah output yang diinginkan.
3.141592653589793
0.111111111111111
x.1x1xxxxxxxxxxxx
3.141592653589793
0.531000000000000
3.1xx5xxxxxxxxxxx
3.141592653589793
0.123456789123456
3.141592653x8x7xx
3.141592653589793
0.967552381459391
3.14159265358979x
Aturan:
- Fungsi tidak boleh mengambil input apa pun (pengecualian yang mungkin dijelaskan dalam poin-poin 3)
- Keluaran harus terdiri dari hanya string keluaran, dengan baris baru opsional (satu spasi tambahan juga diterima)
- Jika program Anda tidak memiliki nilai Pi bawaan, dan / atau RNG maka Anda dapat meng-hardcode Pi, dan mengambil nomor acak sebagai input. Anda tidak dapat membuat kode angka acak atau mengambil Pi sebagai input.
- Baik nilai hardcoded untuk Pi, dan 15 digit acak (Anda dapat melewati
0.
karena Anda tahu itu akan berada di antara 0 dan 1), akan dimasukkan dalam jumlah byte. - Jika bahasa Anda tidak memiliki ketelitian yang dibutuhkan, Anda dapat menggunakan ketelitian yang lebih rendah di bawah pembatasan berikut
- Digit Pi harus akurat hingga presisi yang Anda miliki
- Anda tidak dapat menampilkan nilai lebih dari yang Anda yakini benar, yaitu Anda tidak dapat menampilkan 15 digit jika presisi hanya memungkinkan 8 desimal akurat.
- Nilai hardcoded dari Pi akan dihitung sebagai 16 byte (Anda tidak perlu titik desimal), bahkan jika program Anda hanya mendukung 8 digit.
- Nilai input untuk angka acak akan dihitung sebagai 15 byte (Anda tidak perlu
0.
. Ini karena bahasa dengan presisi rendah seharusnya tidak memiliki keuntungan yang tidak adil. - Program harus mendukung presisi 5 desimal (setidaknya).
- Sunting: Untuk memvalidasi jawaban: Angka acak harus dicetak entah bagaimana, tetapi operasi ini tidak harus dimasukkan dalam jumlah byte. Jadi misalnya, jika memungkinkan untuk menyisipkan
print r
di akhir skrip, bagian itu tidak akan meningkatkan skor. - Anda tidak dapat mengurangi byte jika itu bagian dari operasi lain yang diperlukan. Yaitu jika kodenya
print pi, r
, maka Anda hanya bisa mengurangi, r
. - Jika Anda harus memasukkan bagian-bagian beberapa tempat dalam kode, harap sertakan kedua versi (yang mencetak nomor acak dan yang tidak dengan komentar seperti:
_p
dan_oNo
diperlukan untuk mencetak nomor acak._p
Lakukan xxx dan_oNo
lakukan yyy._p
dan_oNo
tidak akan dimasukkan dalam hitungan byte.
Kode terpendek dalam byte menang.
Papan peringkat
Cuplikan Stack di bagian bawah posting ini menghasilkan katalog dari jawaban a) sebagai daftar solusi terpendek per bahasa dan b) sebagai leaderboard keseluruhan.
Untuk memastikan bahwa jawaban Anda muncul, silakan mulai jawaban Anda dengan tajuk utama, menggunakan templat Penurunan harga berikut:
## Language Name, N bytes
di mana N
ukuran kiriman Anda. Jika Anda meningkatkan skor Anda, Anda dapat menyimpan skor lama di headline, dengan mencoretnya. Contohnya:
## Ruby, <s>104</s> <s>101</s> 96 bytes
Jika Anda ingin memasukkan beberapa angka dalam tajuk Anda (mis. Karena skor Anda adalah jumlah dari dua file atau Anda ingin membuat daftar hukuman penterjemah secara terpisah), pastikan bahwa skor sebenarnya adalah angka terakhir di tajuk:
## Perl, 43 + 2 (-p flag) = 45 bytes
Anda juga dapat membuat nama bahasa menjadi tautan yang kemudian akan muncul di cuplikan:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
0 < random < 1
atau 0 <= random <= 1
?