Tugas Anda adalah menulis sebuah program, fungsi, atau snippet (ya, snippet diperbolehkan) yang hanya menghasilkan integer. Namun , Anda harus dapat memisahkan kiriman Anda ke dalam awalan yang juga menghasilkan bilangan bulat yang berbeda. Anda tidak dapat menggunakan byte yang muncul di awalan sebelumnya. Sebagai contoh, kita dapat memiliki awalan:
1 # 1 (Now we can't use 1)
1-6 # -5 (Now we can't use - or 6)
1-6/3 # -1 (Now we can't use / or 3)
1-6/3+0xA # 9 Final submission
Aturan
- Tujuan Anda adalah membuat untuk mencoba dan membuat bilangan bulat paling unik, sekaligus menjaganya tetap mendekati nol.
- Sistem penilaian adalah
((number of unique integers)**3)/(sum of absolute values)
, di mana semakin tinggi skor Anda, semakin baik. Contoh di atas skor .
- Sistem penilaian adalah
- Setidaknya harus ada dua bilangan bulat unik (tidak ada pembagian dengan nol!)
- Harap format jawaban Anda mirip dengan:
# Language, \$(4^{3})/16 = 4\$
1-6/3+0xA (the full program)
- Sebutkan jika kiriman Anda terdiri dari cuplikan yang mengevaluasi nilai, fungsi, atau program lengkap.
- Sebutkan setiap awalan dan (opsional) penjelasan untuk cara kerjanya.
number
code-challenge
restricted-source
Jo King
sumber
sumber
print 123-len(open(__file__).read())
diikuti#
kemudian satu dari setiap byte yang tidak digunakan sejauh ini (kecuali beberapa karakter kontrol), dengan awalan memotong byte tersebut. Sesuaikan 123 dengan pusat apa pun kisaran output sekitar 0. Untuk skor yang lebih baik, bagian non-komentar dari program dapat ditulis ulang hanya menggunakan 7 karakter berbeda yang bersifat universal untuk Python. Apakah ini semua valid?Jawaban:
TI-BASIC (TI-84 + CE),2383/14161=952.0
256 byte dalam TI-BASIC memecah dengan demikian:
"
,→
karakter, dan baris baru yang istirahat string.String berisi semua 237 byte yang diizinkan dalam kategori pertama yang belum masuk
118-length(
.Program ini menghitung 238 bilangan bulat yang berbeda, mulai dari 118 ke -119. Skor karenanya2383∑118n=−119|n|=952.
sumber
mean({1,2,3
, yang akan melengkapimean({1,2,3})
. string juga selesai:Disp "Hi!
selesai untukDisp "Hi!"
. Oleh karena itu kutipan penutupan akhir tidak perluvim, 14³ / 53 = 51.77
Cobalah online! (semua awalan)
Kerusakan:
sumber
<esc>
mewakili kunci keluar dan<c-char>
mewakili ctrl + charBahasa , 256³ / 16384 = 1024
Kode sumber solusi dapat dijelaskan sebagai berikut:
Setiap run byte identik yang dikombinasikan dengan run sebelumnya merupakan awalan, dan program lengkapnya adalah semua string yang dijelaskan di atas digabungkan.
Ini adalah skor optimal. (Program-program mencetak semua angka dari -127 hingga 128 inklusif.)
Untuk membuat jawaban ini, pertama, saya menyalin jawaban Java di sini untuk menghasilkan program brainfuck untuk mencetak string. Saya menjalankannya dengan
main
fungsi ini :Lalu, saya menjalankan skrip Ruby ini untuk menghasilkan teks yang dapat dibaca manusia yang ditampilkan di sini:
Program terbesar adalah 3594571896764310192036774345469579167648804468538578264427 byte panjang (dan cetakan
-90
).sumber
(Kredit ke utilitas yang menarik ini untuk konversi.) Yang di atas secara efektif mengevaluasi ke dalam kode berikut:
... yang membuat proksi yang mengubah panjang nama properti menjadi angka. Awalan pertama berakhir satu karakter setelah
.
, dan hanya menggunakan 6 karakter unik, tidak termasuk.$
. 63 irisan berikutnya menambahkan 63 karakter single-byte lainnya yang valid dalam nama properti objek JS. 44 irisan berikutnya menambahkan karakter valid dua byte yang terdiri dari byte yang tidak digunakan. Irisan akhir menambahkan&''
,|""**""
, dan,~{}
. Potongan pengembalian pertama-2
, kedua2
, kemudian-3
, kemudian3
,-4
,4
,-5
, dll hingga tiga irisan terakhir yang0
,1
, dan-1
.sumber
Untuk yang ini kami menggunakan potongan-potongan otak-otak sehingga kami peduli dengan nilai bukan apa yang mereka lakukan.
Program lengkap:
Awalan dan keluaran
Cobalah online!
Penjelasan
Ini mungkin jawaban terbaik yang bisa didapatkan oleh brain-flak karena kami telah menggunakan semua karakter yang dipikirkan Brain-flak, dan kami tidak dapat mengelompokkan angka yang mendekati nol.
Cuplikan pertama adalah
<>
,<>
mengubah tumpukan tetapi mengevaluasi menjadi nol, jadi kami mulai dengan nol. Dari sini kita tambahkan(())
ini bikin satu. Kita bisa saja melakukannya()
, karena itu juga satu, tetapi jika kita mendorong satu sekarang kita akan dapat mengingatnya nanti dengan{}
dan[]
. Ini adalah satu-satunya cara{}
dan[]
dapat menciptakan nilai jadi kami melakukannya. Karena ada satu hal di stack yang[]
dihitung sebagai 1, jadi kita kurangi 3 dari total dengan[[][][]]
membawa kita ke -2. Terakhir kami gunakan{}
untuk memunculkan yang kami dorong sebelumnya membawa kami ke -1.sumber
Setelah dua jam coba-coba akhirnya saya mendapatkan semua bilangan bulat dari
-4
ke+5
(dan7
).Ini adalah cuplikan dengan cuplikan awalan berikut:
Cobalah online!
sumber
2*2
ke22&7
(-3 & 6 bukannya -3 & 4) untuk memperbaiki pengulangan itu*
.'
dan_
menggunakancmp(cmp,())
bukancmp('','_')
jika itu membantu.--[-1-1-1-1-1]
, tetapi itu tidak benar-benar meningkatkan skor Anda.Batch, 176³ / 7744 = 704
Awalan pertama meliputi titik dua dan menampilkan angka -88. Awalan berikutnya menghasilkan angka naik dan keluaran akhir program 87.
sumber
Pyth,( 249)3) / 15500 = 996.0
Semua karakter yang lolos adalah byte tunggal - Saya telah mempresentasikan program dalam bentuk ini untuk kemudahan penyalinan dan menempel. Link ini ini ke program lengkap tanpa karakter yang lolos; seperti yang dapat dilihat ada banyak placeholder untuk karakter yang tidak patut digunakan.
Pendekatan yang digunakan mirip dengan jawaban TI-BASIC lirtosiast , meskipun saya menulis jawaban saya sebelum menjelajahi entri lain. Kabelnya berfungsi sebagai berikut:
String dibuat dari setiap karakter byte tunggal selain 0 (NULL), 127 (backspace), dan karakter boilerplate (
-C\|l"
). Dengan begitu, setiap karakter string dapat dihapus satu per satu untuk menghasilkan string dengan panjang 248 hingga 0. Program-program ini menghasilkan kisaran [-124 - 124], dengan jumlah nilai absolut 15500.Kode dihasilkan menggunakan program ini :
Dan jumlah angka yang dihasilkan dari masing-masing program terpotong ditemukan dengan program ini :
sumber
Jelly , 984
Cobalah online!
Anda dapat melihat awalan (dipisahkan oleh baris ganda ganda) di sini .
Angka-angka yang dicetak adalah, dalam urutan:
sumber
Python 2,113/ 53=25.1132075472
Awalan:
Tidak optimal, tetapi yang terbaik yang bisa saya temukan secara pribadi dengan struktur khusus ini.
sumber
Python 263/ 9=24
Berikut adalah awalan dan apa yang mereka hasilkan
sumber
Bersih , 403 / 400 = 160
Cobalah online!
Menentukan
n
yang menghasilkan-20, -19, ..., 18, 19
tergantung pada panjang jenisG
.Awalan terkecil
G
seperti:: G = G
, didahului oleh berbagai macam impor dan definisi.Awalan terbesar
G
seperti , juga didahului.:: G = GABCFHIJKMNOPQRUVWXYZcjkqxyz_0123456789`
sumber
Japt ,2453/ 15006=980.0163268026123
Cobalah online!
Seperti entri lainnya, gunakan panjang string. Karakter dalam cuplikan awal, juga
\r
(textareas tidak bermain bagus dengan ini) dan{
(karakter interpolasi string) dikecualikan dari string.Program pertama adalah
_Ê-122}$($"
, setiap program lebih panjang satu karakter dengan pengecualian saat Anda menambahkan\\
.sumber
122
dengan#z
tetapi itu tidak akan meningkatkan skor Anda.Python 3,( 63) / 12 = 18
Ini cuplikan.
Cuplikan awalan individu adalah:
Operator bitwise Python memperlakukan bilangan bulat negatif sebagai pelengkap dua dengan
1
s yang tidak terbatas di sebelah kanan, sehingga-5
diperlakukan sebagai...11111011
, yang ketika ORed dengan...000010
memberi...11111011
tidak berubah.sumber
Unggul,( 63) / 12 = 18
Prefix
tantangan tidak cocok dengan struktur rumus Excelsumber
Pesona rahasia , 117 3 /3422 = 468,034
Cobalah online!
Dan awalannya .
Mencetak [-58,58] inklusif.
Gunakan taktik yang sama seperti entri lainnya, menggunakan string yang semakin lama semakin panjang, mendapatkan panjangnya, mengurangi
B
(nilai desimal dari66
), dan mencetak hasilnya. Menggunakan karakter non-cetak(ditunjukkan dalam blok kode
€
karena tampaknya itulah yang€
dievaluasi dalam HTML) untuk memanfaatkan nilai byte0x80
(dan menggunakan yang tidak dapat digunakan0x00
) dan mencetak satu nilai lagi. Hanya nilai byte hingga 127 yang tidak dapat direpresentasikan dalam mode apa pun10
dan13
, karena mereka akan menyebabkan program menjadi dua baris dan tidak dibaca dengan benar oleh penunjuk instruksi.sumber
Arang ,
95³ / 2256 = 380.0421196³ / 2304 = 384Awalan pertama adalah 7 byte pertama dan menampilkan nomor
47
. Cobalah online! Awalan berikutnya menghasilkan angka-angka menurun dan keluaran program akhir-48
.Cobalah online! Sunting: Peningkatan skor sebesar 3,95789 berkat hanya @ ASCII.sumber