Kebanyakan nomor persegi memiliki setidaknya 1 jumlah persegi yang berbeda dengan yang mereka jarak Levenshtein persis 1. Untuk diberikan persegi , setiap persegi yang memenuhi kondisi ini disebut tetangga Levenshtein dari . Misalnya, adalah tetangga Levenshtein dari , karena hanya 1 sunting ( ) diperlukan. Namun, bukan tetangga Levenshtein dari , karena membutuhkan minimal 2 suntingan. Angka-angka yang memiliki 0s terkemuka ( ) bukan tetangga Levenshtein.
Tugas Anda adalah mengambil nomor kuadrat sebagai input dan output, dalam format apa pun yang masuk akal, daftar lengkap tetangga Levenshtein itu. Anda dapat memasukkan tetangga berulang dalam daftar, jika Anda mau, tetapi Anda tidak dapat memasukkan input asli, karena itu bukan tetangga Levenshtein itu sendiri.
Setiap format yang masuk akal harus mencakup semacam pemisah antara output, seperti ,
atau baris baru, dan dapat menampilkan karakter dengan nilai Unicode yang sesuai (yaitu brainfuck) daripada angka itu sendiri. Urutan output tidak masalah.
Input ini akan selalu berupa angka kuadrat, lebih besar dari . Program Anda seharusnya tidak memiliki batas teoretis , tetapi jika gagal untuk jumlah besar karena alasan praktis (misalnya di luar angka 32-bit), itu sama sekali baik-baik saja.
Jika input tidak memiliki tetangga Levenshtein, output harus dengan jelas mencerminkan ini, seperti tidak menghasilkan apa-apa, array / string kosong, bilangan bulat negatif, , dll.
Ini adalah kode-golf , jadi kode terpendek dalam byte menang.
Uji kasus
Ini adalah hasil untuk kuadrat hingga :
1: 4, 9, 16, 81
4: 1, 9, 49, 64
9: 1, 4, 49
16: 1, 36, 169, 196
25: 225, 256, 625
36: 16, 361
49: 4, 9
64: 4
81: 1, 841
100: 400, 900, 1600, 8100
121: 1521
144: 1444
169: 16, 1369
196: 16, 1296, 1936
225: 25, 625, 1225, 2025, 4225, 7225
256: 25
289: 2809
324: 3249
361: 36, 961
400: 100, 900, 4900, 6400
Selain itu, 1024
tidak memiliki tetangga, jadi ini adalah ujian yang baik.
2025
.32 * 32 = 1024
tidak memiliki tetangga Levenshtein persegi.1024
tidak memiliki tetangga Levenshtein, saya akan mengedit contoh itu diJawaban:
05AB1E ,
11 106 byte-4 terima kasih kepada Grimy !! (kotak pertama daripada mencari kotak menyimpan 3; gunakan 10 ^ n menyimpan 1)
Mengambil bilangan bulat, mengeluarkan daftar, mungkin kosong, daftar
Cobalah online! - Ini gila-lambat karena
°
, jadi tidak ada gunanya mencobanya bahkan untuk9
.Atau Coba versi yang sedikit lebih cepat - Yang ini malah menambahkan delapan dengan
8+
kemudian menggunakan pendekatan yang sama.Bagaimana?
sumber
9s«
11-byter Anda bisa saja9ì
. Jawaban to-the-point yang bagus! +1 dari saya.т+Lnʒ.L
. Ridiculously lambat 6:°Lnʒ.L
. Jauh memperlambat 5:∞nʒ.L
.∞nʒ.L
itu tidak dapat diterima sebagai jawaban karena kiriman harus diakhiri . Tidak terkait: TIO link Anda menggunakan versi 7-byte9ì
, yang ~ 100x lebih lambat daripadaT+
untuk jumlah besar. Komentar saya duluт+
(tambah 100) aman, tapi ternyata8+
sudah cukup dalam semua kasus.Retina 0.8.2 ,
142138 byteCobalah online! Penjelasan:
Untuk setiap digit, cobalah a) menghapusnya b) mendahuluinya dengan digit berbeda c) mengubahnya menjadi digit berbeda. Untuk saat ini, digit yang berbeda ditandai dengan a
#
.Untuk setiap digit potensial yang berbeda, gantikan setiap digit yang mungkin.
Hapus angka yang sekarang dimulai dengan nol.
Hapus semua nomor yang digandakan. (Ini hanya meninggalkan garis kosong.)
Konversikan ke unary.
Simpan semua angka kuadrat kecuali yang terakhir (yang selalu merupakan nomor input).
Konversi angka yang tersisa kembali ke desimal.
sumber
R ,
4241 byteCobalah online!
sumber
Python 2 ,
173167149148147144139138 byteCobalah online!
19 + 3 + 5 + 1 = 28! byte thx ke Jonathan Allan .
sumber
[p for p in...]
berlebihan. Kami dapat mengembalikan satu set (atau duplikat).'0'<v[:1]
bisa'1'<=v
. Ini jauh lebih lambat tetapirange(len(a)+1)
bisarange(n)
. Gunakan variabel untuki
dani+1
irisan untuk menghindari jumlah. Gunakan lambda. EDIT, simpan 48 dari yang sebelumnya.Oracle SQL, 93 byte
Uji dalam SQL * PLus.
sumber
PHP , 62 byte
Cobalah online!
Skrip ini mencetak Levenshtein tetangga input yang dipisahkan oleh
_
pemisah trailing, dan jika tidak ada tetangga yang ditemukan, tidak mencetak apa pun.Untungnya PHP memiliki built-in untuk jarak Levenshtein ! Skrip ini memotong semua angka kuadrat dari 1 hingga
input * 91
, karena semua tetangga Levenshtein yang valid (jarak 1) berada dalam kisaran itu. Kemudian cetak setiap angka dalam rentang yang memiliki jarak Levenshtein 1 dengan input.sumber
JavaScript (V8) ,
129 125123 byteMengambil input sebagai string. Mencetak tetangga Levenshtein ke STDOUT.
Cobalah online!
Berkomentar
sumber
print()
tetapi saya tidak menyadari bahwa Node juga memilikinya ...Jelly ,
5338 byteCobalah online!
Tidak ada built-in untuk jarak Levenshtein sehingga menghasilkan semua kemungkinan edit 1-jarak dan kemudian mengecualikan mereka dengan nol di depan dan hanya menyimpan kotak yang sempurna. Tidak memfilter duplikat (sebagaimana diizinkan).
sumber
Bahasa Wolfram (Mathematica) ,
6259 byteCobalah online!
Menggunakan terikat dari jawaban R .
sumber