Deutsch   English   Français   Italiano  
<uskh40$30qhq$2@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!2.eu.feeder.erje.net!feeder.erje.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: DFS <nospam@dfs.com>
Newsgroups: comp.os.linux.advocacy
Subject: Re: Simple math/programming challenge for the "REAL programmer" Feeb
Date: Sun, 10 Mar 2024 10:46:27 -0400
Organization: A noiseless patient Spider
Lines: 113
Message-ID: <uskh40$30qhq$2@dont-email.me>
References: <usj06r$2jn18$3@dont-email.me> <87h6heilev.fsf@yaxley.in>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 10 Mar 2024 14:46:24 -0000 (UTC)
Injection-Info: dont-email.me; posting-host="ec05b6bf3a15acd02cf034c1d7a8084f";
	logging-data="3172922"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/fIehJo8soZ2L9k7YQLr2N"
User-Agent: Betterbird (Windows)
Cancel-Lock: sha1:hnNW1bxhltemh1ssW6YF9jMsla8=
In-Reply-To: <87h6heilev.fsf@yaxley.in>
Content-Language: en-US
Bytes: 6804

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_compiler

And 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.