Jump to content

Execute a Markov algorithm: Difference between revisions

→‎{{header|D}}: updated D code
(Updated D code)
(→‎{{header|D}}: updated D code)
Line 1,006:
 
void main() {
auto rules = split(splitLines(cast(string)read("rulesres/markov_rules.txt")), "");
auto tests = splitLines(cast(string)read("testsres/markov_tests.txt"));
enum regex = ctRegex!(r"^([^#]*?)\s+->\s+(\.?)(.*)");
foreach (i, ttest; tests) {
string[][] capt;
foreach (line; rules[i]) {
auto m = match(line, r"^([^#]*?)\s+->\s+(\.?)(.*)"regex);
if (!m.empty) capt ~= array(m.captures)[1 .. $];
}
REDO: auto copy = ttest;
foreach (c; capt) {
ttest = ttest.replace(c[0], c[2]);
if (c[1] == ".") break;
if (ttest != copy) goto REDO;
}
writeln(ttest);
}
}</lang>
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.