Kami melihat banyak tantangan di sini meminta fungsi untuk membuat urutan dari OEIS . Walaupun tantangan ini menyenangkan, sebagai seorang programmer saya melihat peluang untuk otomatisasi.
Tantangan Anda adalah membuat program yang mengambil indeks urutan (mis. A172141 ) dan beberapa bilangan bulat n (misalnya 7), dan menarik nilai yang sesuai dari halaman web yang sesuai.
I / O
Seperti disebutkan, program Anda harus mengambil indeks urutan dan beberapa nilai n sebagai input dan output istilah ke-n dalam urutan itu. Anda menerima indeks apa pun dalam file-B urutan . Jika indeks lebih besar dari indeks terbesar yang tercantum dalam file-B Anda dapat membuang pengecualian atau output apa pun yang Anda pilih (ini tidak dalam kasus uji). Metode input dan output standar diizinkan.
Pembatasan penggunaan web
Anda tidak boleh mengakses situs web apa pun selain https://oeis.org dan http://oeis.org . Ini termasuk penyingkat url, situs web pribadi Anda, dan pertanyaan ini sendiri. Jika Anda ingin mengakses beberapa situs web lain dan Anda yakin tidak adil untuk mengizinkannya, Anda dapat meninggalkan komentar dan saya akan menengahi.
Mencetak gol
Ini adalah tantangan kode golf sehingga program dengan byte terkecil yang digunakan dalam kode sumbernya akan menang. Celah standar tidak diijinkan.
Uji Kasus
Dengan asumsi bahwa mesin Anda memiliki koneksi internet yang tepat dan server OEIS aktif dan menjalankan input dan output berikut harus sesuai.
A172141, 7 -> 980
A173429, 4 -> 276
A190394, 6 -> 16
A002911, 11 -> 960
A052170, 3 -> 24
A060296, 8 -> 3
A178732, 5 -> 27
A000001, 1 -> 1
A000796, 314 -> 3
A001622, 162 -> 8
A002206, -1 -> 1
Tip
- Saat mengakses file-B
http://oeis.org/b<A-number>.txt
akan mengarahkan ke file-B yang tepat.
oeis.org/A000796/b000796.txt
daripadaoeis.org/A000796/list
. Apakah fomer yang Anda maksud dengan file-B ? Dalam hal itu, menyebutkan offset agak berlebihan.Jawaban:
Bash + coreutils + w3m,
514542 byteTerima kasih kepada @EamonOlive untuk bermain golf 3 byte!
Contoh dijalankan
Bagaimana itu bekerja
w3m adalah browser web berbasis teks, yang menampilkan HTML dan teks biasa dalam format yang dapat dibaca. Tidak seperti itu curl , ini mengikuti pengalihan secara default (ini diperlukan, sejak
oeis.org/bxxxxxx.txt
pengalihan keoeis.org/Axxxxxx/bxxxxxx.txt
), tidak menghasilkan output yang menyimpang ke STDERR, dan memiliki nama tiga byte.Perintah
URL yang diinginkan, di mana
${1:1}
argumen baris perintah pertama tanpa karakter pertamanya.Output disalurkan ke perintah
yang mengekstrak output yang diinginkan.
s/^$2 //p
upaya untuk mengganti^$2
(mulai dari baris, diikuti oleh argumen baris perintah kedua, diikuti oleh spasi) dengan string kosong. Jika substitusi berhasil,p
cetak hasilnya. Setelah itu,d
tanpa syarat menghapus pola untuk mencegah sed dari mencetak seluruh input.sumber
oeis.org/b${1:1}.txt
alih-alihoeis.org/$1/b${1:1}.txt
sed -n ...
, tapi itu akan menjadi satu karakter lagi.-n
, tanda kutip ganda dapat diganti dengan ruang yang diloloskan, untuk jumlah byte yang sama.Perl, 59 byte
Perlu
-M5.010
atau-E
dijalankan. Contohnya :Disimpan 8 byte berkat jawaban @Dennis , dengan menghapus
http://
, seperti yang dilakukannya.sumber
CJam, 36 byte
Contoh dijalankan
sumber
Python 2,
125118113 byte712 byte disimpan berkat LynnNah inilah saya pergi di masalah saya sendiri. Ini mungkin suboptimal tetapi saya pikir saya melakukan pekerjaan yang cukup baik. Ini menciptakan fungsi anonim yang mengambil string dan integer sebagai argumen dan mengembalikan string sebagai hasilnya atau melempar kesalahan jika indeks berada di luar jangkauan.
Ini dapat dibuat menjadi program penuh 124 byte.
Ini meminta pengguna untuk input. Pertama meminta indeks dan kemudian A-number dari urutan.
sumber
import re,urllib2 as u;lambda x,y:re.search("%d (.*)\n"%y,u.urlopen("http://oeis.org/b%s.txt"%x[1:]).read()).group(1)
lambda x,y:re.split("%d (.*)"%y,u.urlopen("http://oeis.org/b%s.txt"%x[1:]).read())[1]
masih lebih pendek!Python 3,
153146135 byte7 byte berkat FryAmTheEggman.
6 byte berkat Eamon Olive.
5 byte berkat Rod.
Sebut saja seperti ini:
Jalankan pada mesin di mana defaultnya adalah utf-8.
sumber
A%s
untuk%s
kemudian pertamaa[1:]
kea
?PHP 5.6,
9392 byteYang ini cukup lurus ke depan. Tarik halaman dengan
file()
, dapatkan garis di$line - 1
(0-indeks), meledak pada ruang dan cetak elemen array kedua dari itu.sumber
Nim ,
123115113 byteIni adalah ungkapan lambda; untuk menggunakannya, itu harus diteruskan sebagai argumen ke prosedur pengujian. Program lengkap yang dapat digunakan untuk pengujian diberikan di sini:
Mengharapkan input sebagai dua string. Contoh penggunaan:
Kami menggunakan
httpclient
'sgetContent
proc untuk mendapatkan Oei b-file, kemudian menggunakan regex untukfind
baris dengan indeks.find
mengembalikan sebuahOption[RegexMatch]
, jadi kami gunakanget
untuk mengambil nilai dariOption
.echo
secara otomatis dirangkai, jadi kami meninggalkan pengetatan.sumber
Mathematica + OEIS.m , 31
contoh penggunaan:
%[A172141,36]
Mathematica, 85
contoh penggunaan:
%["A002206",-1]
sumber
R,
9489 byteMenggunakan
sprintf
alih-alihpaste0
hasil dalam bytecount yang sama:Lima byte disimpan berkat plannapus .
sumber
url
, argumenfile
dariread.table
dapat menjadi URL sebagai string karakter.Clojure, 103
re-find
menemukan vektor kelompok regex pertandingan pertama, itu digunakan sebagai fungsi dan1
mendapatkan string pada posisi1
.read-string
mengkonversi string ke int. Saya tidak 100% yakin apakah regex ini selalu menemukan baris yang benar.sumber
R, 87 byte
Bangun string URL dengan regex alih-alih
paste
atausprintf
.sumber
Node.js +
request
, 109 byteMengambil ID urutan dan nomor.
sumber
Julia, 88 byte
Bermain golf dengan bantuan dari @Dennis!
Pastikan Anda telah
Requests.jl
menginstal sebelum menjalankan.sumber
ListSharp , 266 byte
Menyedihkan ketika bahasa yang dibuat untuk pengikisan web membutuhkan begitu banyak baris karena pernyataan bersarang di ListSharp adalah hal yang tabu
sumber