Di Basis-10, semua kuadrat sempurna berakhir dengan 0 , 1 , 4 , 5 , 6 , atau 9 .
Di Basis-16, semua kuadrat sempurna berakhir dengan 0 , 1 , 4 , atau 9 .
Nilknarf menjelaskan mengapa ini dan bagaimana mengerjakannya dengan sangat baik dalam jawaban ini , tetapi saya juga akan memberikan deskripsi singkat di sini:
Saat menguadratkan nomor Base-10, N , digit "yang" tidak terpengaruh oleh apa yang ada di digit "puluhan", atau digit "ratusan", dan sebagainya. Hanya "orang-orang" digit di N mempengaruhi "yang" digit di N 2 , sehingga cara mudah (tapi mungkin tidak golfiest) untuk menemukan semua kemungkinan digit terakhir untuk N 2 adalah untuk menemukan n 2 mod 10 untuk semua 0 <= n < 10 . Setiap hasil adalah kemungkinan digit terakhir. Untuk Base-m, Anda dapat menemukan n 2 mod m untuk semua 0 <= n < m .
Tulis sebuah program yang, ketika diberi input N , mengeluarkan semua digit terakhir yang memungkinkan untuk kuadrat sempurna di Base-N (tanpa duplikat). Anda dapat mengasumsikan N lebih besar dari 0 , dan bahwa N cukup kecil sehingga N 2 tidak akan meluap (Jika Anda dapat menguji sampai N 2 , saya akan memberi Anda jumlah poin brownies yang terbatas, tetapi ketahuilah bahwa nilai tukar poin brownies ke poin nyata adalah infinity ke satu).
Tes:
Input -> Output
1 -> 0
2 -> 0,1
10 -> 0,1,5,6,4,9
16 -> 0,1,4,9
31 -> 0,1,2,4,5,7,8,9,10,14,16,18,19,20,25,28
120 -> 0,1,4,9,16,24,25,36,40,49,60,64,76,81,84,96,100,105
ini kode-golf , jadi aturan standar berlaku!
(Jika Anda merasa ini terlalu mudah, atau Anda menginginkan pertanyaan yang lebih mendalam tentang topik ini, pertimbangkan pertanyaan ini: Penutup minimal pangkalan untuk pengujian kuadrat residu kuadrat ).
sumber
Jawaban:
Jelly , 5 byte
Cobalah online!
Penjelasan
sumber
Google Sheets,
525147 byteDisimpan 4 byte berkat Taylor Scott
Lembar akan secara otomatis menambahkan 4 tanda kurung tutup ke akhir rumus.
Itu tidak mengembalikan hasil dalam urutan menaik tetapi mengembalikan hasil yang benar.
sumber
)
s untuk -4 byte05AB1E , 5 byte
Cobalah online! atau sebagai Test Suite
sumber
s
kerjanya di sini? Apakah input diulang?s
adalahpop a,b; push b,a
. Ketika sebuah perintah mencoba mengeluarkan sesuatu dari stack dan tidak ada lagi yang tersisa, input selanjutnya digunakan. Jika tidak ada lagi input, input terakhir digunakan ( ini adalah contoh ). Dalam hal ini saya bisa menggunakan¹
yang mendorong input pertama, tetapis
berfungsi lebih baik untuk test suite.Ln¹%ê
setara di sini.s
.Swift ,
47 3532 * byte* -3 terima kasih kepada @Alexander.
Mungkin pertama kali dalam sejarah Swift
tiesmengalahkan Python?Cobalah online!
Penjelasan
(0..<m).map{}
- Ulangi kisaran[0...m)
dan petakan hasil berikut:$0*$0%m
- Kuadrat dari setiap bilangan bulat modulo basism
.Set(...)
- Menghapus duplikat.m in
- Menetapkan basis ke variabelm
sumber
C #, 63 byte
Cobalah online!
sumber
JavaScript (ES6), 52 byte
Uji kasus
Tampilkan cuplikan kode
Versi non-rekursif,
6058 byteDisimpan 2 byte berkat @ThePirateBay
Uji kasus
Tampilkan cuplikan kode
sumber
m=>(a=[...Array(m).keys()]).filter(v=>a.some(n=>n*n%m==v))
Pyth, 6 byte
Cobalah online
Bagaimana itu bekerja
sumber
Brachylog ,
109 byteCobalah online!
Penjelasan
sumber
{>≜^₂;?%}ᵘ
sebagai alternatif ... kemudian saya menyadari ada angka negatif juga. > _ <≜
.>
masih akan menjelaskan angka negatif afaik.Japt ,
76 byteMenguji
1 byte disimpan berkat Oliver
Penjelasan
Input bilangan bulat implisit
U
.Buat array bilangan bulat dari
0
hinggaU-1
, inklusif, dan berikan masing-masing fungsi.Kotak.
Modulo
U
.Dapatkan semua elemen unik dalam array dan secara implisit menampilkan hasilnya.
sumber
Dz%UÃâ
tampaknya berfungsi dengan baik.Python 3 ,
403937 byte-1 byte terima kasih kepada Tn. Xcoder. -2 byte berkat Business Cat.
Cobalah online!
sumber
n**2
dengann*n
?range(m)
sudah cukupSebenarnya , 11 byte
Cobalah online!
Penjelasan:
sumber
CJam , 12 byte
Blok anonim menerima nomor dan mengembalikan daftar.
Cobalah online!
Penjelasan
sumber
{:X{_*X%}%_&}
untuk 13 byteHaskell , 45 byte
-4 byte dari Anders Kaseorg
Cobalah online!
sumber
f m=nub$map((`mod`m).(^2))[0..m]
sama panjangnya, kecuali ada sintaks yang licik untuk menghilangkan tanda kurung tambahan.MATL ,
65 byte-1 byte terima kasih kepada @LuisMendo
Cobalah online!
sumber
Oktaf , 27 byte
Cobalah online!
sumber
Mathematica, 30 byte
Cobalah online!
sumber
JavaScript (ES6), 48 byte
43 byte jika mengembalikan
Set
bukan array dapat diterima.sumber
Scala ,
3230 bytePenggunaan sederhana tip mudah dari OP.
Cobalah online!
-2 byte terima kasih kepada @MrXcoder, dengan prioritas (tidak perlu
()
sekitar*
operasi )Bertanya-tanya: apakah ini mungkin secara implisit memberitahu kompiler untuk memahami hal-hal seperti
(0 to n-1)map(x=>x*x%n)toSet
(tanpa harusimport scala.language.postfixOps
)?sumber
(0 to n-1).map(x=>x*x%n).toSet
selama 30 byte. Eksponensial memiliki prioritas lebih tinggi daripada modulo.Haskell , 44 byte
Cobalah online!
sumber
Retina , 70 byte
Cobalah online! Peringatan: Lambat untuk input besar. Versi 72 byte yang sedikit lebih cepat:
Cobalah online!
sumber
Clojure, 40 byte
sumber
Perl 6 , 19 byte
Menguji
Diperluas:
sumber
Pyth , 13 byte
Coba online.
Usaha yang lemah untuk menjelaskan:
Untuk mengurutkan output, masukkan sebuah
S
di sisi mana saja dari{
Saya pikir harus ada cara yang lebih pendek ...
sumber
map
adalah temanmu!Python 2 , 59 byte
Cobalah online!
sumber
PowerShell , 35 byte
Cobalah online!
sumber
R , 28 byte
Cobalah online!
sumber
Rubi ,
3130 byteCobalah online!
sumber
PHP , 53 byte
Ulangi dari 0 ke nomor input, menggunakan
n^2 mod base
rumus untuk menandai nomor yang telah digunakan. Itu pergi ke posisi itu dalam sebuah array, memeriksa apakah sudah bertambah dan mengeluarkannya jika belum. Itu kemudian bertambah setelah itu sehingga nilai duplikat tidak bisa dicetak.Cobalah online!
sumber
8 ,
138131 byteKode
Penjelasan
[]
- Buat array outputswap dup >r
- Simpan input untuk digunakan nanti( 2 ^ r@ n:mod a:push ) 1 rot loop
- Hitung ujung kuadratrdrop
- Bersihkan r-stack' n:cmp a:sort
- Urutkan susunan keluaran' n:cmp >r -1 a:@ swap ( tuck r@ w:exec ) a:filter rdrop nip
- Singkirkan duplikat berturut-turut dari arraySED (Stack Effect Diagram) adalah:
a -- a
Penggunaan dan contoh
sumber
Perl 5 , 41 + 1 (-n) = 42 byte
Cobalah online!
sumber