Angka Kaprekar adalah angka n-digit k , ketika n pertama atau n-1 digit k ^ 2 ditambahkan ke angka kedua n digit N ^ 2, hasilnya adalah N.
Contoh:
9^2 = 81. 8+1 = 9.
45^2 = 2025. 20+25 = 45.
297^2 = 88,209. 88+209 = 297
Urutan Kaprekar dimulai pada 1.
Tulis sebuah program yang menghitung dan mengeluarkan angka pertama n Kaprekar, dengan n berada dalam kisaran, tetapi tidak terbatas pada kisaran, dari 1 hingga 100. Setiap angka Kaprekar harus dipisahkan dengan spasi putih dan tidak ada yang lain.
Lebih banyak angka Kaprekar dapat ditemukan di sini untuk memeriksa program Anda, tetapi sumber daya ini TIDAK DAPAT digunakan dengan cara apa pun untuk membantu perhitungan - dengan kata lain, tidak ada penyandian kode, membaca dari sumber ini, atau menggunakannya dalam eksploitatif lainnya cara - semua angka harus dihasilkan oleh program Anda.
Kode terpendek menang.
n
paling sedikit 100.Jawaban:
Perl - 63 byte
Menghitung shebang sebagai satu byte. Input diambil dari
stdin
.Ini memiliki runtime yang dapat diterima untuk n ≤ 50 , setelah itu agak lambat.
Penggunaan sampel:
sumber
C,
109106n
hingga 17 tidak masalah untuk menghapuslong long
,1
konyol ...sumber
(i-i*i/x-i*i%x)||printf(...)
,.x
dani
pada lingkup global alih-alih difor
loop untuk menyimpan beberapa karakter.Mathematica
144154Uji
sumber
Javascript 96
Keluaran:
sumber
for(i=0,n=prompt(s='');n;i++){t=''+i*i;if(t.substr(0,l=t.length/2)==i-t.substr(l))n--,s+=i+' '}s
python - 98
Saya menggunakan beberapa irisan python yang bagus untuk mencukur beberapa karakter.
sumber
C # - 255 Karakter.
x adalah jumlah angka Kaprekar yang ingin Anda temukan kode. Ini telah diuji dalam kisaran 1 hingga 100 tetapi harus mendukung lebih dari ini. 100 angka membutuhkan dua dan seperempat jam untuk kembali walaupun 50 pertama hanya membutuhkan sekitar 1 detik - semuanya melambat secara bertahap setelah itu.
Keluaran:
Meletakkan kode ini adalah sebagai berikut;
Saya ingin tahu apakah ini dapat dipersingkat lebih lanjut.
sumber
C,
907675 bytesumber
Python 2.7, 144 (termasuk baris baru)
Output untuk c = 10:
Output untuk u = 20:
sumber
R, 99 karakter
Dengan
i
menjadi setengah jumlah digit yangk^2
dibulatkan ke atas, evaluasi apakah k adalah bilangan Kaprekar dilakukan di sini dengan menambahkan hasil bagi dan sisanya dari pembagian bilangan bulatk^2
dengan10^i
(hasil bagi menjadi bagian kiri dari angka yang dibulatkan ke bawah dan sisa setengah kanan dibulatkan ke atas).sumber
bash + sed, 75 karakter
Bash tidak hanya bilangan bulat aritmatika dan mewakili angka sebagai string desimal; atribut ini sangat membantu untuk bermain golf tantangan ini. Juga variabel yang tidak dideklarasikan / tidak ditugaskan diasumsikan memiliki nilai 0 saat melakukan aritmatika.
Itu membuat saya kesal untuk meletakkan
10#
di sana, tetapi sesuatu seperti ini diperlukan jika paruh kedua perpecahan dimulai dengan a0
. Saat melakukan aritmatika, bash memperlakukan angka seperti oktal, kecuali jika pangkalan tersebut dinyatakan secara eksplisit.sumber
Python 3.3 - 117 karakter
Setiap tingkat lekukan, dan setiap baris baru kecuali yang terakhir, semua dihitung untuk 1 karakter. Saya pikir itu adil untuk kode Python. Script mengharapkan pengguna untuk memasukkan jumlah angka Kaprekar untuk dihitung.
sumber
J - 64
Agak jelek, tapi tetap saja. Ia memeriksa semua angka hingga satu juta kemudian mengambilnya
n
, sehingga hanya berfungsi untuk n <= 50.n
adalah tempat untuk memasukkan inputsumber