Diberikan angka desimal k
, temukan bilangan bulat terkecil n
sehingga akar kuadrat n
berada dalam k
bilangan bulat. Namun, jaraknya harus nol - n
tidak bisa menjadi kuadrat sempurna.
Diberikan k
, bilangan desimal atau pecahan (mana yang lebih mudah bagi Anda), sehingga 0 < k < 1
, menghasilkan bilangan bulat positif terkecil n
sehingga perbedaan antara akar kuadrat n
dan bilangan bulat terdekat dengan akar kuadrat n
kurang dari atau sama dengan k
tetapi bukan nol .
Jika i
bilangan bulat terdekat dengan akar kuadrat n
, Anda mencari di n
mana pertama 0 < |i - sqrt(n)| <= k
.
Aturan
- Anda tidak dapat menggunakan implementasi nomor non-integer bahasa yang tidak memadai untuk meremehkan masalah.
- Jika tidak, Anda dapat mengasumsikan bahwa
k
tidak akan menyebabkan masalah dengan, misalnya, pembulatan titik mengambang.
Uji Kasus
.9 > 2
.5 > 2
.4 > 3
.3 > 3
.25 > 5
.2 > 8
.1 > 26
.05 > 101
.03 > 288
.01 > 2501
.005 > 10001
.003 > 27888
.001 > 250001
.0005 > 1000001
.0003 > 2778888
.0001 > 25000001
.0314159 > 255
.00314159 > 25599
.000314159 > 2534463
Input kasus uji yang dipisahkan koma:
0.9, 0.5, 0.4, 0.3, 0.25, 0.2, 0.1, 0.05, 0.03, 0.01, 0.005, 0.003, 0.001, 0.0005, 0.0003, 0.0001, 0.0314159, 0.00314159, 0.000314159
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
JavaScript (ES7),
5150 byteCobalah online!
(gagal untuk kasus uji yang membutuhkan terlalu banyak rekursi)
Versi non-rekursif,
5756 byteCobalah online!
Atau untuk 55 byte :
Cobalah online!
(tapi yang ini lebih lambat)
sumber
J ,
3929 byteNB. Versi yang lebih singkat ini hanya menggunakan rumus @ alephalpha.
Cobalah online!
39 byte, asli, kekuatan kasar
Cobalah online!
Menangani semua test case
sumber
Japt ,
1816 byte-2 byte dari Shaggy
Cobalah online!
sumber
%1 &&
tidak menyenangkan, tidak yakin apakah menggunakan solusi Arnauld akan lebih pendek (mungkin tidak)Z¬u1
keZ
pada awal fungsi.[1,-1]®*U²Ä /U/2 c ²-Z} rm
Pyth,
2221 byteCoba online di sini , atau verifikasi semua uji sekaligus di sini .
Port lain dari jawaban alephalpha yang luar biasa , pastikan untuk memberi mereka dukungan!
Sunting: Disimpan satu byte, terima kasih kepada Kevin Cruijssen
sumber
[-1,1]
dalam 3 byte juga, atau apakah Anda perlu membalikkan tambahan sehingga menjadi 4 byte? Jika memungkinkan dalam 3 byte, Anda bisa melakukannya, lalu ubah*_d
to*d
dan+d
to-d
. Juga, apakah Pyth tidak memiliki minimum bawaan, alih-alih menyortir & mengambil dulu?- ... d
, itu menghemat satu byte! Terima kasih[1,-1]
atau[-1,1]
. Saya membandingkan*d
dan-d
dengan jawaban 05AB1E saya, di mana saya tidak menggunakan peta, tetapi dapat mengurangi / melipatgandakan array 2D dari / dengan array 2D lainnya, jadi saya tidak perlu peta. Senang saya bisa membantu menghemat satu byte dalam kasus itu. :) Dan terima kasih atas inspirasi untuk jawaban 05AB1E saya.Perl 6 ,
343329 byte-1 byte terima kasih kepada Grimy
Cobalah online!
sumber
>=
dengan>
. Akar bilangan bulat bilangan bulat baik bilangan bulat atau tidak rasional, sehingga kasus kesetaraan terbukti tidak dapat terjadi.APL (Dyalog Unicode) , 27 byte SBCS
Cobalah online!
Kereta monadik mengambil satu argumen. Ini adalah port dari jawaban alephalpha ini .
Bagaimana:
sumber
C # (Visual C # Interactive Compiler) ,
898571 byteCobalah online!
-4 byte terima kasih kepada Kevin Cruijssen!
sumber
n++
di loop, sehingga-1
dapat dihapus dari pengembalian:k=>{double n=1,p;for(;Math.Abs(Math.Round(p=Math.Sqrt(0d+n))-p)>k|p%1==0;n++);return n;}
0d+
bisa dihapus, bukan?n
itu sudah dobelJava (JDK) ,
7370 byteCobalah online!
-3 bytes
terima kasih kepada @ceilingcatsumber
Java 8, 85 byte
Jawaban C # .NET dari Port EmbodimentOfIgnorance .
Cobalah online.
The
Math.round
alternatif bisa ini, tapi sayangnya itu sama byte-count:Cobalah online.
sumber
MathGolf , 16 byte
Cobalah online!
Bukan penggemar berat dari solusi ini. Ini adalah port dari solusi 05AB1E, yang didasarkan pada formula yang sama dengan sebagian besar jawaban yang digunakan.
Penjelasan
sumber
byte
kode golf? Karena beberapa karakter Anda memerlukan lebih dari satu byte. Saya tidak bermaksud memilih, saya benar-benar bertanya-tanya :)'ԓ'
karakter sebenarnya 2 byte, tetapi sisanya adalah karakter 1 byte.Keempat (gforth) , 76 byte
Cobalah online!
Penjelasan
Mulai penghitung pada 1 dan menambahkannya dalam satu lingkaran. Setiap iterasi itu memeriksa apakah nilai absolut dari akar kuadrat counter - bilangan bulat terdekat kurang dari k
Penjelasan Kode
sumber
Jelly , 13 byte
Saya belum berhasil mendapatkan apa pun yang lebih sulit daripada pendekatan yang sama seperti alephalpha
- naikkan jawaban Mathematica- nya !
Cobalah online!
Bagaimana?
sumber
Japt , 14 byte
Cobalah
sumber
Perl 5
-p
, 42 byteCobalah online!
sumber