Small Change by fox

main@m=getLine>>=putStrLn.s.f.words>>m
s(x:_)=unwords$map show x
s _="-"
f(x:w)=[0..15]>>=g(read$init x)(map read w)
g 0_ 0=[[]]
g x y z|y==[]||z<1=[]
g x v@(y:w)z=map(y:)(g(x-y)v$z-1)++g x w z

Note that non-ascii characters in the above source code will be escaped (such as \x9f).

download

return to the top page