From 083fe0037210c30b3fb9a20a4dc58c89b6697e6b Mon Sep 17 00:00:00 2001 From: joachimschmidt557 Date: Mon, 11 Mar 2019 19:22:19 +0100 Subject: [PATCH] Finish factor utility --- cat.nim | 2 +- factor.nim | 14 +++++++++++--- seq.nim | 5 +++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/cat.nim b/cat.nim index 947c490..b9e6b09 100644 --- a/cat.nim +++ b/cat.nim @@ -7,4 +7,4 @@ proc main(files:seq[string]) = while not s.atEnd: write(stdout, s.readChar) -dispatch(main) +dispatch(main, version=("version", nimbaseVersion)) diff --git a/factor.nim b/factor.nim index 74ee5a7..7ac4fd7 100644 --- a/factor.nim +++ b/factor.nim @@ -1,11 +1,19 @@ -import cligen +import cligen, sequtils import common proc factor(num:int):seq[int] = - result = @[0] + result = @[] + var i = num + while i > 1: + for x in 2..i: + if i mod x == 0: + result.add(x) + i = i div x + break proc main(integers:seq[int]) = for number in integers: - echo number, ": ", factor(number) + echo number, ": ", + map(factor(number), proc(x:int):string = $x & " ").foldl(a & b) dispatch(main) diff --git a/seq.nim b/seq.nim index 3c0f072..a6e010f 100644 --- a/seq.nim +++ b/seq.nim @@ -1,10 +1,11 @@ import cligen import common -proc main(last:int, first=1, increment=1) = +proc main(last:int, first=1, increment=1, separator="\n") = var i = first while i <= last: - echo(i) + write(stdout, i) + write(stdout, separator) i = i + increment dispatch(main, version=("version", nimbaseVersion))