Tulis sebuah program yang, untuk angka 1 hingga 255, mencetak kode BF yang akan menghasilkan angka yang diberikan dalam beberapa byte array, ditambah baris baru.
Misalnya, empat baris pertama dari output bisa (dan kemungkinan besar akan) adalah:
+
++
+++
++++
Pemenang akan menjadi yang terkecil: source code + output
(dalam byte).
Klarifikasi & Revisi :
Program BF menggunakan sel pembungkus.
Program BF output harus diakhiri dengan satu-satunya sel non-nol menjadi sel yang berisi angka.
Program harus berupa output dalam urutan menaik.
Mengeluarkan program untuk 0 adalah opsional.
Pointer data negatif tidak diperbolehkan.
<
pada pointer pertama tidak akan melakukan apa-apa. (tinggalkan komentar jika akan lebih tepat untuk melemparkannya)
code-challenge
brainfuck
code-generation
Tukang batu
sumber
sumber
+>++++++++++.
program yang valid untuk input1
?Jawaban:
Perl 6 , 224 + 3964 =
58344188 byteCobalah online! (mungkin batas waktu. Ubah
^27-13
ke^25-12
untuk mempercepat sedikit dengan mengorbankan beberapa output tambahan)Output kode terpendek dalam bentuk
*>[*>*<]>*
, di mana masing*
- masing adalah sejumlah+
s atau-
s. Ada beberapa tweak tambahan seperti menghapus loop jika tidak diperlukan, serta trailing>
s.Sejauh yang saya tahu, output adalah yang paling golf untuk format khusus ini.
Penjelasan:
sumber
Malbolge , 28 743 bytes + 7 166 output
Tidak terlalu kreatif, bukan? Saya akan berusaha bermain golf bocah nakal ini.
Cobalah online!
sumber
Brainfuck,
777573 + 32894 = 329673296932971byteCobalah online!
output adalah yang paling sederhana
penjelasan:
sumber
Stax , skor
4751 4783(812 byte + 3971)Jalankan dan debug itu
Saya mulai dengan program yang diterbitkan optimal .
Saya menggunakan beberapa regex-fu, untuk membatasi ke program terpendek yang menggunakan paling banyak 2 sel. Lalu aku memangkas setiap trailing
<
atau>
karakter. Saya pikir ini adalah cara yang mungkin konservatif untuk memastikan bahwa tidak ada sel non-nol asing pada penghentian program. Kemudian saya menjalankannya melalui program stax eksperimental yang saya tulis untuk menghasilkan program stax untuk output tipe kolmogorov tetap.Program ini bekerja dengan berulang kali menerapkan penggantian string. Pada setiap langkah, ia mencari> 1 substring panjang yang paling sering terjadi dan menggantikannya dengan karakter yang tidak digunakan.
sumber
Arang ,
707698410 + 3627 =433443254037 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Matikan bantalan ruang.
Tetapkan string terkompresi besar yang terdiri dari jawaban @ JonathanAllen untuk
-128
..-15
tetapi dengan+
dan-
tanda - tanda diubah.Gambarlah segitiga
+
s dari sisi 14, yang menghasilkan hasil yang benar untuk 1 hingga 14. Kursor dibiarkan di sudut bawah, meskipun trailing return pada string yang dikompresi akan memindahkan output berikutnya ke baris berikutnya.Pisahkan string besar pada karakter kembali dan cetak setiap substring dalam urutan terbalik, sehingga menghasilkan hasil 15 hingga 128.
Naikkan garis sehingga hasil untuk 128 ditimpa oleh hasil yang dinegasikan untuk 128.
Loop melalui transposing string
+
dan-
kembali lagi sehingga mereka menghasilkan hasil yang benar untuk 128 hingga 241.Gambarlah segitiga
-
s dari sisi 14, yang menghasilkan hasil yang benar untuk 242 hingga 255.sumber
Jelly , 1224 + 3716 = 4940 byte
Program lengkap.
Cobalah online!
Bagaimana?
Hampir sepenuhnya kompresi terbaik saat ini pada esolang yang hanya menyisakan satu non-nol, dengan pita trailing dihapus. Mungkin ada cara untuk mengevaluasi subset dari program BF sedemikian rupa sehingga mereka akan berakhir dan menghasilkan solusi terpendek yang mengalahkan program naif ini. Mungkin juga ada cara untuk mengalahkan ini dengan program berbasis pola atau pembangunan faktorisasi yang lebih cerdas.
sumber
SuperMarioLang , 231 + 32894 byte
Cobalah online!
Ini pasti bisa lebih golf, karena hasilnya adalah yang paling mendasar untuk brainfuck, tapi saya butuh waktu seharian untuk menulis jawaban ini (ketiga anak saya hanya menyisakan sedikit waktu untuk saya), dan saya bangga bahwa setidaknya saya berhasil mencapai ini.
sumber
Python 2, 70 + 8428 = 8498
-2 Bytes Berkat A__!
-20 Bytes Terima kasih kepada Jonathan Allan!
-229 Bytes dengan meletakkan nomor di sel kedua
-1000ish bytes dengan beralih dari 16 ke 9
Cobalah secara Online!
Keluaran
sumber
Ruby 271 + 5363 = 5634
Cobalah online!
Mengkonversi setiap nilai ke basis terkecil yang tidak mengandung
noldigit awal di tempat lain, dan kemudian mengonversi dari basis itu. Nilai yang lebih besar dari 127 dihitung sebagai kebalikannya.Non-Wrapping, 221 + 5888 = 6109
Menggunakan pendekatan yang sama seperti di atas, dengan sel yang tidak membungkus.
Cobalah online!
sumber
JavaScript (Node.js) , 691 + 3627 = 4318
Menggunakan pendekatan yang sama dengan jawaban @ Neil's Charcoal , dan karenanya juga berdasarkan pada jawaban Jelly JonathanAllan's .
Cobalah online!
sumber
Keg Tidak Resmi 16 + 32895 = 32911 byte
Solusi dasar untuk bahasa golf. Ini adalah yang paling sederhana yang bisa saya pikirkan.
Cobalah online!
sumber
Ruby 23 + 32895 = 32918 byte
Sebagai garis dasar. Ini adalah solusi paling sederhana yang bisa saya pikirkan.
sumber
0
mungkin seharusnya1
(meskipun saya bertanya apakah kami dapat menghasilkan nol juga)256.times{|n|puts ?+*n}
tidak terlalu penting ...Retina 0.8.2 , 28 + 16640 = 16668 byte
Cobalah online! Termasuk output untuk
0
. Hanya keluaran menggunakan+
s hingga 127 dan-
s hingga 255.sumber
Scala , 95 + 16639 = 16734 byte
Cobalah online!
Jawaban sederhana yang jelas tidak akan menang. Hanya menggunakan fakta bahwa
-
operator (mengurangi satu byte) membungkus kembali ke 255.sumber
05AB1E , skor: 4848 ( kode sumber 1219 bytes + output 3629 bytes)
Output adalah pelabuhan @ Neil 's Charcoal jawaban , jadi pastikan untuk upvote dirinya juga!
Cobalah online.
Penjelasan:
Lihat ini ujung 05AB1E saya (bagian Cara kompres bilangan bulat besar ) untuk memahami mengapa
•тôm...ò´Θ•
adalah183...875
.sumber