rosalind-nim/07_subs/subs.nim

29 lines
No EOL
752 B
Nim

import os
import std/streams
import std/sequtils
from std/strutils import join
proc findNeedleInHaystack(s, t: string): seq[int] =
var occurrences = newSeq[int]()
for i in 0 ..< s.len:
var j = 0
while j < t.len and (i+j) < s.len and s[i+j] == t[j]:
inc j
if j == t.len:
occurrences.add(i+1)
return occurrences
proc parseStream(stream: Stream): (string, string) =
let s = readLine(stream)
let t = readLine(stream)
return (s, t)
let fileName = paramStr(1)
let fileStream = newFileStream(fileName)
if not isNil(fileStream):
let (s, t) = parseStream(fileStream)
let occurrences = findNeedleInHaystack(s, t)
echo occurrences.mapIt($it).join(" ")
fileStream.close()