From 60ca8969a8f620893f8792e976f678cc5592a87d Mon Sep 17 00:00:00 2001 From: Adam Cooper Date: Mon, 27 Jan 2025 16:23:28 -0500 Subject: [PATCH] Tests pass --- all-your-base/all-your-base.fasl | Bin 3601 -> 4599 bytes all-your-base/all-your-base.lisp | 15 ++++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/all-your-base/all-your-base.fasl b/all-your-base/all-your-base.fasl index f474b644672366256df57da1efe0bd185860dcb4..1f9dc5d6a23298a27bb13cb784500e505ab564a0 100644 GIT binary patch delta 1837 zcmah}ZERCj7{2G;bK29bYj5k8jj)VT3hTsXoiHs3#BRIYE#7|6-Z7?&KpX=TzMK>_ z0o&0v*j($F_lHD603A!jDB#otf5;CEj)dTXi7xZcjD}!X2om{_DDyqNgN>MIZ}Q%! z?>W!=Jm)=cJ5YUR!KpQfztl6FM3bmStrVMM(X|Pwxh;{DA{J>~T@N8T9Qq^=cGhbQq=nO3nRg}FBD7oq)tzhzw+GE(p=WI?eP-YwC z1_gpF{jl&1t0nLrN^5Upiuje36=FuWN)Xk7y_E7KiJ{xg z>fEl7+7Xx1KA2HeTBl+Kx8qK@*oUKys!s51klbi~|1_uy8{jnOF9N&~rfuZGFrMZL z2CRf^w*fZ*{Mi`C4Nz!P5dv6K1dcj7N*n^<;)Lp7TAjMRl%)4Tb-8eS%hc4AoNt?u z^LxkSd}=hTNur#W?#f!**jWs$tE`Is?G$K1Zgh5TBg^GC9h3{XolqvCrCdthFXy+= zmO`Tfi%Nc{*d4TcBVxDRAy>)TA9DVSqGC2Z>5{X*-cSmAJf%P!>kfV`@sa#%w}ARS zPyzlO&bN}V_M@Dg6lHBMSbV}GYm-GovS!rLu7H6NxgZ^VRQ(*7{txv@SNdP-!nFD) zKz*PtYtk6FDEogGMUT)%ZSU9_*0x8?+M9k+3O&CEZ=Xl0ieTn`$u4^uzSvWyU}ja_ zZsFoa3dB+Q+w=FKk7rE4pGwi+-~~P3H1bs?;^G(Xo&$XF+RXz8f^oJo^XZpp_D|lP z`y5i!SE^_?!deKr_hy-*-BXH}D@{ya?hWW@T4ZOM)lmhU!*M4v_bO8Yh&BAwaG~hn z00_P~BgT*+m|Fd)n4;ZO@+p|2heB5yro!3}#S2s5j#>FV)Hu!ZSqc|L_RN-u!*EW( z6tLu0hzP%2!LxuM=qF31GA|Cmwaja%_n9a+`p?e0_D_r)TZ!4osE_W?Z0y X!mrzUSlGgX#6lwr3t1>f&%W^w)rj!F delta 759 zcmYk4&ubGw6vt)n8SBIGw(gV^JeDTk(IXU z2o{Q=nuT|90K&swbE06EM6yCaWotSu-VTN}tiDEkXfIK<4xrY4h&>obX%`t)bWs16 z=mF5_9dfxaq> zc@ozNAld6v+Mi?e0_%+pgQjI?a&bG8&mCSamz74G?Vx;?tbB1aX-4j`MPSzQEQZ8K zWG(s%qcveMAP~{(OUVuko|Xk-ftBb^+6VJP_GH2AX4hhy6E>tu0{QPIpSVpJte;CR zhFgMfuta}}-Tjh(ae-~7moDz4osG2fGwW<;E5%P)XER$F-pM)}*^0TBaZDv$G56EA zc9o2?opHX?4-k&>I8QbA(o2c2>v&!n@Lg?O_s^4Zf9ExEYevpE`*g0kHMFJFow;!8 zL^8r))4P7NNe2T`&<=et1V#GMZzspKDtcGX2aZqwAwMd6u5s-?nsRYM>qUh>SVbup z$7(l}9(=aMJ`7CvBS2a)l=#eJG3g;f185SxN9XWkfe2SfFAxkf%~M<~E`wZ7a*1$h I#b?g{2H+W^D*ylh diff --git a/all-your-base/all-your-base.lisp b/all-your-base/all-your-base.lisp index 3a6b85d..bcf3d60 100644 --- a/all-your-base/all-your-base.lisp +++ b/all-your-base/all-your-base.lisp @@ -4,13 +4,10 @@ (in-package :all-your-base) -; `rebase` needs to return NIL sometimes. For the cases where one bad list -; item yields NIL, we need `conv` to return multiple values: (ok, val). -; Then we can check the ok before proceeding to `unconv`.` (defun conv (l base) - (if (null l) - 0 - (+ (* (first l) (expt base (- (length l) 1))) (conv (rest l) base)))) + (if (null l) + 0 + (+ (* (first l) (expt base (- (length l) 1))) (conv (rest l) base)))) (defun calc-start-exponent (num base x) (if (< num (expt base (1+ x))) @@ -29,4 +26,8 @@ (append (list q) (unconv r base (- x 1))))))) (defun rebase (l source destination) - (unconv (conv l source) destination -1)) + (cond ((< source 2) nil) + ((< destination 2) nil) + ((some #'(lambda (x) (< x 0)) l) nil) + ((some #'(lambda (x) (>= x source)) l) nil) + (t (unconv (conv l source) destination -1))))