Premis
Suatu malam, saya hanya merenungkan angka. Saya menemukan sesuatu yang unik tentang angka seperti 7, 10, 12, 13, dan banyak lagi. Mereka adalah kotak kuadrat! Arti, bahwa ketika kuadrat, terdiri dari kuadrat itu sendiri. OEIS memanggil mereka Kotak yang merupakan gabungan desimal dari dua atau lebih kotak.
Contoh angka-angka tersebut termasuk 7 (49 memiliki 2 2 dan 3 2 ) 13 (169 memiliki 4 2 dan 3 2 ) dan 20 (400 memiliki 2 2 dan 0 2 ). Contoh lain termasuk 37, karena 1369 adalah istilah karena dapat dipartisi sebagai 1, 36 dan 9. 1444 (38 2 ) adalah istilah karena dapat dipartisi sebagai 1, 4, 4, 4. Saya bertanya tentang hal ini pada Matematika .SE, dan diberi nama setelah saya!
Tantangan
Desain program yang mencetak angka TanMath. Diberi nomor n (mulai dari 1), cetak nomor TanMath ke-n, T (n).
Sebagai contoh kode:
>> 1
>> 7
atau
>> 4
>> 13
Referensi implementasi Python (terima kasih @ MartinBüttner dan @ Sp3000!):
from math import sqrt
n = input()
def r(digits, depth):
z = len(digits)
if z < 1:
return (depth > 1)
else:
for i in range(1, z+1):
t = int(digits[:i])
if sqrt(t).is_integer() and r(digits[i:], depth+1):
return True
return False
i=0
t=0
while t < n:
i += 1
if r(str(i**2), 0):
t += 1
print i
Berikut adalah daftar 100 angka pertama:
7 10 12 13 19 20 21 30 35 37 38 40 41 44 50 57 60 65 70 80 90 95 97 100 102 105 107 108 110 112 119 120 121 125 129 130 138 140 150 160 170 180 190 191 200 201 204 205 209 210 212 220 223 230 240 250 253 260 270 280 285 290 300 305 306 310 315 320 325 330 340 342 343 345 348 350 360 369 370 375 379 380 390 397 400 402 405 408 410 413 420 430 440 441 450 460 470 475 480 487
Ini adalah kode golf, jadi kode terpendek menang!
Semoga berhasil!
Jawaban:
Pyth,
232120 byteTerima kasih kepada @isaacg untuk bermain golf 1 byte!
Cobalah online.
Bagaimana itu bekerja
sumber
t
perlu, karena^R2Z
tidak akan mengandung^Z2
. Itu sama dengan jangkauan Python, itu tidak termasuk ujung atas.Julia,
189145 byteIni menciptakan fungsi tanpa nama yang menerima integer dan mengembalikan integer. Untuk menyebutnya, berikan nama, mis
f=n->...
.Tidak Disatukan:
Terima kasih kepada Dennis untuk bantuan dan ide dan terima kasih kepada Glen O karena telah menghemat 44 byte!
sumber
JavaScript ES6, 126
127Implementasi referensi, dikonversi ke Javascript dengan beberapa trik golf.
Menggunakan eval untuk menghindari pengembalian eksplisit.
Tes menjalankan cuplikan di bawah ini di peramban yang mendukung EcmaScript 6, dengan operator sebaran, parameter default dan fungsi panah (saya menggunakan Firefox)
sumber
JavaScript (ES6), 143 byte
Pemakaian
Penjelasan
sumber
Lua, 148 byte
Diperlukan Lua 5.3
sumber
Python 3,
283243 byteIni adalah implementasi brute-force. Saran bermain golf diterima.
Tidak Disatukan:
sumber