(fn[n](nth(filter #(clojure.string/includes?(str(* % %))(str %))(range))n))
Hãy thử trực tuyến! (Thật không may, TIO dường như không hỗ trợ thư viện chuỗi tiêu chuẩn của Clojure)
Nếu Clojure có cú pháp nhập ngắn hơn hoặc có một includes?phương thức trong thư viện lõi, thì điều này thực sự có thể cạnh tranh. clojure.string/includes?một mình dài hơn một số câu trả lời ở đây: /
(defn nth-sq-subs [n]
(-> ; Filter from an infinite range of numbers the ones where the square of
; the number contains the number itself
(filter #(clojure.string/includes? (str (* % %)) (str %))
(range))
; Then grab the "nth" result. Inc(rementing) n so 0 is skipped, since apparently
; that isn't in the sequence
(nth (inc n))))
Vì liên kết TIO bị hỏng, đây là một lần chạy thử. Số ở bên trái là chỉ mục ( n) và kết quả ( N) ở bên phải:
(mapv #(vector % (nth-sq-subs %)) (range 100))
=>
[[0 1]
[1 5]
[2 6]
[3 10]
[4 25]
[5 50]
[6 60]
[7 76]
[8 100]
[9 250]
[10 376]
[11 500]
[12 600]
[13 625]
[14 760]
[15 1000]
[16 2500]
[17 3760]
[18 3792]
[19 5000]
[20 6000]
[21 6250]
[22 7600]
[23 9376]
[24 10000]
[25 14651]
[26 25000]
[27 37600]
[28 50000]
[29 60000]
[30 62500]
[31 76000]
[32 90625]
[33 93760]
[34 100000]
[35 109376]
[36 250000]
[37 376000]
[38 495475]
[39 500000]
[40 505025]
[41 600000]
[42 625000]
[43 760000]
[44 890625]
[45 906250]
[46 937600]
[47 971582]
[48 1000000]
[49 1093760]
[50 1713526]
[51 2500000]
[52 2890625]
[53 3760000]
[54 4115964]
[55 5000000]
[56 5050250]
[57 5133355]
[58 6000000]
[59 6250000]
[60 6933808]
[61 7109376]
[62 7600000]
[63 8906250]
[64 9062500]
[65 9376000]
[66 10000000]
[67 10050125]
[68 10937600]
[69 12890625]
[70 25000000]
[71 28906250]
[72 37600000]
[73 48588526]
[74 50000000]
[75 50050025]
[76 60000000]
[77 62500000]
[78 66952741]
[79 71093760]
[80 76000000]
[81 87109376]
[82 88027284]
[83 88819024]
[84 89062500]
[85 90625000]
[86 93760000]
[87 100000000]
[88 105124922]
[89 109376000]
[90 128906250]
[91 146509717]
[92 177656344]
[93 200500625]
[94 212890625]
[95 250000000]
[96 250050005]
[97 289062500]
[98 370156212]
[99 376000000]]
Điều này sẽ có thể hỗ trợ bất kỳ giá trị nào của n; cung cấp cho bạn sẵn sàng chờ đợi nó kết thúc (việc tìm số nguyên thứ 50 đến 100 trong chuỗi mất khoảng 15 phút). Clojure hỗ trợ số học số nguyên lớn tùy ý, vì vậy một khi số bắt đầu trở nên lớn, nó bắt đầu sử dụng BigInts.