Tantangan ini sedikit rumit, tetapi agak sederhana, diberi string s
:
meta.codegolf.stackexchange.com
Gunakan posisi karakter dalam string sebagai x
koordinat dan nilai ascii sebagai y
koordinat. Untuk string di atas, set koordinat yang dihasilkan adalah:
0, 109
1, 101
2, 116
3, 97
4, 46
5, 99
6, 111
7, 100
8, 101
9, 103
10,111
11,108
12,102
13,46
14,115
15,116
16,97
17,99
18,107
19,101
20,120
21,99
22,104
23,97
24,110
25,103
26,101
27,46
28,99
29,111
30,109
Selanjutnya, Anda harus menghitung kemiringan dan intersepsi y dari set yang telah Anda kumpulkan menggunakan Regresi Linier , inilah set di atas yang diplot:
Yang menghasilkan garis paling pas (0-diindeks):
y = 0.014516129032258x + 99.266129032258
Inilah baris paling cocok yang diindeks 1 :
y = 0.014516129032258x + 99.251612903226
Jadi program Anda akan kembali:
f("meta.codegolf.stackexchange.com") = [0.014516129032258, 99.266129032258]
Atau (Format masuk akal lainnya):
f("meta.codegolf.stackexchange.com") = "0.014516129032258x + 99.266129032258"
Atau (Format masuk akal lainnya):
f("meta.codegolf.stackexchange.com") = "0.014516129032258\n99.266129032258"
Atau (Format masuk akal lainnya):
f("meta.codegolf.stackexchange.com") = "0.014516129032258 99.266129032258"
Cukup jelaskan mengapa itu kembali dalam format itu jika tidak jelas.
Beberapa aturan klarifikasi:
- Strings are 0-indexed or 1 indexed both are acceptable.
- Output may be on new lines, as a tuple, as an array or any other format.
- Precision of the output is arbitrary but should be enough to verify validity (min 5).
Ini adalah kode-golf kemenangan byte-count terendah.
0.014516129032258x + 99.266129032258
?Jawaban:
MATL , 8 byte
Pengindeksan string berbasis 1 digunakan.
Cobalah online!
Penjelasan
sumber
Oktaf,
29262420 byteCobalah secara Online!
Kami punya modelnya
Berikut
y
adalah nilai string ASCIIs
Untuk menemukan parameter intersep dan slope kita dapat membentuk persamaan berikut:
begitu
!!s
mengkonversi string ke vektor yang panjangnya sama dengan string.Vektor yang digunakan untuk estimasi intersep.
1:nnz(s)
adalah rentang nilai dari 1 hingga jumlah elemen string yang digunakan sebagaix
.Jawaban sebelumnya
Untuk uji tempel kode berikut ke Octave Online
Fungsi yang menerima string sebagai input dan menerapkan estimasi model kuadrat terkecil biasa
y = x*b + e
Argumen pertama ols adalah
y
untuk itu kita memindahkan strings
dan menambahkan dengan angka 0 untuk mendapatkan kode ASCII-nya.sumber
/
, ide yang hebat!TI-Basic, 51 (+ 141) byte
String 1-based di TI-Basic.
Seperti contoh lainnya, ini menghasilkan persamaan garis paling cocok, dalam hal X. Juga, di Str2 Anda harus memiliki string ini, yaitu 141 byte di TI-Basic:
Alasan ini tidak dapat menjadi bagian dari program ini adalah karena dua karakter dalam TI-Basic tidak dapat secara otomatis ditambahkan ke string. Satu adalah
STO->
panah, tetapi ini bukan masalah karena itu bukan bagian dari ASCII. Yang lainnya adalah string literal ("
), yang hanya dapat diketikkan dengan mengetikkan ke dalamY=
persamaan dan menggunakanEqu>String(
.sumber
"
dengan meminta sebagai input pengguna dalam sebuah program juga, yang tidak membantu Anda di sini, tapi saya hanya ingin menunjukkan fakta itu. 2, saya tidak mengenali beberapa karakter yang ada di kalkulator. Saya bisa saja salah, tetapi misalnya, di mana Anda mendapatkan@
dan~
? Serta#
,$
, dan&
.R,
4645 byteMembaca input dari stdin dan untuk pengembalian test case yang diberikan (satu-diindeks):
sumber
lm(utf8ToInt(y<-scan(,""))~1:nchar(y))$co
x
variabel harus ditentukan sebelumnyalm
agar berfungsi.s
begitux=1:nchar(s);lm(charToRaw(s)~x)$co
menghemat beberapa byte. Saya juga tidak tahu apakah$co
secara teknis diperlukan, karena Anda masih mendapatkan koefisien intersep + tanpanyaPython,
8280 byte-2 byte terima kasih kepada @Mego
Menggunakan
scipy
:sumber
f=
.numpy.linalg.lstsq
rupanya berbeda dalam argumenscipy.stats.linregress
dan lebih kompleks.Mathematica, 31 byte
Fungsi tanpa nama mengambil string sebagai input dan mengembalikan persamaan aktual dari garis paling pas yang dimaksud. Misalnya,
f=Fit[ToCharacterCode@#,{1,x},x]&; f["meta.codegolf.stackexchange.com"]
kembali99.2516 + 0.0145161 x
.ToCharacterCode
mengonversi string ASCII ke daftar nilai ASCII yang sesuai; memang, secara default ke UTF-8 lebih umum. (Agak menyedihkan, dalam konteks ini, bahwa satu nama fungsi terdiri lebih dari 48% dari panjang kode ....) DanFit[...,{1,x},x]
merupakan bawaan untuk menghitung regresi linier.sumber
Node.js, 84 byte
Menggunakan
regression
:Demo
sumber
Sage, 76 byte
Hampir tidak ada golf, mungkin lebih lama dari jawaban Python golf, tapi ya ...
sumber
J , 11 byte
Ini menggunakan pengindeksan berbasis satu.
Cobalah online!
Penjelasan
sumber
JavaScript,
151148 byteLebih mudah dibaca:
Tampilkan cuplikan kode
sumber
0
daric.charCodeAt(0)
, dan 2 byte lainnya dengan memindahkank=...
grup koma dan meletakkannya langsung di indeks pertama dari array yang dikembalikan seperti[k=...,(d-k*b)/a]
Javascript (ES6), 112 byte
sumber
Haskell,
154142 byteTerlalu panjang untuk kesukaan saya karena impor dan nama fungsi yang panjang, tapi yah. Saya tidak bisa memikirkan metode Golf lain yang tersisa, meskipun saya tidak ahli dalam bidang impor golf.
Melucuti 12 byte dengan mengganti
ord
dan imporData.Char
oleh fromEnum berkat nimi.sumber
ord
denganfromEnum
dan menyingkirkannyaimport Data.Char
.SAS Macro Language, 180 byte
Menggunakan pengindeksan berbasis 1. Solusinya menjadi sangat bertele-tele ketika output hanya kemiringan dan mencegat.
sumber
Clojure, 160 byte
Tidak ada built-in, menggunakan algoritma iteratif yang dijelaskan pada artikel Perceptron . Mungkin tidak menyatu pada input lain, dalam hal ini menurunkan tingkat pembelajaran
2e-4
dan mungkin meningkatkan jumlah iterasi1e5
. Tidak yakin apakah algoritma non-iteratif akan lebih pendek untuk diterapkan.Contoh:
sumber
Maple, 65 byte
Pemakaian:
Pengembalian:
Catatan: Ini menggunakan perintah Fit untuk menyesuaikan polinomial dari bentuk a * x + b ke data. Nilai ASCII untuk string ditemukan dengan mengonversikan ke byte.
sumber