Terinspirasi oleh pertanyaan ini , tujuan Anda hari ini adalah untuk menyandikan URL di brainfuck.
Peramban saya telah diretas! Bilah lokasi telah berubah menjadi penerjemah brainfuck. Saya membutuhkan program yang mengubah URL menjadi program brainfuck. Komputer saya juga sangat lambat, jadi jika program brainfuck kecil lebih baik.
Oh dan saya hanya punya satu tab kerja yang terbuka, twitter saya. Jadi, Anda hanya dapat mengirim saya program itu dalam tweet.
Tulis sebuah program yang cocok dengan tweet (140 karakter) dalam bahasa apa pun yang menggunakan string sebagai input dan menghasilkan program brainfuck.
Program brainfuck ini akan dijalankan tanpa input dan akan menghasilkan output.
Output ini akan dimasukkan ke bilah lokasi Google Chrome, dan dieksekusi.
Jika perilaku Google Chrome identik dengan perilaku yang akan Anda dapatkan dengan memasukkan string input dari # 1, maka solusinya valid. Pengalihan dengan penyingkat URL dianggap sebagai perilaku yang berbeda - tinggal setidaknya di domain yang sama.
Anda dapat menganggap juru bahasa brainfuck memiliki bilangan bulat bertanda presisi tak terbatas di setiap sel dan jumlah sel yang tak terbatas.
Skor Anda ditentukan oleh jumlah panjang program brainfuck yang dihasilkan untuk menyandikan serangkaian URL berikut:
https://www.google.com/
/codegolf/47895/
http://www.golfscript.com/golfscript/examples.html
http://en.wikipedia.org/wiki/Percent-encoding
ftp://ftp.freebsd.org/pub/FreeBSD/
https://github.com/isaacg1/pyth/blob/master/doc.txt#L92
http://ftp.gnu.org/non-gnu/nethack/nethack-3.4.0.tar.gz.back-RSN.README
Kemenangan skor terkecil.
http://www.google.com/
atau apakah akan pernah begitu sajagoogle.com
? (Keduanya berlaku sejauh menyangkut Google Chrome, tetapi daftar Anda hanya berisi formulir lengkap) PS Saya hampir memiliki keinginan untuk menulis ekstensi untuk chrome yang melakukan ini ...http://www.google.com/
program brainfuck menghasilkan keluaran Meigoogle.com
,www.google.com
, dll, karena mereka semua hasil di halaman yang sama. Tetapi misalnyaftp://ftp.freebsd.org/pub/FreeBSD/
tidak sama denganftp.freebsd.org/pub/FreeBSD/
.ftp://ftp.freebsd.org/pub/FreeBSD/
memang sama denganftp.freebsd.org/pub/FreeBSD/
di Google Chrome. Ini membuat tantangannya sedikit lebih mudah dari yang saya maksudkan, tetapi itulah hidup. Saya tidak akan mengubah persyaratan, jadi aman untuk menanggalkan apa pun sebelumnya://
.Jawaban:
Pyth - 118 byte, skor: 154 + 567 + 597 + 620 + 530 + 875 + 1092 =
6630662346534435Sekarang menggunakan faktor perkalian algo!
Ini adalah algoritma yang cukup sederhana, meskipun sedikit lebih baik daripada yang di atas.
Saya berencana untuk menggunakan Pyth, tetapi dengan algoritma Python saat ini cocok <140 byte.Pertama-tama menghapus
http://
dengan menggunakansplit("//")
danwww.
dan/
pada akhirnya. Kemudian ia menggunakan fungsi min untuk memeriksa mana yang terbaik dari tiga opsi yang dipertimbangkan:+
atau-
untuk memperbarui nilai sel saat ini ke nilai sel yang diinginkan+
'sSaya kemudian selalu menempatkan
.
output masing-masing char.Penjelasan rinci tentang kode baru akan segera hadir. Saya agak suka bermain golf, terutama stripping
www.
dan/
pada akhirnya, tetapi saya tidak bisa diganggu karena saya 20 byte di bawah batas.Ini secara mengejutkan berfungsi pada
ftp://
url karena ini adalah chrome dan chrome secara otomatis membuatnyaftp.freebsd.org/pub/FreeBSD/
menjadiftp://ftp.freebsd.org/pub/FreeBSD/
Saya berencana menggunakan kamus berikutnya untuk menyimpan nilai sel dan melihat apakah karakter sudah dibuat dalam sel.
Perpanjangan Omnibox Brainfuck
Betul! Setelah saya melihat komentar @ BrainSteel, saya tahu saya harus membuatnya. Ini tidak mengambil alih seluruh omnibox, hanya ketika Anda melakukan bf, tab. Juga karena api omnibox aneh, itu tidak membiarkan saya meneruskan kode ke omnibox, saya harus menanganinya sendiri. Jadi saya melakukan
http://
pemeriksaan sendiri dan kemudian mengatur url tab.Karena saya merasa tidak perlu membayar $ 5 yang diperlukan untuk meletakkan ekstensi Anda di webstore, kalian harus menginstalnya secara manual. Cukup unduh kode pos dari sini: https://drive.google.com/file/d/0B0qkKIzGc0QiNzBzVUJjZkRIZ0k/view?usp=sharing , unzip, buka halaman ekstensi di chrome, klik kotak opsi mode dev di kanan atas, dan muat ekstensi yang belum dibongkar.
Semoga kalian menikmati! :)
sumber
ftp://
URL.ftp://
. Baiklah.C,
140134132138128139 Bytes263 + 816 + 911 + 955 + 827 + 1355 + 1779 =
72696906 bytePerbarui: kurang 6 byte, terima kasih kepada nutki!
Perbarui lagi, 128 byte. Kode secara signifikan kurang dapat dibaca. Sekarang mencoba untuk menghapus URL
ftp://
juga.Perbarui yang ketiga, pada 139 byte. Kode sedikit lebih mudah dibaca, dan menyingkirkan beberapa perilaku jahat yang tidak terdefinisi. Sekarang, jika nama situs didahului dengan
www.
, itu dilucuti. Saya berada di bawah 7k, tetapi saya pikir saya harus menyerah ke Maltysen dengan Pyth. Sudah selesai dilakukan dengan baik.Terurai sedikit:
Kode ini mengambil URL di baris perintah, dan bertobat ke dalam BF hanya menggunakan
.
,-
dan+
. Kode membuat upaya untuk melucuti stringftp://
,http://
,https://
, danwww.
sebelum mengkonversi ke BF. Berikut adalah daftar output dari output:sumber
for(;c-a;a+=c>a,a-=c<a)p(c>a?43:45)
harus bekerja.Brainfuck, 77 byte, Skor = 31647
Skor adalah jumlah
codepoint+4
untuk setiap karakter.(Menggunakan implementasi BF dengan EOF = 0.)
Contoh:
sumber
JavaScript (ES6) - 137 byte, skor - 7413
Ini hanya menggunakan ., +dan -. Anda dapat mengujinya di konsol Firefox.
Ini penghitung skor saya:
sumber