On 3/10/2024 3:41 AM, Yaxley Peaks wrote:
Does emacs lisp count?
;; ------------------
(defun kaprekarp (n)
(let* ((num (* n n))
(snum (number-to-string num))
(num-digits (length (number-to-string n)))
(num-list (string-split snum "" t))
(right-side (reverse (take num-digits (reverse num-list))))
(left-side (reverse (nthcdr num-digits (reverse num-list))))
(left-side-num (string-to-number (mapconcat 'identity left-side)))
(right-side-num (string-to-number (mapconcat 'identity right-side))))
(= n (+ right-side-num left-side-num))))
(defun solve-problem (low high)
(seq-keep (lambda (x)
(and (kaprekarp x) x))
(number-sequence low high)))
(solve-problem 1 100000000)
;; ------------------
A very naive solution, but I am sorry, I am very drunk right now lol
ha! Were you drunk before you started writing the Lisp code?
I submitted it here:
https://rextester.com/l/common_lisp_online_compilerAnd got:
Error(s), warning(s):
*** - EVAL: undefined function SEQ-KEEP
When you sober up:
------------------------------------------------------------------------
import sys, time
k=1
start = time.time()
for i in range(4,int(sys.argv[1].replace(',', ''))):
s, n = str(i**2), len(str(i))
if len(s) % 2 != 0: n-=1
p1, p2 = int(s[0:n]), int(s[n:])
if p1 + p2 == i:
print("%4d. %7d ^ 2 = %-16s %8s + %8s = %d" % (k, i, s, p1, p2, p1+p2))
k+=1
print("%.1fs" % (time.time() - start))
------------------------------------------------------------------------
$ python Knums.py 10,000,000
1. 9 ^ 2 = 81 8 + 1 = 9
2. 45 ^ 2 = 2025 20 + 25 = 45
3. 55 ^ 2 = 3025 30 + 25 = 55
4. 99 ^ 2 = 9801 98 + 1 = 99
5. 297 ^ 2 = 88209 88 + 209 = 297
6. 703 ^ 2 = 494209 494 + 209 = 703
7. 999 ^ 2 = 998001 998 + 1 = 999
8. 2223 ^ 2 = 4941729 494 + 1729 = 2223
9. 2728 ^ 2 = 7441984 744 + 1984 = 2728
10. 4950 ^ 2 = 24502500 2450 + 2500 = 4950
11. 5050 ^ 2 = 25502500 2550 + 2500 = 5050
12. 7272 ^ 2 = 52881984 5288 + 1984 = 7272
13. 7777 ^ 2 = 60481729 6048 + 1729 = 7777
14. 9999 ^ 2 = 99980001 9998 + 1 = 9999
15. 17344 ^ 2 = 300814336 3008 + 14336 = 17344
16. 22222 ^ 2 = 493817284 4938 + 17284 = 22222
17. 77778 ^ 2 = 6049417284 60494 + 17284 = 77778
18. 82656 ^ 2 = 6832014336 68320 + 14336 = 82656
19. 95121 ^ 2 = 9048004641 90480 + 4641 = 95121
20. 99999 ^ 2 = 9999800001 99998 + 1 = 99999
21. 142857 ^ 2 = 20408122449 20408 + 122449 = 142857
22. 148149 ^ 2 = 21948126201 21948 + 126201 = 148149
23. 181819 ^ 2 = 33058148761 33058 + 148761 = 181819
24. 187110 ^ 2 = 35010152100 35010 + 152100 = 187110
25. 208495 ^ 2 = 43470165025 43470 + 165025 = 208495
26. 318682 ^ 2 = 101558217124 101558 + 217124 = 318682
27. 329967 ^ 2 = 108878221089 108878 + 221089 = 329967
28. 351352 ^ 2 = 123448227904 123448 + 227904 = 351352
29. 356643 ^ 2 = 127194229449 127194 + 229449 = 356643
30. 390313 ^ 2 = 152344237969 152344 + 237969 = 390313
31. 461539 ^ 2 = 213018248521 213018 + 248521 = 461539
32. 466830 ^ 2 = 217930248900 217930 + 248900 = 466830
33. 499500 ^ 2 = 249500250000 249500 + 250000 = 499500
34. 500500 ^ 2 = 250500250000 250500 + 250000 = 500500
35. 533170 ^ 2 = 284270248900 284270 + 248900 = 533170
36. 538461 ^ 2 = 289940248521 289940 + 248521 = 538461
37. 609687 ^ 2 = 371718237969 371718 + 237969 = 609687
38. 643357 ^ 2 = 413908229449 413908 + 229449 = 643357
39. 648648 ^ 2 = 420744227904 420744 + 227904 = 648648
40. 670033 ^ 2 = 448944221089 448944 + 221089 = 670033
41. 681318 ^ 2 = 464194217124 464194 + 217124 = 681318
42. 791505 ^ 2 = 626480165025 626480 + 165025 = 791505
43. 812890 ^ 2 = 660790152100 660790 + 152100 = 812890
44. 818181 ^ 2 = 669420148761 669420 + 148761 = 818181
45. 851851 ^ 2 = 725650126201 725650 + 126201 = 851851
46. 857143 ^ 2 = 734694122449 734694 + 122449 = 857143
47. 961038 ^ 2 = 923594037444 923594 + 37444 = 961038
48. 994708 ^ 2 = 989444005264 989444 + 5264 = 994708
49. 999999 ^ 2 = 999998000001 999998 + 1 = 999999
50. 4444444 ^ 2 = 19753082469136 1975308 + 2469136 = 4444444
51. 4927941 ^ 2 = 24284602499481 2428460 + 2499481 = 4927941
52. 5072059 ^ 2 = 25725782499481 2572578 + 2499481 = 5072059
53. 5555556 ^ 2 = 30864202469136 3086420 + 2469136 = 5555556
54. 9372385 ^ 2 = 87841600588225 8784160 + 588225 = 9372385
55. 9999999 ^ 2 = 99999980000001 9999998 + 1 = 9999999
6.2s
And 1 is somehow considered a Kaprekar number.