tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
|
|
@ -0,0 +1,25 @@
|
|||
def markovInterpreterFor = { rules ->
|
||||
def ruleMap = [:]
|
||||
rules.eachLine { line ->
|
||||
(line =~ /\s*(.+)\s->\s([.]?)(.+)\s*/).each { text, key, terminating, value ->
|
||||
if (key.startsWith('#')) { return }
|
||||
ruleMap[key] = [text: value, terminating: terminating]
|
||||
}
|
||||
}
|
||||
[interpret: { text ->
|
||||
def originalText = ''
|
||||
while (originalText != text) {
|
||||
originalText = text
|
||||
for (Map.Entry e : ruleMap.entrySet()) {
|
||||
if (text.indexOf(e.key) >= 0) {
|
||||
text = text.replace(e.key, e.value.text)
|
||||
if (e.value.terminating) {
|
||||
return text
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
text
|
||||
}]
|
||||
}
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
def verify = { ruleset ->
|
||||
[withInput: { text ->
|
||||
[hasOutput: { expected ->
|
||||
def result = ruleset.interpret(text)
|
||||
println "Input: '$text' has output: '$result'"
|
||||
assert expected == result
|
||||
}]
|
||||
}]
|
||||
}
|
||||
|
||||
def ruleset1 = markovInterpreterFor("""
|
||||
# This rules file is extracted from Wikipedia:
|
||||
# http://en.wikipedia.org/wiki/Markov_Algorithm
|
||||
A -> apple
|
||||
B -> bag
|
||||
S -> shop
|
||||
T -> the
|
||||
the shop -> my brother
|
||||
a never used -> .terminating rule""")
|
||||
println ruleset1.interpret('I bought a B of As from T S.')
|
||||
verify ruleset1 withInput 'I bought a bag of apples from T shop.' hasOutput 'I bought a bag of apples from my brother.'
|
||||
|
||||
def ruleset2 = markovInterpreterFor("""...""")
|
||||
verify ruleset2 withInput 'I bought a B of As from T S.' hasOutput 'I bought a bag of apples from T shop.'
|
||||
|
||||
def ruleset3 = markovInterpreterFor("""...""")
|
||||
verify ruleset3 withInput 'I bought a B of As W my Bgage from T S.' hasOutput 'I bought a bag of apples with my money from T shop.'
|
||||
|
||||
def ruleset4 = markovInterpreterFor("""...""")
|
||||
verify ruleset4 withInput '_1111*11111_' hasOutput '11111111111111111111'
|
||||
|
||||
def ruleset5 = markovInterpreterFor("""...""")
|
||||
verify ruleset5 withInput '000000A000000' hasOutput '00011H1111000'
|
||||
Loading…
Add table
Add a link
Reference in a new issue