Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Project Euler Problem 491
;gnu clisp 2.49 (defun other-list (alist) (loop for i fixnum from 9 downto 0 collect (let ((q (find i alist :key 'cdr))) (if q (cons (- 2 (car q)) i) (cons 2 i))))) (let ((num (vector 13168189440000 11851370496000 10534551552000))) (defun count-possibilities (alist) (/ (aref num (or (car (find 0 alist :key #'cdr)) 0)) ; numerator is 10!^2 (no 0’s), 0.9*10!^2 (1 zero) or 0.8*10!^2 (2 0‘s) (expt 2 (+ (count 2 alist :key #'car) (- 10 (length alist))))))) (defun list-possible-sums (&key (d 0) (ndigits 0) (sum 0) (seq)) (cond ((> sum 45) Nil) ((= ndigits 10) (if (zerop (rem (- 89 sum) 11)) (list (count-possibilities seq)))) ((= 10 d) Nil) (t (nconc (list-possible-sums :d (1+ d) :ndigits ndigits :sum sum :seq seq) (list-possible-sums :d (1+ d) :ndigits (1+ ndigits) :sum (+ d sum) :seq (acons 1 d seq)) (list-possible-sums :d (1+ d) :ndigits (+ ndigits 2) :sum (+ (* 2 d) sum) :seq (acons 2 d seq)))))) (pprint (reduce #'+ (remove-duplicates (list-possible-sums) :test 'equal)))
run
|
edit
|
history
|
help
0
L1.9b
do-all-sums & groupby
ズンドコキヨシ for CommonLisp
Lisp Enum Macro
Homework.lisp
COND
L1.9a
Реализация нахождения числа Фибоначчи... на лиспе.
FPLab1Teteria
Evaluate any list