aboutsummaryrefslogtreecommitdiff
path: root/challenge-090/tyler-wardhaugh/lua/ch-1.lua
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-090/tyler-wardhaugh/lua/ch-1.lua')
-rwxr-xr-xchallenge-090/tyler-wardhaugh/lua/ch-1.lua35
1 files changed, 35 insertions, 0 deletions
diff --git a/challenge-090/tyler-wardhaugh/lua/ch-1.lua b/challenge-090/tyler-wardhaugh/lua/ch-1.lua
new file mode 100755
index 0000000000..e964ce9f6d
--- /dev/null
+++ b/challenge-090/tyler-wardhaugh/lua/ch-1.lua
@@ -0,0 +1,35 @@
+#!/usr/bin/env lua
+
+local t1 = {}
+local util = require'util'
+
+t1.DEFAULT_DNA = 'GTAAACCCCTTTTCATTTAGACAGATCGACTCCTTATCCATTCTCAGAGATGTGTTGCTGGTCGCCG'
+
+function t1.process_dna(dna)
+ freq = {}
+ for c in dna:gmatch'.' do
+ freq[c] = (freq[c] or 0) + 1
+ end
+
+ local replacement = {A='T', T='A', C='G', G='C'}
+ local complement = dna:gsub('(%w)', function (c) return replacement[c] end)
+
+ return freq, complement
+end
+
+function t1.run(args)
+ local dna = args[1] or t1.DEFAULT_DNA
+ local freq, complement = t1.process_dna(dna)
+
+ io.write('Counts = { ')
+ local seq = util.dict_to_seq(freq)
+ for i, v in ipairs(seq) do
+ io.write(v[1] .. ': ' .. v[2])
+ if i ~= #seq then io.write(', ') end
+ end
+ print(' }\n')
+
+ print('Complement: ' .. complement)
+end
+
+return t1