Last active
November 3, 2016 13:21
-
-
Save somebody1234/a4b4ba61b9fdeaa98d40151d7e777a19 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python3 | |
import http.server | |
N=25001 | |
numbers = ["()" * i for i in range(N)] | |
def tryi(n, s): | |
if n < N and len(numbers[n]) > len(s): | |
numbers[n] = s | |
for i in range(2, N): | |
for j in range(1, 8): | |
if i + j >= N: | |
break | |
tryi(i, "%s[%s]" % (numbers[i + j], numbers[j])) | |
tryi(i + 1, "%s()" % numbers[i]) | |
tryi(i * 2, "(%s){}" % numbers[i]) | |
tryi(i * 3, "((%s)){}{}" % numbers[i]) | |
tryi(i * 3 + 2, "((%s)()){}{}" % numbers[i]) | |
tryi((3 * i * i - i) // 2, "%s)({({})({}[()])({})}{}" % numbers[i]) | |
tryi(i ** 2, "%s)({({})({}[()])}{}" % numbers[i]) | |
for l in range(1, int(i**.5) + 1): | |
if not i % l: | |
j = 0 | |
k = ((i + j + j) * i / l + i) / 2 | |
if k % 1: | |
continue | |
k = int(k) | |
while k < N: | |
tryi(k, "(%s){%s({}[%s])}{}" % (numbers[i], numbers[j], numbers[l])) | |
j += 1 | |
k = ((i + j + j) * i / l + i) / 2 | |
if k % 1: | |
continue | |
k = int(k) | |
length = 0 | |
print("Total length 1 to %s:" % N, sum(len(n) for n in numbers)) | |
def tryint(s): | |
try: | |
return int(s) | |
except: | |
return None | |
def reverse(n): | |
if not n: | |
return "" | |
s = "%s" if n > 0 else "([%s])" | |
if n < 0: | |
n *= -1 | |
while n >= N: | |
if not (n ** .5) % 1: | |
s = s % "%s({({})({}[()])}{})" | |
n = int(n ** .5) | |
elif ((24 * n + 1) ** .5) % 6 == 5: | |
s = s % "%s({({})({}[()])({})}{})" | |
n = (((24 * n + 1) ** .5) - 5) // 6 | |
elif not (n - 2) % 3: | |
s = s % "((%s)()){}{}" | |
n = (n - 2) // 3 | |
elif not n % 3: | |
s = s % "((%s)){}{}" | |
n //= 3 | |
elif not n % 2: | |
s = s % "(%s){}" | |
n //= 2 | |
else: | |
s = s % "%s()" | |
n -= 1 | |
return s % ("(%s)" % numbers[n]) | |
class Handler(http.server.BaseHTTPRequestHandler): | |
def do_HEAD(s): | |
s.send_response(200) | |
s.send_header("Content-type", "text/html") | |
s.end_headers() | |
def do_GET(s): | |
s.send_response(200) | |
s.send_header("Content-type", "text/html") | |
s.end_headers() | |
s.wfile.write(bytes( | |
"<pre>%s</pre>" % reverse(int(s.path[1:])) | |
if tryint(s.path[1:]) is not None else | |
"Invalid path", | |
"ascii" | |
)) | |
httpd = http.server.HTTPServer(("", 8000), Handler) | |
httpd.serve_forever() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment