Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
32
Task/Modular-inverse/Lambdatalk/modular-inverse.lambdatalk
Normal file
32
Task/Modular-inverse/Lambdatalk/modular-inverse.lambdatalk
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
{def mulinv
|
||||
{def mulinv.loop
|
||||
{lambda {:t :nt :r :nr}
|
||||
{if {not {= :nr 0}}
|
||||
then {mulinv.loop :nt
|
||||
{- :t {* {floor {/ :r :nr}} :nt}}
|
||||
:nr
|
||||
{- :r {* {floor {/ :r :nr}} :nr}} }
|
||||
else {cons :t :r} }}}
|
||||
{lambda {:a :n}
|
||||
{let { {:a :a} {:n :n}
|
||||
{:cons {mulinv.loop 0
|
||||
1
|
||||
{if {< :n 0} then {- :n} else :n}
|
||||
{if {< :a 0} then {- :n {% {- :a} :n}} else :a}}}
|
||||
} {if {> {cdr :cons} 1}
|
||||
then not invertible
|
||||
else {if {< {car :cons} 0}
|
||||
then {+ {car :cons} :n}
|
||||
else {car :cons} }}}}}
|
||||
-> mulinv
|
||||
|
||||
{mulinv 42 2017}
|
||||
-> 1969
|
||||
{mulinv 40 1}
|
||||
-> 0
|
||||
{mulinv 52 -217}
|
||||
-> 96
|
||||
{mulinv -486 217}
|
||||
-> 121
|
||||
{mulinv 40 218}
|
||||
-> not invertible
|
||||
Loading…
Add table
Add a link
Reference in a new issue