클로저 , 81 바이트
(fn[n](nth(filter #(clojure.string/includes?(str(* % %))(str %))(range))n))
온라인으로 사용해보십시오! (불행히도 TIO는 Clojure의 표준 문자열 라이브러리를 지원하지 않는 것 같습니다)
Clojure가 가져 오기 구문이 더 짧거나 includes?
코어 라이브러리에 메소드가있는 경우 이는 실제로 다소 경쟁적 일 수 있습니다. clojure.string/includes?
홀로 여기에 몇 가지 답변보다 깁니다 : /
(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))))
TIO 링크가 끊어 졌으므로 테스트 실행이 있습니다. 왼쪽의 숫자는 색인 ( n
)이고 결과 ( N
)는 오른쪽에 있습니다.
(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]]
이것은 모든 값을 지원할 수 있어야합니다 n
. 완료 될 때까지 기꺼이 기다립니다 (시퀀스에서 50 ~ 100 번째 정수를 찾는 데 15 분이 걸렸습니다). Clojure는 임의로 큰 정수 산술을 지원하므로 숫자가 커지기 시작하면 BigInt
s를 사용하기 시작합니다 .