= Python Challenge -- Level 4 -- Solution = ==== Code ==== {{{ #!d import tango.io.Stdout; import tango.net.Uri, tango.net.http.HttpClient; import tango.stdc.stdlib; import tango.text.Regex; pragma (lib, "WS2_32.lib"); void[] lastQuery; Uri uri; HttpClient client; void main () { char[] changeQuery (Regex match) { uri.setQuery("nothing=" ~ match.match(1)); return match.match(1); } void sink (void[] content) { debug Stdout.print(cast(char[])content ~ "\n"); if (find(cast(char[])content, "Divide") != -1) { uri.setQuery("nothing=46059"); } else if (find(cast(char[])content, "nothing is ") != -1) { size_t location = rfind(cast(char[])content, "nothing is "); sub(cast(char[])content[location .. length], "(([0-9])+)", &changeQuery); } else if (cast(char[])content != "" && lastQuery == content) { Stdout.print(cast(char[])content).flush(); exit(0); } if (cast(char[])content != "") { lastQuery = content; } } uri = new Uri("http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing=12345"); client = new HttpClient(HttpClient.Get, uri); while (true) { auto data = client.open(); if (client.isResponseOK()) { client.read(&sink); } client.close(); client.reset(); } } }}}