text:
2nd byte bias of RC4
Short version
RC4, designed in 1987, is one of the most famous stream ciphers. This question asks you to practically demonstrate its 2nd byte bias (for a theoretical proof, see section 3.2 of this paper).
Long version
OK, here I try to elaborate it for non-cryptographers. As you have noted, RC4 is a very popular cipher in the cryptographic domain, mainly because of its simplicity. It consists of a register (i.e., array) of length 256, each element of this register can hold up to 8 bits.
Here's a quick overview of how stream ciphers commonly work: a secret key is taken, a Key-scheduling algorithm (KSA) is performed (which takes the key as input), followed by a Pseudo-random generation algorithm (PRGA) (which outputs a sufficiently long random-looking key-stream). To encrypt (resp. decrypt), one has to bit-wise XOR this key-stream with the plaintext (resp. ciphertext).
For RC4, the key is of length 1 to 256. The KSA and PRGA are performed on the 256 byte register S as follows:
KSA
for i from 0 to 255
    S[i] := i
endfor
j := 0
for i from 0 to 255
    j := (j + S[i] + key[i mod keylength]) mod 256
    swap values of S[i] and S[j]
endfor

PRGA
i := 0, j := 0
while GeneratingOutput:
    i := (i + 1) mod 256
    j := (j + S[i]) mod 256
    swap values of S[i] and S[j]
    K := S[(S[i] + S[j]) mod 256]
    output K
endwhile

These K's constitute the key-stream. After getting first 256 bytes of the key-stream, you need to count the frequency of each number from 0 to 255 in the key-stream, occuring in each position for a given key.
The interesting thing is that, even if the keys are taken at random, you will notice the key-stream is far from random - "the frequency of the second byte is zero" is nearly double of what it actually should be (if it were truly random). This is known as distinguishing attack.
Your task is to:

Take as much as you can random key of 16 bytes
Generate the key-stream of first 2 bytes for each key
Count the number of times zero appears at the 2nd byte of each the key-streams

You program should be capable of taking at least 2^19 - 2^20 keys, and make the code run as fast as you can.
Here's a quick try of me in Python:
def ksa(S):
    key = range(256)
    j = 0
    for i in range(256):
        j = (j + key [i] + S [i % len(S)]) % 256
        key [i], key [j] = key [j], key [i]
    return key

def prga (key):
    i = 0; j = 0
    while True:
        i = (i + 1) % 256
        j = (j + key [i]) % 256
        key [i], key [j] = key [j], key [i]
        yield key [(key [i] + key [j]) % 256]

def encrypt_or_decrypt (text, S):
    alt_text = []
    key = ksa (S)
    prga_generator = prga(key)
    for byte in text:
        alt_text.append (prga_generator. next())
    return tuple (alt_text)

if __name__ == '__main__':
    from time import time
    stime = time ()
    import sys
    rounds = int (sys.argv [1]); text_length = 256; key_length = 16
    text = [0 for x in range(text_length)]
    out = list ()

    import random, numpy as np
    for r in range (rounds):
        S = [random.randint(0, 255) for x in range (key_length)]
        out.append (encrypt_or_decrypt (text, S))

    print str (range (256)) [1:-1]

    for o in np.transpose (out):
        temp = list(np.bincount (o))
        while len (temp) < 256:
            temp.append (0)
        print str (temp)[1:-1]
    print time () - stime

Pipe the output to a CSV file and note the content of A3 cell, after opening it with an office package (it should be nearly double of each of the other cells).
This one is of 524288 keys (it took 220.447999954s of my i5 processor, 4 GB RAM):

BONUS: Create the whole 256 by 256 frequency matrix, where rows indicate the frequency of a number (in 0 to 255) and columns indicate the corresponding byte position (from 1 to 256).
Winning conditions

Fastest in terms of # iterations/ second in my computer
Single-threaded execution only (multi-threaded versions are also welcome here, but not as a participant)
For tie (or nearly tie) cases, popularity and capability of more iterations will be considered (though I suppose there will be no such situation)
No need for true random numbers, pseudo random numbers will suffice, as it is not a cryptographic contest

Update
In my computer, here are the results (2^24 iterations):

bitpwner The 256 * 256 matrix in 50.075s
Dennis The bias 19.22s

Since, there seems no more answer coming in, I declare Dennis as the winner. bitpwner did really good with the big matrix.

What do you mean by random? Do the keys of each iteration have to get selected uniformly and independently?

How is the winner decided? Tested keys per seconds?

@Dennis At each iteration, each key must be taken at random. But, I am not sure what do you exactly mean by taken uniformly and independently.

@Dennis It will surely depend on number of iterations per second. Additionally, I will keep in mind two things: Whether it is capable of more (like 2^30) iterations and which one is most popular.

Just saying randomly is meaningless unless you define the distribution. Uniformly means that each key should have the same probability of getting selected. Independently means that the selected keys should not depend on the previous ones. Uniform selection implies independent selection. Strictly speaking, this would make the existing answer invalid since rand() is deterministic.

@Dennis Each key has same chance of getting selected. But, for now you can take pseudo-random numbers.

I have not quite decided yet for the winning conditions. That's a requirement for every open challenge. Questions without an objective winning criterion can (and will) get closed until they're edited. You should also decide if submissions have to be single threaded.

Let us continue this discussion in chat.

C
Takes about 111 secs to run on my Macbook Air for 2^24 = 16777216 trials.
To compile: gcc -o rc4 rc4.c
To pipe the output to a csv: ./rc4 > rc4out.csv
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdlib.h>
#include <sys/time.h>

#define KEY_LENGTH 16
#define ITERATIONS 16777216

void ksa(unsigned char state[], unsigned char key[]) {
    int i,j=0,t;
    for (i=0; i<256; ++i)
        state[i] = i;
    for (i=0; i<256; ++i) {
        j = (j + state[i] + key[i % KEY_LENGTH]) % 256;
        t = state[i];
        state[i] = state[j];
        state[j] = t;
    }
}

void prga(unsigned char state[], unsigned char out[]) {
    int i=0,j=0,x,t;
    unsigned char key;
    for (x=0; x<256; ++x) {
        i = (i + 1) % 256;
        j = (j + state[i]) % 256;
        t = state[i];
        state[i] = state[j];
        state[j] = t;
        out[x] = state[(state[i] + state[j]) % 256];
    }
}

void makeRandomKey(unsigned char key[]) {
    int i;
    for (i=0; i<KEY_LENGTH; ++i)
        key[i] = rand() % 256;
}

int main(int argc, char *argv[]) {

    struct timeval time_started, time_now, time_diff;
    gettimeofday(&time_started, NULL);

    unsigned char state[256];
    unsigned char out[256];
    unsigned char key[KEY_LENGTH];
    int occurances[256][256];
    int i,j,bytePosition,charOccurance;

    for (i=0; i<256; ++i)
        for (j=0; j<256; ++j)
            occurances[i][j] = 0;

    srand(time(NULL));
    for (i=0; i<ITERATIONS; ++i) {
        makeRandomKey(key);
        ksa(state, key);
        prga(state, out);

        for (j=0; j<256; ++j)
            ++occurances[j][out[j]];
    }

    for (bytePosition=0; bytePosition<256; ++bytePosition) {
        printf("%d,", bytePosition);
    }
    printf("\n");
    for (charOccurance=0; charOccurance<256; ++charOccurance) {
        for (bytePosition=0; bytePosition<256; ++bytePosition) {
            printf("%d,", occurances[charOccurance][bytePosition]);
        }
        printf("\n");
    }

    gettimeofday(&time_now, NULL);
    timersub(&time_now, &time_started, &time_diff);
    printf("Time taken,%ld.%.6ld s\n", time_diff.tv_sec, time_diff.tv_usec);

    return 0;
}

Results for 16777216 trials.

Multithreaded version here. Compile with gcc -o rc4 rc4.c -pthreads.

Why have you used unsigned char? Also, please check that I have added winning conditions.

Not much reason really. It can store 8 bits to represent 0-255. Int works too.

C (1,432,725 keys / second)
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#define RAND_64() *Ks = rand(), Ks++, *Ks = rand(), Ks++, *Ks = rand(), Ks++, *Ks = rand()
#define KSA_1()   t = *s, j += t + *k, *s = S[j], S[j] = t, s++
#define KSA_4()   KSA_1(); k++; KSA_1(); k++; KSA_1(); k++; KSA_1()
#define KSA_16()  KSA_4(); k++; KSA_4(); k++; KSA_4(); k++; KSA_4(); k = K
#define KSA_64()  KSA_16(); KSA_16(); KSA_16(); KSA_16()

int main(int argc, char *argv[])
{
        int i, m = atoi(argv[1]), r = 0;
        uint8_t j, K[16], *k = K, S[256], *s, S0[256], t;
        uint16_t *Ks;
        for(i = 0; i < 256; i++) S0[i] = i;
        srand(time(NULL));

        for(i = 0; i < m; i++)
        {
                Ks = (uint16_t *) K, RAND_64(), Ks++, RAND_64();
                memcpy(S, S0, 256); s = S, j = 0;
                KSA_64(); KSA_64(); KSA_64(); KSA_64();
                j = S[1], S[1] = S[j], S[j] = j;
                t = S[2], j += t, S[2] = S[j], S[j] = t, t += S[2];
                r += (S[t] == 0);
        }
        printf("%u\n", r);
}

Benchmarking
$ gcc -Ofast rc4bias-rand.c && time ./a.out $[2**24]
130924
Real    11.71
User    11.71
Sys     0.00
$ bc <<< '2^24 / 11.71'
1432725

Tested on an Intel i7-3770 running Fedora 20.


text:
Find the shortest bracket numbers
Bracket numbers provide a simple way to express large integers using only left bracket, space, and right bracket ([ ]).
A bracket number is defined as a string of one or more pairs of matching brackets [...] called chunks, each separated from its neighbors by zero or more spaces.
The number of spaces between each chunk defines the hyperoperation between them. No spaces means addition, 1 space means multiplication, 2 spaces means exponentiation, 3 spaces means tetration, and so on. Higher order hyperoperations take precedence, so tetration occurs before exponentiation, exponentiation occurs before multiplication, etc. They are also right-associative, so a^b^c is computed as a^(b^c). (But a^b*c is still (a^b)*c.)
Each chunk may either be empty ([]) or contain another bracket number. Empty chunks have the value 0.  Non-empty chunks have the value of their contained bracket number plus 1.
Examples: (^^ is tetration, ^^^ is pentation)

[[]] has value 1 because it is 0 ([]) incremented by 1
[[[]]] has value 2 but so does [[]][[]] since the two ones ([[]]) are added
[[[]]] [[[[]]]  [[[[]]]]][[[]]] has value 20 = (2*((2^3)+1))+2
[[[]]]    [[[[]]]] has value 65536 = 2^^^3 = 2^^(2^^2) = 2^^4 == 2^(2^(2^2))
[[[[]]]]    [[[]]]    [[]] has value 7625597484987 = 3^^^(2^^^1) = 3^^^2 = 3^^3 = 3^(3^3)

In valid bracket numbers:

There will never be leading or trailing spaces.
There will always be at least one pair of matching brackets.
All left brackets will have a matching right bracket.
A space will never appear directly to the right of [ nor to the left of ].
The value is always a non-negative integer.

Challenge
Notice that there may be many forms for a bracket number that give the same value. [[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]] and [[[]]]   [[[[]]]] both represent 16, but the latter is much shorter.
Your challenge is to write an algorithm that attempts to find the shortest bracket number representation of a given value. For example, I believe the shortest way to represent 16 is with 17 characters as [[[]]]   [[[[]]]].
Scoring (Updated)
Let S be the set of integers from 1 to 256 (inclusive) as well as the following ten values:
8191 13071 524287 2147483647 1449565302 1746268229 126528612 778085967 1553783038 997599288

(The first 4 are Mersenne primes, the rest are random.)
The submission that generates the shortest set of bracket numbers for everything in S will win. Your score is the sum of the lengths of your bracket numbers for all values in S (smaller is better).
With your code please submit a list of your bracket numbers for all of S, the exact order is not terribly important. e.g.:
1=[[]]
2=[[[]]]
3=[[[[]]]]
...
2147483647=[...]
...

(I know this is not the optimal scoring method but I am not set up to run a bunch of random heuristic tests on each submission. Sorry :( )
Rules

You may not hardcode any bracket numbers besides the trivial incremental solutions ([], [[]], [[[]]], ...). Your program must actually be looking for optimally short representations. (Though the results may be suboptimal.)
Your algorithm should work for all non-negative integers below 2,147,483,648 (2^31). You may not specifically focus on the values in S.
For any particular input, your algorithm should run in at most 10 minutes on a decent modern computer (~2.5Ghz processor, ~6GB RAM).
In the (seemingly) rare chance of a tie the highest voted submission wins.
If you copy another solution or revise it without attribution you will be disqualified.

I think 256 might be a bit too low. You don't even get very far with the hyperoperations in these numbers. But I might be wrong, I can't really figure out how many possibilities there are to represent 256 that can't be easily ruled out.

@MartinBüttner I know. I had considered 512 or 1024 but I was worried that would force people to submit huge blocks of text for their bracket number lists. What does anyone else think?

@Calvin'sHobbies: What about asking for a select large number in addition to the 1..256? Say, the Mersenne prime 2^31 - 1.

@Calvin'sHobbies Pick 10-20 specific larger numbers in addition to your range?

@Charles and chilemagic: I like both ideas, I'll work them in.

wait - there's another @Charles!?!

Ok, updated username.... I don't want my bad behavior to be misattributed

Python 11455b
This solution takes a greedy approach to finding ways to break down prime numbers, rather than an exhaustive approach. I need 9875b for 1-256 compared to 8181 for Martin's probably-optimal solution in that space.
A larger table of multiplication and exponentiation results yields slight improvements in the larger test cases. The solution below took about 7 minutes. Increasing runtime beyond 30 minutes has minimal impact on the output.
I, like Martin, had a problem with precedence. My solution in restricting operation selection may not be optimal.
#!/usr/bin/env python

# http://codegolf.stackexchange.com/questions/35480/find-the-shortest-bracket-numbers

import sys, math

reps = {}
forwards = {}
backwards = {}

MAX = 2**31

TABLE_SIZE = 2**12

def op_dec(op):
    if op>1:
        return op-1
    return op

def rep_op(a,op,b):
    return rep_num(a) +  (" "*op) + rep_num(b)
def min_rep_op(a,op,b,op_max):
    return min_rep(a,op_max) +  (" "*op) + min_rep(b,op_dec(op_max))

def rep_num(a):
    return ("["*(a+1)) + ("]"*(a+1))

def min_rep(n,op_max):
    if n < 9:
        return ("["*(n+1))+("]"*(n+1))
    for op in range(op_max,-1,-1):
        if (n, op) in reps:
            return reps[(n, op)]
    for op in range(op_max,-1,-1):
        if (n, op) in backwards:
            a,op,b = backwards[(n, op)]
            return min_rep_op(a,op,b,op_max)
    else:
        for m in rep_list:
            c = m[0]
            if c < n:
                r = n - c
                for op in range(op_max,-1,-1):
                    if (c, op) in backwards:
                        a,op,b = backwards[(c, op)]
                        if r<10:
                            return ("["*r) + min_rep_op(a,op,b,op_max) + ("]"*r)
                        else:
                            return "[" + min_rep(r-1,op_max) + min_rep_op(a,op,b,op_max) + "]"
                break

def expand(a,op,b):
    if op == 0:
        n = a+b
    elif op == 1:
        n = a*b
    elif op == 2:
        if b*math.log10(a) > math.log10(MAX):
            n = MAX
        else:
            n = a**b
    elif (a,op,b) in forwards:
        n = forwards[(a,op,b)]
    else: # tetration and higher
        t = a
        for i in xrange(b-1):
            t = expand(a,op-1,t)
            if t>=MAX:
                break
        n = t

    if n > MAX-1:
        n = MAX
    forwards[(a,op,b)] = n

    if (n, op) in backwards:
        c = len(rep_op(*backwards[(n, op)]))
        if c > (a*2+op+b*2):
            backwards[(n, op)] = (a,op,b)
    else:
        backwards[(n, op)] = (a,op,b)

    return n

t = 0

# populate the multiplication, exponentiation, and tetration tables
for op in range(1,4):
    for a in range((1,2,2,2)[op],TABLE_SIZE):
        for b in range((1,2,2,2)[op],TABLE_SIZE):
            t = expand(a,op,b)
            if t == MAX:
                break
rep_list = sorted(backwards.keys(),key=lambda x: x[0]*4-x[1],reverse=True)

for i in list(range(1, 257))+[8191,13071,524287,2147483647,1449565302,1746268229,126528612,778085967,1553783038,997599288]:
    t = min_rep(i,3)
    reps[i] = t
    print i, t

Output:
1 [[]]
2 [[[]]]
3 [[[[]]]]
4 [[[[[]]]]]
5 [[[[[[]]]]]]
6 [[[[[[[]]]]]]]
7 [[[[[[[[]]]]]]]]
8 [[[[[[[[[]]]]]]]]]
9 [[[[]]]]  [[[]]]
10 [[[[[[]]]]]] [[[]]]
11 [[[[[[[]]]]]] [[[]]]]
12 [[[[[[[]]]]]]] [[[]]]
13 [[[[[[[[]]]]]]] [[[]]]]
14 [[[[[[[[]]]]]]]] [[[]]]
15 [[[[[[]]]]]] [[[[]]]]
16 [[[]]]   [[[[]]]]
17 [[[[]]]   [[[[]]]]]
18 [[[[[[[]]]]]]] [[[[]]]]
19 [[[[[[[[]]]]]]] [[[[]]]]]
20 [[[[[[]]]]]] [[[[[]]]]]
21 [[[[[[[[]]]]]]]] [[[[]]]]
22 [[[[[[[]]]]]] [[[]]]] [[[]]]
23 [[[[[[[[]]]]]] [[[]]]] [[[]]]]
24 [[[[[[[[[]]]]]]]]] [[[[]]]]
25 [[[[[[]]]]]]  [[[]]]
26 [[[[[[[[]]]]]]] [[[]]]] [[[]]]
27 [[[[]]]]   [[[]]]
28 [[[[[[[[]]]]]]]] [[[[[]]]]]
29 [[[[[[[[[]]]]]]]] [[[[[]]]]]]
30 [[[[[[[]]]]]]] [[[[[[]]]]]]
31 [[[[[[[[]]]]]]] [[[[[[]]]]]]]
32 [[[]]]  [[[[[[]]]]]]
33 [[[[[[[]]]]]] [[[]]]] [[[[]]]]
34 [[[[]]]   [[[[]]]]] [[[]]]
35 [[[[[[[[]]]]]]]] [[[[[[]]]]]]
36 [[[[[[[]]]]]]]  [[[]]]
37 [[[[[[[[]]]]]]]  [[[]]]]
38 [[[[[[[[]]]]]]] [[[[]]]]] [[[]]]
39 [[[[[[[[]]]]]]] [[[]]]] [[[[]]]]
40 [[[[[[]]]]]] [[[]]] [[[[[]]]]]
41 [[[[[[[]]]]]] [[[]]] [[[[[]]]]]]
42 [[[[[[[[]]]]]]]] [[[[[[[]]]]]]]
43 [[[[[[[[[]]]]]]]] [[[[[[[]]]]]]]]
44 [[[[[[[]]]]]] [[[]]]] [[[[[]]]]]
45 [[[[]]]]  [[[]]] [[[[[[]]]]]]
46 [[[[[[[[]]]]]] [[[]]]] [[[]]]] [[[]]]
47 [[[[[[[[[]]]]]] [[[]]]] [[[]]]] [[[]]]]
48 [[[[[[[[[]]]]]]]]] [[[[[[[]]]]]]]
49 [[[[[[[[]]]]]]]]  [[[]]]
50 [[[[[[]]]]]] [[[]]] [[[[[[]]]]]]
51 [[[[]]]   [[[[]]]]] [[[[]]]]
52 [[[[[[[[]]]]]]] [[[]]]] [[[[[]]]]]
53 [[[[[[[[[]]]]]]] [[[]]]] [[[[[]]]]]]
54 [[[[]]]]  [[[]]] [[[[[[[]]]]]]]
55 [[[[[[[]]]]]] [[[]]]] [[[[[[]]]]]]
56 [[[[[[[[[]]]]]]]]] [[[[[[[[]]]]]]]]
57 [[[[[[[[]]]]]]] [[[[]]]]] [[[[]]]]
58 [[[[[[[[[]]]]]]]] [[[[[]]]]]] [[[]]]
59 [[[[[[[[[[]]]]]]]] [[[[[]]]]]] [[[]]]]
60 [[[[[[[]]]]]]] [[[]]] [[[[[[]]]]]]
61 [[[[[[[[]]]]]]] [[[]]] [[[[[[]]]]]]]
62 [[[[[[[[]]]]]]] [[[[[[]]]]]]] [[[]]]
63 [[[[]]]]  [[[]]] [[[[[[[[]]]]]]]]
64 [[[[[]]]]]  [[[[]]]]
65 [[[[[[[[]]]]]]] [[[]]]] [[[[[[]]]]]]
66 [[[[[[[]]]]]] [[[]]]] [[[[[[[]]]]]]]
67 [[[[[[[[]]]]]] [[[]]]] [[[[[[[]]]]]]]]
68 [[[[]]]   [[[[]]]]] [[[[[]]]]]
69 [[[[[[[[]]]]]] [[[]]]] [[[]]]] [[[[]]]]
70 [[[[[[]]]]]] [[[]]] [[[[[[[[]]]]]]]]
71 [[[[[[[]]]]]] [[[]]] [[[[[[[[]]]]]]]]]
72 [[[[[[[]]]]]]] [[[]]] [[[[[[[]]]]]]]
73 [[[[[[[[]]]]]]] [[[]]] [[[[[[[]]]]]]]]
74 [[[[[[[[]]]]]]]  [[[]]]] [[[]]]
75 [[[[[[]]]]]] [[[[]]]] [[[[[[]]]]]]
76 [[[[[[[[]]]]]]] [[[[]]]]] [[[[[]]]]]
77 [[[[[[[]]]]]] [[[]]]] [[[[[[[[]]]]]]]]
78 [[[[[[[[]]]]]]] [[[]]]] [[[[[[[]]]]]]]
79 [[[[[[[[[]]]]]]] [[[]]]] [[[[[[[]]]]]]]]
80 [[[[[[]]]]]] [[[]]] [[[[[[[[[]]]]]]]]]
81 [[[[]]]]  [[[[[]]]]]
82 [[[[[[[]]]]]] [[[]]] [[[[[]]]]]] [[[]]]
83 [[[[[[[[]]]]]] [[[]]] [[[[[]]]]]] [[[]]]]
84 [[[[[[[[]]]]]]]] [[[]]] [[[[[[[]]]]]]]
85 [[[[]]]   [[[[]]]]] [[[[[[]]]]]]
86 [[[[[[[[[]]]]]]]] [[[[[[[]]]]]]]] [[[]]]
87 [[[[[[[[[]]]]]]]] [[[[[]]]]]] [[[[]]]]
88 [[[[[[[]]]]]] [[[]]]] [[[[[[[[[]]]]]]]]]
89 [[[[[[[[]]]]]] [[[]]]] [[[[[[[[[]]]]]]]]]]
90 [[[[[[]]]]]] [[[]]] [[[[]]]]  [[[]]]
91 [[[[[[[[]]]]]]] [[[]]]] [[[[[[[[]]]]]]]]
92 [[[[[[[[]]]]]] [[[]]]] [[[]]]] [[[[[]]]]]
93 [[[[[[[[]]]]]]] [[[[[[]]]]]]] [[[[]]]]
94 [[[[[[[[[]]]]]] [[[]]]] [[[]]]] [[[]]]] [[[]]]
95 [[[[[[[[]]]]]]] [[[[]]]]] [[[[[[]]]]]]
96 [[[[[[[]]]]]]] [[[]]] [[[[[[[[[]]]]]]]]]
97 [[[[[[[[]]]]]]] [[[]]] [[[[[[[[[]]]]]]]]]]
98 [[[[[[[[]]]]]]]] [[[]]] [[[[[[[[]]]]]]]]
99 [[[[[[[]]]]]] [[[]]]] [[[[]]]]  [[[]]]
100 [[[[[[]]]]]] [[[]]]  [[[]]]
101 [[[[[[[]]]]]] [[[]]]  [[[]]]]
102 [[[[]]]   [[[[]]]]] [[[[[[[]]]]]]]
103 [[[[[]]]   [[[[]]]]] [[[[[[[]]]]]]]]
104 [[[[[[[[]]]]]]] [[[]]]] [[[[[[[[[]]]]]]]]]
105 [[[[[[]]]]]] [[[[]]]] [[[[[[[[]]]]]]]]
106 [[[[[[[[[]]]]]]] [[[]]]] [[[[[]]]]]] [[[]]]
107 [[[[[[[[[[]]]]]]] [[[]]]] [[[[[]]]]]] [[[]]]]
108 [[[[[[[]]]]]]] [[[]]] [[[[]]]]  [[[]]]
109 [[[[[[[[]]]]]]] [[[]]] [[[[]]]]  [[[]]]]
110 [[[[[[[]]]]]] [[[]]]] [[[[[[]]]]]] [[[]]]
111 [[[[[[[[]]]]]]]  [[[]]]] [[[[]]]]
112 [[[]]]   [[[[]]]] [[[[[[[[]]]]]]]]
113 [[[[]]]   [[[[]]]] [[[[[[[[]]]]]]]]]
114 [[[[[[[[]]]]]]] [[[[]]]]] [[[[[[[]]]]]]]
115 [[[[[[[[]]]]]] [[[]]]] [[[]]]] [[[[[[]]]]]]
116 [[[[[[[[[]]]]]]]] [[[[[]]]]]] [[[[[]]]]]
117 [[[[[[[[]]]]]]] [[[]]]] [[[[]]]]  [[[]]]
118 [[[[[[[[[[]]]]]]]] [[[[[]]]]]] [[[]]]] [[[]]]
119 [[[[]]]   [[[[]]]]] [[[[[[[[]]]]]]]]
120 [[[[[[]]]]]] [[[[]]]] [[[[[[[[[]]]]]]]]]
121 [[[[[[[]]]]]] [[[]]]]  [[[]]]
122 [[[[[[[[]]]]]]] [[[]]] [[[[[[]]]]]]] [[[]]]
123 [[[[[[[]]]]]] [[[]]] [[[[[]]]]]] [[[[]]]]
124 [[[[[[[[]]]]]]] [[[[[[]]]]]]] [[[[[]]]]]
125 [[[[[[]]]]]]  [[[[]]]]
126 [[[[[[[[]]]]]]]] [[[]]] [[[[]]]]  [[[]]]
127 [[[[[[[[[]]]]]]]] [[[]]] [[[[]]]]  [[[]]]]
128 [[[]]]  [[[[[[[[]]]]]]]]
129 [[[[[[[[[]]]]]]]] [[[[[[[]]]]]]]] [[[[]]]]
130 [[[[[[[[]]]]]]] [[[]]]] [[[[[[]]]]]] [[[]]]
131 [[[[[[[[[]]]]]]] [[[]]]] [[[[[[]]]]]] [[[]]]]
132 [[[[[[[]]]]]]] [[[]]] [[[[[[[]]]]]] [[[]]]]
133 [[[[[[[[]]]]]]] [[[[]]]]] [[[[[[[[]]]]]]]]
134 [[[[[[[[]]]]]] [[[]]]] [[[[[[[]]]]]]]] [[[]]]
135 [[[[[[]]]]]] [[[[]]]] [[[[]]]]  [[[]]]
136 [[[[]]]   [[[[]]]]] [[[[[[[[[]]]]]]]]]
137 [[[[[]]]   [[[[]]]]] [[[[[[[[[]]]]]]]]]]
138 [[[[[[[[]]]]]] [[[]]]] [[[]]]] [[[[[[[]]]]]]]
139 [[[[[[[[[]]]]]] [[[]]]] [[[]]]] [[[[[[[]]]]]]]]
140 [[[[[[[[]]]]]]]] [[[]]] [[[[[[]]]]]] [[[]]]
141 [[[[[[[[[]]]]]] [[[]]]] [[[]]]] [[[]]]] [[[[]]]]
142 [[[[[[[]]]]]] [[[]]] [[[[[[[[]]]]]]]]] [[[]]]
143 [[[[[[[[]]]]]]] [[[]]]] [[[[[[[]]]]]] [[[]]]]
144 [[[[[[[]]]]]]] [[[]]]  [[[]]]
145 [[[[[[[[[]]]]]]]] [[[[[]]]]]] [[[[[[]]]]]]
146 [[[[[[[[]]]]]]] [[[]]] [[[[[[[]]]]]]]] [[[]]]
147 [[[[[[[[]]]]]]]] [[[[]]]] [[[[[[[[]]]]]]]]
148 [[[[[[[[]]]]]]]  [[[]]]] [[[[[]]]]]
149 [[[[[[[[[]]]]]]]  [[[]]]] [[[[[]]]]]]
150 [[[[[[]]]]]] [[[[]]]] [[[[[[]]]]]] [[[]]]
151 [[[[[[[]]]]]] [[[[]]]] [[[[[[]]]]]] [[[]]]]
152 [[[[[[[[]]]]]]] [[[[]]]]] [[[[[[[[[]]]]]]]]]
153 [[[[]]]   [[[[]]]]] [[[[]]]]  [[[]]]
154 [[[[[[[[]]]]]]]] [[[]]] [[[[[[[]]]]]] [[[]]]]
155 [[[[[[[[]]]]]]] [[[[[[]]]]]]] [[[[[[]]]]]]
156 [[[[[[[[]]]]]]] [[[]]]] [[[[[[[]]]]]]] [[[]]]
157 [[[[[[[[[]]]]]]] [[[]]]] [[[[[[[]]]]]]] [[[]]]]
158 [[[[[[[[[]]]]]]] [[[]]]] [[[[[[[]]]]]]]] [[[]]]
159 [[[[[[[[[]]]]]]] [[[]]]] [[[[[]]]]]] [[[[]]]]
160 [[[]]]   [[[[]]]] [[[[[[]]]]]] [[[]]]
161 [[[[[[[[]]]]]] [[[]]]] [[[]]]] [[[[[[[[]]]]]]]]
162 [[[[[[[]]]]]]] [[[[]]]] [[[[]]]]  [[[]]]
163 [[[[[[[[]]]]]]] [[[[]]]] [[[[]]]]  [[[]]]]
164 [[[[[[[]]]]]] [[[]]] [[[[[]]]]]] [[[[[]]]]]
165 [[[[[[]]]]]] [[[[]]]] [[[[[[[]]]]]] [[[]]]]
166 [[[[[[[[]]]]]] [[[]]] [[[[[]]]]]] [[[]]]] [[[]]]
167 [[[[[[[[[]]]]]] [[[]]] [[[[[]]]]]] [[[]]]] [[[]]]]
168 [[[[[[[[]]]]]]]] [[[]]] [[[[[[[]]]]]]] [[[]]]
169 [[[[[[[[]]]]]]] [[[]]]]  [[[]]]
170 [[[[]]]   [[[[]]]]] [[[[[[]]]]]] [[[]]]
171 [[[[[[[[]]]]]]] [[[[]]]]] [[[[]]]]  [[[]]]
172 [[[[[[[[[]]]]]]]] [[[[[[[]]]]]]]] [[[[[]]]]]
173 [[[[[[[[[[]]]]]]]] [[[[[[[]]]]]]]] [[[[[]]]]]]
174 [[[[[[[[[]]]]]]]] [[[[[]]]]]] [[[[[[[]]]]]]]
175 [[[[[[]]]]]]  [[[]]] [[[[[[[[]]]]]]]]
176 [[[]]]   [[[[]]]] [[[[[[[]]]]]] [[[]]]]
177 [[[[[[[[[[]]]]]]]] [[[[[]]]]]] [[[]]]] [[[[]]]]
178 [[[[[[[[]]]]]] [[[]]]] [[[[[[[[[]]]]]]]]]] [[[]]]
179 [[[[[[[[[]]]]]] [[[]]]] [[[[[[[[[]]]]]]]]]] [[[]]]]
180 [[[[[[]]]]]] [[[[[]]]]] [[[[]]]]  [[[]]]
181 [[[[[[[]]]]]] [[[[[]]]]] [[[[]]]]  [[[]]]]
182 [[[[[[[[]]]]]]]] [[[]]] [[[[[[[[]]]]]]] [[[]]]]
183 [[[[[[[[]]]]]]] [[[]]] [[[[[[]]]]]]] [[[[]]]]
184 [[[[[[[[]]]]]] [[[]]]] [[[]]]] [[[[[[[[[]]]]]]]]]
185 [[[[[[[[]]]]]]]  [[[]]]] [[[[[[]]]]]]
186 [[[[[[[[]]]]]]] [[[[[[]]]]]]] [[[[[[[]]]]]]]
187 [[[[]]]   [[[[]]]]] [[[[[[[]]]]]] [[[]]]]
188 [[[[[[[[[]]]]]] [[[]]]] [[[]]]] [[[]]]] [[[[[]]]]]
189 [[[[[[[[]]]]]]]] [[[[]]]] [[[[]]]]  [[[]]]
190 [[[[[[[[]]]]]]] [[[[]]]]] [[[[[[]]]]]] [[[]]]
191 [[[[[[[[[]]]]]]] [[[[]]]]] [[[[[[]]]]]] [[[]]]]
192 [[[]]]   [[[[]]]] [[[[[[[]]]]]]] [[[]]]
193 [[[[]]]   [[[[]]]] [[[[[[[]]]]]]] [[[]]]]
194 [[[[[[[[]]]]]]] [[[]]] [[[[[[[[[]]]]]]]]]] [[[]]]
195 [[[[[[]]]]]] [[[[]]]] [[[[[[[[]]]]]]] [[[]]]]
196 [[[[[[[[]]]]]]]] [[[]]]  [[[]]]
197 [[[[[[[[[]]]]]]]] [[[]]]  [[[]]]]
198 [[[[[[[]]]]]]] [[[[]]]] [[[[[[[]]]]]] [[[]]]]
199 [[[[[[[[]]]]]]] [[[[]]]] [[[[[[[]]]]]] [[[]]]]]
200 [[[[[[]]]]]] [[[[[]]]]] [[[[[[]]]]]] [[[]]]
201 [[[[[[[[]]]]]] [[[]]]] [[[[[[[]]]]]]]] [[[[]]]]
202 [[[[[[[]]]]]] [[[]]]  [[[]]]] [[[]]]
203 [[[[[[[[[]]]]]]]] [[[[[]]]]]] [[[[[[[[]]]]]]]]
204 [[[[]]]   [[[[]]]]] [[[[[[[]]]]]]] [[[]]]
205 [[[[[[[]]]]]] [[[]]] [[[[[]]]]]] [[[[[[]]]]]]
206 [[[[[]]]   [[[[]]]]] [[[[[[[]]]]]]]] [[[]]]
207 [[[[[[[[]]]]]] [[[]]]] [[[]]]] [[[[]]]]  [[[]]]
208 [[[]]]   [[[[]]]] [[[[[[[[]]]]]]] [[[]]]]
209 [[[[[[[[]]]]]]] [[[[]]]]] [[[[[[[]]]]]] [[[]]]]
210 [[[[[[]]]]]] [[[[]]]] [[[[[[[[]]]]]]]] [[[]]]
211 [[[[[[[]]]]]] [[[[]]]] [[[[[[[[]]]]]]]] [[[]]]]
212 [[[[[[[[[]]]]]]] [[[]]]] [[[[[]]]]]] [[[[[]]]]]
213 [[[[[[[]]]]]] [[[]]] [[[[[[[[]]]]]]]]] [[[[]]]]
214 [[[[[[[[[[]]]]]]] [[[]]]] [[[[[]]]]]] [[[]]]] [[[]]]
215 [[[[[[[[[]]]]]]]] [[[[[[[]]]]]]]] [[[[[[]]]]]]
216 [[[[[[[]]]]]]]  [[[[]]]]
217 [[[[[[[[]]]]]]] [[[[[[]]]]]]] [[[[[[[[]]]]]]]]
218 [[[[[[[[]]]]]]] [[[]]] [[[[]]]]  [[[]]]] [[[]]]
219 [[[[[[[[]]]]]]] [[[]]] [[[[[[[]]]]]]]] [[[[]]]]
220 [[[[[[[]]]]]] [[[]]]] [[[]]] [[[[[[]]]]]] [[[]]]
221 [[[[]]]   [[[[]]]]] [[[[[[[[]]]]]]] [[[]]]]
222 [[[[[[[[]]]]]]]  [[[]]]] [[[[[[[]]]]]]]
223 [[[[[[[[[]]]]]]]  [[[]]]] [[[[[[[]]]]]]]]
224 [[[]]]   [[[[]]]] [[[[[[[[]]]]]]]] [[[]]]
225 [[[[[[]]]]]] [[[[]]]]  [[[]]]
226 [[[[]]]   [[[[]]]] [[[[[[[[]]]]]]]]] [[[]]]
227 [[[[[]]]   [[[[]]]] [[[[[[[[]]]]]]]]] [[[]]]]
228 [[[[[[[[]]]]]]] [[[[]]]]] [[[[[[[]]]]]]] [[[]]]
229 [[[[[[[[[]]]]]]] [[[[]]]]] [[[[[[[]]]]]]] [[[]]]]
230 [[[[[[[[]]]]]] [[[]]]] [[[]]]] [[[[[[]]]]]] [[[]]]
231 [[[[[[[[]]]]]]]] [[[[]]]] [[[[[[[]]]]]] [[[]]]]
232 [[[[[[[[[]]]]]]]] [[[[[]]]]]] [[[[[[[[[]]]]]]]]]
233 [[[[[[[[[[]]]]]]]] [[[[[]]]]]] [[[[[[[[[]]]]]]]]]]
234 [[[[[[[]]]]]]] [[[[]]]] [[[[[[[[]]]]]]] [[[]]]]
235 [[[[[[[[[]]]]]] [[[]]]] [[[]]]] [[[]]]] [[[[[[]]]]]]
236 [[[[[[[[[[]]]]]]]] [[[[[]]]]]] [[[]]]] [[[[[]]]]]
237 [[[[[[[[[]]]]]]] [[[]]]] [[[[[[[]]]]]]]] [[[[]]]]
238 [[[[]]]   [[[[]]]]] [[[[[[[[]]]]]]]] [[[]]]
239 [[[[[]]]   [[[[]]]]] [[[[[[[[]]]]]]]] [[[]]]]
240 [[[[[[]]]]]] [[[[[]]]]] [[[[[[[]]]]]]] [[[]]]
241 [[[[[[[]]]]]] [[[[[]]]]] [[[[[[[]]]]]]] [[[]]]]
242 [[[[[[[]]]]]] [[[]]]] [[[]]] [[[[[[[]]]]]] [[[]]]]
243 [[[[]]]]  [[[[[[]]]]]]
244 [[[[[[[[]]]]]]] [[[]]] [[[[[[]]]]]]] [[[[[]]]]]
245 [[[[[[[[]]]]]]]] [[[[[[]]]]]] [[[[[[[[]]]]]]]]
246 [[[[[[[]]]]]] [[[]]] [[[[[]]]]]] [[[[[[[]]]]]]]
247 [[[[[[[[]]]]]]] [[[[]]]]] [[[[[[[[]]]]]]] [[[]]]]
248 [[[[[[[[]]]]]]] [[[[[[]]]]]]] [[[[[[[[[]]]]]]]]]
249 [[[[[[[[]]]]]] [[[]]] [[[[[]]]]]] [[[]]]] [[[[]]]]
250 [[[[[[]]]]]]  [[[]]] [[[[[[]]]]]] [[[]]]
251 [[[[[[[]]]]]]  [[[]]] [[[[[[]]]]]] [[[]]]]
252 [[[[[[[[]]]]]]]] [[[[]]]] [[[[[[[]]]]]]] [[[]]]
253 [[[[[[[[]]]]]] [[[]]]] [[[]]]] [[[[[[[]]]]]] [[[]]]]
254 [[[[[[[[[]]]]]]]] [[[]]] [[[[]]]]  [[[]]]] [[[]]]
255 [[[[]]]   [[[[]]]]] [[[[[[]]]]]] [[[[]]]]
256 [[[[[]]]]]   [[[]]]
8191 [[[[[[[[[]]]]]]] [[[]]]] [[[[[[[[]]]]]]]] [[[[[[]]]]]] [[[]]] [[[[]]]] [[[[]]]]]
13071 [[[[[[[[[[[]]]]]]] [[[[]]]] [[[[]]]]  [[[]]]] [[[[[]]]]]] [[[]]]] [[[[[[]]]]]] [[[]]]]
524287 [[[[[[[[[]]]]]]] [[[[]]]]] [[[]]] [[[[[[[[]]]]]]]] [[[[]]]] [[[[[[[[]]]]]]] [[[]]] [[[[[[[]]]]]]]] [[[[]]]] [[[[]]]]]
2147483647 [[[[[[[[[[[]]]]]]]]] [[[[]]]] [[[[[[[[]]]]]]]] [[[]]]] [[[[]]]] [[[[[[[[[]]]]]]] [[[]]]] [[[[[[]]]]]] [[[]]]] [[[[[[[]]]]]]][[[[[[[[[]]]]]]]] [[[[[[[]]]]]]]] [[[[[[[]]]]]]] [[[[[[]]]]]]  [[[[]]]]]
1449565302 [[[[[[[[[[[[[]]]]]]]] [[[]]] [[[[]]]]  [[[]]]] [[[[[]]]]]] [[[]]]] [[[]]]] [[[[[[[[[]]]]]] [[[]]]] [[[]]]] [[[[[[[]]]]]]]] [[[[[[]]]]]] [[[]]][[[[[[[[]]]]]]] [[[]]]] [[[[]]]] [[[[[[[[[]]]]]]]] [[[[[]]]]]]  [[[[]]]]]
1746268229 [[[[[[[[[[]]]]]] [[[]]]] [[[[[[[]]]]]]]] [[[[]]]  [[[[[]]]]]] [[[[[[[[[]]]]]]]] [[[[[[[]]]]]]]] [[[[[[[[]]]]]]] [[[[]]]]]][[[[[[[[[]]]]]]]] [[[[[[[]]]]]]]] [[[[[[[[]]]]]]]] [[[[[]]]]]  [[[[]]]]]
126528612 [[[[[[[[[[[]]]]]] [[[]]]] [[[[[[[]]]]]]]] [[[[[]]]]]] [[[[[[[]]]]]]] [[[]]]] [[[[[[[[]]]]]]]][[[[[[[]]]]]]  [[[]]] [[[[[[]]]]]] [[[]]]] [[[]]]  [[[[]]]]]
778085967 [[[[[[[[[[]]]]]]]] [[[[[[[]]]]]]] [[[[[[[[]]]]]]] [[[]]]] [[[]]]] [[[[[[[[[]]]]]]] [[[]]]] [[[[[]]]]]] [[[[[[]]]]]][[[[[[[[[]]]]]] [[[]]] [[[[[]]]]]] [[[]]]] [[[]]]]  [[[[[]]]]]]
1553783038 [[[[[[[[[]]]]]]] [[[]]]] [[[[]]]] [[[[[[]]]]]]  [[[]]] [[[[[[[[[]]]]]]] [[[]]] [[[[[[[[[]]]]]]]]]] [[[[[[]]]]]] [[[]]]][[[[]]]   [[[[]]]] [[[[[[[]]]]]]] [[[]]]] [[[[[[[]]]]]]]  [[[[]]]]]
997599288 [[[[[[[[]]]]]] [[[]]]] [[[[[[[[]]]]]]]] [[[[[[[]]]]]] [[[]]]] [[[]]]  [[[[[[]]]]]] [[[[[[[]]]]]] [[[]]]] [[[]]][[[[[[[[]]]]]]]  [[[]]]] [[[[]]]]  [[[[]]]]  [[[[]]]]]

Mathematica
Note: This algorithm is never going to be able to get anywhere near the larger test numbers. I'd need a substantially different approach, so I'll just leave it as is for others to check their lower numbers against. You may consider this submission invalid.
Here is a start for the first 256 numbers (the others were added after I started, and I probably need to find a separate solution for those)
1=[[]]
2=[[[]]]
3=[[[[]]]]
4=[[[[[]]]]]
5=[[[[[[]]]]]]
6=[[[[[[[]]]]]]]
7=[[[[[[[[]]]]]]]]
8=[[[]]]  [[[[]]]]
9=[[[[]]]]  [[[]]]
10=[[[[[]]]]  [[[]]]]
11=[[[[[[]]]]  [[[]]]]]
12=[[[[[]]]]] [[[[]]]]
13=[[[[[[]]]]] [[[[]]]]]
14=[[[[[[[]]]]] [[[[]]]]]]
15=[[[[[[]]]]]] [[[[]]]]
16=[[[]]]   [[[[]]]]
17=[[[[]]]   [[[[]]]]]
18=[[[[[]]]   [[[[]]]]]]
19=[[[[[[]]]   [[[[]]]]]]]
20=[[[[[[]]]]]] [[[[[]]]]]
21=[[[[[[[]]]]]] [[[[[]]]]]]
22=[[[[[[[[]]]]]] [[[[[]]]]]]]
23=[[[[[[[[[]]]]]] [[[[[]]]]]]]]
24=[[[[[[[]]]]]]] [[[[[]]]]]
25=[[[[[[]]]]]]  [[[]]]
26=[[[[[[[]]]]]]  [[[]]]]
27=[[[[]]]]   [[[]]]
28=[[[[[]]]]   [[[]]]]
29=[[[[[[]]]]   [[[]]]]]
30=[[[[[[[]]]]   [[[]]]]]]
31=[[[[[[[[]]]]   [[[]]]]]]]
32=[[[]]]  [[[[[[]]]]]]
33=[[[[]]]  [[[[[[]]]]]]]
34=[[[[[]]]  [[[[[[]]]]]]]]
35=[[[[[[]]]  [[[[[[]]]]]]]]]
36=[[[[[[[]]]]]]]  [[[]]]
37=[[[[[[[[]]]]]]]  [[[]]]]
38=[[[[[[[[[]]]]]]]  [[[]]]]]
39=[[[[[[[[[[]]]]]]]  [[[]]]]]]
40=[[[]]]  [[[[]]]] [[[[[[]]]]]]
41=[[[[]]]  [[[[]]]] [[[[[[]]]]]]]
42=[[[[[[[[]]]]]]]] [[[[[[[]]]]]]]
43=[[[[[[[[[]]]]]]]] [[[[[[[]]]]]]]]
44=[[[[[[]]]]  [[[]]]]] [[[[[]]]]]
45=[[[[]]]]  [[[]]] [[[[[[]]]]]]
46=[[[[[]]]]  [[[]]] [[[[[[]]]]]]]
47=[[[[[[]]]]  [[[]]] [[[[[[]]]]]]]]
48=[[[]]]   [[[[]]]] [[[[]]]]
49=[[[[[[[[]]]]]]]]  [[[]]]
50=[[[[[[[[[]]]]]]]]  [[[]]]]
51=[[[[[[[[[[]]]]]]]]  [[[]]]]]
52=[[[[[[[]]]]]]  [[[]]]] [[[]]]
53=[[[[[[[[]]]]]]  [[[]]]] [[[]]]]
54=[[[[]]]]   [[[]]] [[[]]]
55=[[[[[]]]]   [[[]]] [[[]]]]
56=[[[[[]]]]   [[[]]]] [[[]]]
57=[[[[[[]]]]   [[[]]]] [[[]]]]
58=[[[[[[]]]]   [[[]]]]] [[[]]]
59=[[[[[[[]]]]   [[[]]]]] [[[]]]]
60=[[[[[[[]]]]   [[[]]]]]] [[[]]]
61=[[[[[[[[]]]]   [[[]]]]]] [[[]]]]
62=[[[[[[[[]]]]   [[[]]]]]]] [[[]]]
63=[[[[]]]]  [[[]]] [[[[[[[[]]]]]]]]
64=[[[[[]]]]]  [[[[]]]]
65=[[[[[[]]]]]  [[[[]]]]]
66=[[[[[[[]]]]]  [[[[]]]]]]
67=[[[[[[[[]]]]]  [[[[]]]]]]]
68=[[[[[[[[[]]]]]  [[[[]]]]]]]]
69=[[[[[[[[[[]]]]]  [[[[]]]]]]]]]
70=[[[[[[[[[[[]]]]]  [[[[]]]]]]]]]]
71=[[[[[[[[[[[[]]]]]  [[[[]]]]]]]]]]]
72=[[[[[[[]]]]]]]  [[[]]] [[[]]]
73=[[[[[[[[]]]]]]]  [[[]]] [[[]]]]
74=[[[[[[[[]]]]]]]  [[[]]]] [[[]]]
75=[[[[[[]]]]]]  [[[]]] [[[[]]]]
76=[[[[[[[]]]]]]  [[[]]] [[[[]]]]]
77=[[[[[[[[]]]]]]  [[[]]] [[[[]]]]]]
78=[[[[[[[]]]]]]  [[[]]]] [[[[]]]]
79=[[[[[[[[]]]]]]  [[[]]]] [[[[]]]]]
80=[[[]]]   [[[[]]]] [[[[[[]]]]]]
81=[[[[]]]]  [[[[[]]]]]
82=[[[[[]]]]  [[[[[]]]]]]
83=[[[[[[]]]]  [[[[[]]]]]]]
84=[[[[[[[]]]]  [[[[[]]]]]]]]
85=[[[[[[[[]]]]  [[[[[]]]]]]]]]
86=[[[[[[[[[]]]]  [[[[[]]]]]]]]]]
87=[[[[[[]]]]   [[[]]]]] [[[[]]]]
88=[[[[[[[]]]]   [[[]]]]] [[[[]]]]]
89=[[[[[[[[]]]]   [[[]]]]] [[[[]]]]]]
90=[[[[[[[]]]]   [[[]]]]]] [[[[]]]]
91=[[[[[[[[]]]]   [[[]]]]]] [[[[]]]]]
92=[[[[[[[[[]]]]   [[[]]]]]] [[[[]]]]]]
93=[[[[[[[[]]]]   [[[]]]]]]] [[[[]]]]
94=[[[[[[[[[]]]]   [[[]]]]]]] [[[[]]]]]
95=[[[[[[]]]   [[[[]]]]]]] [[[[[[]]]]]]
96=[[[]]]  [[[[[[]]]]]] [[[[]]]]
97=[[[[]]]  [[[[[[]]]]]] [[[[]]]]]
98=[[[[[[[[]]]]]]]]  [[[]]] [[[]]]
99=[[[[]]]  [[[[[[]]]]]]] [[[[]]]]
100=[[[[[]]]]  [[[]]]]  [[[]]]
101=[[[[[[]]]]  [[[]]]]  [[[]]]]
102=[[[[[[[]]]]  [[[]]]]  [[[]]]]]
103=[[[[[[[[]]]]  [[[]]]]  [[[]]]]]]
104=[[[[[[[]]]]]]  [[[]]]] [[[[[]]]]]
105=[[[[[[[[]]]]]]  [[[]]]] [[[[[]]]]]]
106=[[[[[[[[[]]]]]]  [[[]]]] [[[[[]]]]]]]
107=[[[[[[[[[[]]]]]]  [[[]]]] [[[[[]]]]]]]]
108=[[[[]]]]   [[[]]] [[[[[]]]]]
109=[[[[[]]]]   [[[]]] [[[[[]]]]]]
110=[[[[[[]]]]   [[[]]] [[[[[]]]]]]]
111=[[[[[[[[]]]]]]]  [[[]]]] [[[[]]]]
112=[[[[[]]]]   [[[]]]] [[[[[]]]]]
113=[[[[[[]]]]   [[[]]]] [[[[[]]]]]]
114=[[[[[[[]]]]   [[[]]]] [[[[[]]]]]]]
115=[[[[[[[[]]]]   [[[]]]] [[[[[]]]]]]]]
116=[[[[[[]]]]   [[[]]]]] [[[[[]]]]]
117=[[[[[[[]]]]   [[[]]]]] [[[[[]]]]]]
118=[[[[[[[[]]]]   [[[]]]]] [[[[[]]]]]]]
119=[[[[]]]   [[[[]]]]] [[[[[[[[]]]]]]]]
120=[[[[[[[]]]]   [[[]]]]]] [[[[[]]]]]
121=[[[[[[]]]]  [[[]]]]]  [[[]]]
122=[[[[[[[]]]]  [[[]]]]]  [[[]]]]
123=[[[[[[[[]]]]  [[[]]]]]  [[[]]]]]
124=[[[[[[[[[]]]]  [[[]]]]]  [[[]]]]]]
125=[[[[[[]]]]]]  [[[[]]]]
126=[[[[[[[]]]]]]  [[[[]]]]]
127=[[[[[[[[]]]]]]  [[[[]]]]]]
128=[[[]]]  [[[[[[[[]]]]]]]]
129=[[[[]]]  [[[[[[[[]]]]]]]]]
130=[[[[[]]]  [[[[[[[[]]]]]]]]]]
131=[[[[[[]]]  [[[[[[[[]]]]]]]]]]]
132=[[[[[[[]]]]]  [[[[]]]]]] [[[]]]
133=[[[[[[[[]]]]]  [[[[]]]]]] [[[]]]]
134=[[[[[[[[]]]]]  [[[[]]]]]]] [[[]]]
135=[[[[]]]]   [[[]]] [[[[[[]]]]]]
136=[[[[[]]]]   [[[]]] [[[[[[]]]]]]]
137=[[[[[[]]]]   [[[]]] [[[[[[]]]]]]]]
138=[[[[[[[]]]]   [[[]]] [[[[[[]]]]]]]]]
139=[[[[[[[[]]]]   [[[]]] [[[[[[]]]]]]]]]]
140=[[[[[]]]]   [[[]]]] [[[[[[]]]]]]
141=[[[[[[]]]]   [[[]]]] [[[[[[]]]]]]]
142=[[[[[[[]]]]   [[[]]]] [[[[[[]]]]]]]]
143=[[[[[[[[]]]]   [[[]]]] [[[[[[]]]]]]]]]
144=[[[[[[[]]]]]]]  [[[]]] [[[[[]]]]]
145=[[[[[[]]]]   [[[]]]]] [[[[[[]]]]]]
146=[[[[[[[]]]]   [[[]]]]] [[[[[[]]]]]]]
147=[[[[[[[[]]]]]]]]  [[[]]] [[[[]]]]
148=[[[[[[[[[]]]]]]]]  [[[]]] [[[[]]]]]
149=[[[[[[[[[[]]]]]]]]  [[[]]] [[[[]]]]]]
150=[[[[[[]]]]]]  [[[]]] [[[[[[[]]]]]]]
151=[[[[[[[]]]]]]  [[[]]] [[[[[[[]]]]]]]]
152=[[[[[[[[[]]]]]]]  [[[]]]]] [[[[[]]]]]
153=[[[[]]]   [[[[]]]]] [[[[]]]]  [[[]]]
154=[[[[[]]]   [[[[]]]]] [[[[]]]]  [[[]]]]
155=[[[[[[[[]]]]   [[[]]]]]]] [[[[[[]]]]]]
156=[[[[[[[]]]]]]  [[[]]]] [[[[[[[]]]]]]]
157=[[[[[[[[]]]]]]  [[[]]]] [[[[[[[]]]]]]]]
158=[[[[[[[[]]]]]]  [[[]]]] [[[[]]]]] [[[]]]
159=[[[[[[[[]]]]]]  [[[]]]] [[[]]]] [[[[]]]]
160=[[[]]]  [[[[[[]]]]]] [[[[[[]]]]]]
161=[[[[]]]  [[[[[[]]]]]] [[[[[[]]]]]]]
162=[[[[]]]]  [[[[[]]]]] [[[]]]
163=[[[[[]]]]  [[[[[]]]]] [[[]]]]
164=[[[[[]]]]  [[[[[]]]]]] [[[]]]
165=[[[[[[]]]]  [[[[[]]]]]] [[[]]]]
166=[[[[[[]]]]  [[[[[]]]]]]] [[[]]]
167=[[[[[[[]]]]  [[[[[]]]]]]] [[[]]]]
168=[[[[[[[]]]]  [[[[[]]]]]]]] [[[]]]
169=[[[[[[]]]]] [[[[]]]]]  [[[]]]
170=[[[[[[[]]]]] [[[[]]]]]  [[[]]]]
171=[[[[[[[[]]]]] [[[[]]]]]  [[[]]]]]
172=[[[[[[[[[]]]]] [[[[]]]]]  [[[]]]]]]
173=[[[[[[[[[[]]]]] [[[[]]]]]  [[[]]]]]]]
174=[[[[[[]]]]   [[[]]]]] [[[[[[[]]]]]]]
175=[[[[[[]]]]]]  [[[]]] [[[[[[[[]]]]]]]]
176=[[[]]]   [[[[]]]] [[[[[[]]]]  [[[]]]]]
177=[[[[[[[]]]]   [[[]]]]] [[[]]]] [[[[]]]]
178=[[[[[[[[]]]]   [[[]]]]] [[[]]]] [[[[]]]]]
179=[[[[[[[[[]]]]   [[[]]]]] [[[]]]] [[[[]]]]]]
180=[[[[[[[]]]]]]]  [[[]]] [[[[[[]]]]]]
181=[[[[[[[[]]]]]]]  [[[]]] [[[[[[]]]]]]]
182=[[[[[[[[[]]]]]]]  [[[]]] [[[[[[]]]]]]]]
183=[[[[[[[[[[]]]]]]]  [[[]]] [[[[[[]]]]]]]]]
184=[[[[[]]]]  [[[]]] [[[[[[]]]]]]] [[[[[]]]]]
185=[[[[[[[[]]]]]]]  [[[]]]] [[[[[[]]]]]]
186=[[[[[[[[[]]]]]]]  [[[]]]] [[[[[[]]]]]]]
187=[[[[]]]   [[[[]]]]] [[[[[[]]]]  [[[]]]]]
188=[[[[[]]]   [[[[]]]]] [[[[[[]]]]  [[[]]]]]]
189=[[[[]]]]   [[[]]] [[[[[[[[]]]]]]]]
190=[[[[[]]]]   [[[]]] [[[[[[[[]]]]]]]]]
191=[[[[[[]]]]   [[[]]] [[[[[[[[]]]]]]]]]]
192=[[[[[]]]]]  [[[[]]]] [[[[]]]]
193=[[[[[[]]]]]  [[[[]]]] [[[[]]]]]
194=[[[[[[[]]]]]  [[[[]]]] [[[[]]]]]]
195=[[[[[[]]]]]  [[[[]]]]] [[[[]]]]
196=[[[[[[[]]]]] [[[[]]]]]]  [[[]]]
197=[[[[[[[[]]]]] [[[[]]]]]]  [[[]]]]
198=[[[[[[[]]]]]  [[[[]]]]]] [[[[]]]]
199=[[[[[[[[]]]]]  [[[[]]]]]] [[[[]]]]]
200=[[[[[]]]]  [[[]]]]  [[[]]] [[[]]]
201=[[[[[[]]]]  [[[]]]]  [[[]]] [[[]]]]
202=[[[[[[]]]]  [[[]]]]  [[[]]]] [[[]]]
203=[[[[[[[]]]]  [[[]]]]  [[[]]]] [[[]]]]
204=[[[[[[[[[]]]]]  [[[[]]]]]]]] [[[[]]]]
205=[[[[[[[[[[]]]]]  [[[[]]]]]]]] [[[[]]]]]
206=[[[[[[[[]]]]  [[[]]]]  [[[]]]]]] [[[]]]
207=[[[[[[[[[[]]]]]  [[[[]]]]]]]]] [[[[]]]]
208=[[[]]]   [[[[]]]] [[[[[[]]]]] [[[[]]]]]
209=[[[[]]]   [[[[]]]] [[[[[[]]]]] [[[[]]]]]]
210=[[[[[[[]]]]   [[[]]]]]] [[[[[[[[]]]]]]]]
211=[[[[[[[[]]]]   [[[]]]]]] [[[[[[[[]]]]]]]]]
212=[[[[[[[[]]]]]]  [[[]]]] [[[]]]] [[[[[]]]]]
213=[[[[[[[[[[[[]]]]]  [[[[]]]]]]]]]]] [[[[]]]]
214=[[[[[[[[[[[[[]]]]]  [[[[]]]]]]]]]]] [[[[]]]]]
215=[[[[[[[[[]]]]]]]] [[[[[[[]]]]]]]] [[[[[[]]]]]]
216=[[[[[[[]]]]]]]  [[[[]]]]
217=[[[[[[[[]]]]]]]  [[[[]]]]]
218=[[[[[[[[[]]]]]]]  [[[[]]]]]]
219=[[[[[[[[[[]]]]]]]  [[[[]]]]]]]
220=[[[[[[[[[[[]]]]]]]  [[[[]]]]]]]]
221=[[[[[[[[[[[[]]]]]]]  [[[[]]]]]]]]]
222=[[[[[[[[[[[[[]]]]]]]  [[[[]]]]]]]]]]
223=[[[[[[[[[[[[[[]]]]]]]  [[[[]]]]]]]]]]]
224=[[[[[]]]]   [[[]]]] [[[]]]  [[[[]]]]
225=[[[[[[]]]]]]  [[[]]] [[[[]]]]  [[[]]]
226=[[[[[[[]]]]]]  [[[]]] [[[[]]]]  [[[]]]]
227=[[[[[[[[]]]]]]  [[[]]] [[[[]]]]  [[[]]]]]
228=[[[[[[]]]]   [[[]]]] [[[]]]] [[[[[]]]]]
229=[[[[[[[]]]]   [[[]]]] [[[]]]] [[[[[]]]]]]
230=[[[[[[[[]]]]   [[[]]]] [[[]]]] [[[[[]]]]]]]
231=[[[[]]]  [[[[[[]]]]]]] [[[[[[[[]]]]]]]]
232=[[[[[[]]]]   [[[]]]]] [[[]]]  [[[[]]]]
233=[[[[[[[]]]]   [[[]]]]] [[[]]]  [[[[]]]]]
234=[[[[[[[]]]]]]  [[[]]]] [[[[]]]]  [[[]]]
235=[[[[[[[[]]]]]]  [[[]]]] [[[[]]]]  [[[]]]]
236=[[[[[[[]]]]   [[[]]]]] [[[]]]] [[[[[]]]]]
237=[[[[[[[[]]]]]]  [[[]]]] [[[[]]]]] [[[[]]]]
238=[[[[[]]]  [[[[[[]]]]]]]] [[[[[[[[]]]]]]]]
239=[[[[[[]]]  [[[[[[]]]]]]]] [[[[[[[[]]]]]]]]]
240=[[[]]]   [[[[]]]] [[[[[[]]]]]] [[[[]]]]
241=[[[[]]]   [[[[]]]] [[[[[[]]]]]] [[[[]]]]]
242=[[[[[[]]]]  [[[]]]]]  [[[]]] [[[]]]
243=[[[[]]]]  [[[[[[]]]]]]
244=[[[[[]]]]  [[[[[[]]]]]]]
245=[[[[[[]]]]  [[[[[[]]]]]]]]
246=[[[[[[[]]]]  [[[[[[]]]]]]]]]
247=[[[[[[[[]]]]  [[[[[[]]]]]]]]]]
248=[[[[[[[[[]]]]  [[[[[[]]]]]]]]]]]
249=[[[[[[]]]]  [[[[[]]]]]]] [[[[]]]]
250=[[[[[[]]]]]]  [[[[]]]] [[[]]]
251=[[[[[[[]]]]]]  [[[[]]]] [[[]]]]
252=[[[[[[[]]]]]]  [[[[]]]]] [[[]]]
253=[[[[[[[[]]]]]]  [[[[]]]]] [[[]]]]
254=[[[[[[[[]]]]]]  [[[[]]]]]] [[[]]]
255=[[[[[[[[[]]]]]]  [[[[]]]]]] [[[]]]]
256=[[[[[]]]]]   [[[]]]

The total length of the first 256 numbers is 7963 characters. I don't know if this is optimal.
Ignoring addition, the results for 8191 and 13071 were found in a few seconds and 524387 in a couple of minutes as
8191=[[[[[[[[]]]]]]  [[[[]]]]] [[[[[[]]]]]  [[[[]]]]]]
13071=[[[[[[[[]]]]]  [[[[]]]]]]  [[[]]]] [[[[]]]]
524387=[[[[[[[[]]]]]  [[[[]]]]] [[[[[]]]]]  [[[[]]]]] [[[[[[[]]]]]]  [[[[]]]]]]

at 164 characters together.
Here is the code:
ClearAll[repr, sl, i, j, op, re, frontop, rearop, lastop];
repr[n_] = "";
repr[0] = "[]";
(*Hard-code higher-order solutions*)
repr[65536] = "[[[]]]    [[[[]]]]";
repr[16] = "[[[]]]   [[[[]]]]";
repr[27] = "[[[[]]]]   [[[]]]";
repr[256] = "[[[[[]]]]]   [[[]]]";
repr[3125] = "[[[[[[]]]]]]   [[[]]]";
repr[46656] = "[[[[[[[]]]]]]]   [[[]]]";
repr[823543] = "[[[[[[[[]]]]]]]]   [[[]]]";
repr[16777216] = "[[[[[[[[[]]]]]]]]]   [[[]]]";
repr[387420489] = "[[[[[[[[[[]]]]]]]]]]   [[[]]]";
frontop[n_] = 2;
rearop[n_] = 2;
sl[n_] := If[repr[n] == "", Infinity, StringLength@repr@n];
n = 256;
op[0] := (# + #2) &
op[1] := (#*#2) &
op[2] := (#^#2) &
re[0] := (repr@# <> repr@#2) &
re[1] := (repr@# <> " " <> repr@#2) &
re[2] := (repr@# <> "  " <> repr@#2) &
For[i = 0, i < n, ++i,
  If[sl[i + 1] >= sl[i] + 2,
   repr[i + 1] = "[" <> repr[i] <> "]";
   frontop[i + 1] = 2; rearop[i + 1] = 2
   ];
  For[m = 0, m < 3, ++m,
   If[rearop[i] >= m,
    For[j = 1, j <= i, ++j,
     If[frontop[j] < m || (res = op[m][i, j]) > n, Break[]];
     rep = re[m][i, j];
     If[sl[res] > StringLength@rep ||
       sl[res] == StringLength@rep && m > frontop[res],
      repr[res] = rep;
      If[m == 2,
       frontop[res] = 2; rearop[res] = 1,
       frontop[res] = m;
       rearop[res] = m
       ]
      ]
     ]
    ];
   If[frontop[i] >= m,
    For[j = 1, j <= i, ++j,
     If[rearop[j] < m || (res = op[m][j, i]) > n, Break[]];
     rep = re[m][j, i];
     If[sl[res] > StringLength@rep ||
       sl[res] == StringLength@rep && m > frontop[res],
      repr[res] = rep;
      If[m == 2,
       frontop[res] = 2; rearop[res] = 1,
       frontop[res] = m;
       rearop[res] = m
       ]
      ]
     ]
    ]
   ];
  ];

I used an exhaustive search up to exponentiation. There is no tetration or higher-order operations. I just tried the higher-order operations manually, and there's only a handful combinations which actually yield numbers below 231, so I just hardcoded those that work.
Edit: My previous solution didn't not bother about precedence, it just threw things together. Now I think my new code fixes that, but non of the first 256 numbers have changed, nor has 8191 (which was valid before, I checked)... and it's to late for me to tell right now if my code actually fixed it. I'll have another look tomorrow and also add an explanation, because now with the precedence checking it's a bit convoluted (hopefully it should reduce search time though).
Edit: Okay, there were some bugs as expected. I think I fixed it now, increasing the total length for 1 - 256 to 7963. I'm not sure this is optimal any longer, because it might be possible to find shorter solutions from suboptimal parts if they allow higher-order operations. An explanation will follow when I manage to clean up the code a bit.

Sorry to keep changing things on you but I've updated the list format to something more readable. Last big change I swear!

Also looks like you're missing 256.

@Calvin'sHobbies Fixed and added tetration. I believe I've solved the 1 to 256 range optimally.

your 1-256 seems to be 8181 characters with a newline or semicolon between each. nice work, overall!

Your 16 seems to be suboptimal. You're expressing 16 as 4^2, which is 18 characters, whereas with 2^^3, it would be 17 characters.

@isaacg You're right, I forgot to add that to the hardcoded list, that actually shortened a bunch of others, too. But I think I figured out operator precedence, so need to add that now.

@Sparr Do we count delimiters?

@MartinBüttner in the original scoring it said to count the semicolons. with the new scoring I think you're right, no delimiters.

repr[16777216] = "[[[]]] [[[[]]]] [[[]]]"; seems wrong. to me that says 2^(3^^2). A problem with precedence in your original calculator?

@Calvin'sHobbies Thanks for accepting this answer, but shouldn't you accept Sparr's better one? Mine doesn't even handle all benchmark inputs.

@MartinBüttner Yes, didn't realize this was invalid. I have way too many unaccepted questions...

Python 9219b
This is my second entry. I started from scratch and tried a new arrangement of the data, including using the blist package for sorted lists and dicts, and some new approaches for finding large solutions. I think I've got an optimal 1-256. Increasing runtime from 30s to 4m shortened the big test cases by about 30 bytes.
# https://pypi.python.org/pypi/blist/
# provides sorteddict
from blist import *

import math, sys

TABLE_SIZE=2**8
MAX_INT = 2**31

repr = sorteddict()

for i in range(12):
    repr[i] = sorteddict({(i*2+2,-1,-1):("["*(i+1)+"]"*(i+1), str(i))});

repr    [65536] = sorteddict({(18, 4, 4):("[[[]]]    [[[[]]]]", "2^^^3")}); # 2^^^3 = 2^^(2^^2) = 2^(2^(2^2))
repr       [16] = sorteddict({(17, 3, 3):("[[[]]]   [[[[]]]]", "2^^3")}); # 2^^3 = 2^(2^2)
repr       [27] = sorteddict({(17, 3, 3):("[[[[]]]]   [[[]]]", "3^^2")}); # 3^^2 = 3^3
repr      [256] = sorteddict({(19, 3, 3):("[[[[[]]]]]   [[[]]]", "4^^2")}); # 4^^2 = 4^4
repr     [3125] = sorteddict({(21, 3, 3):("[[[[[[]]]]]]   [[[]]]", "5^^2")}); # 5^^2 = 5^5
repr    [46656] = sorteddict({(23, 3, 3):("[[[[[[[]]]]]]]   [[[]]]", "6^^2")}); # 6^^2 = 6^6
repr   [823543] = sorteddict({(25, 3, 3):("[[[[[[[[]]]]]]]]   [[[]]]", "7^^2")}); # 7^^2 = 7^7
repr [16777216] = sorteddict({(27, 3, 3):("[[[[[[[[[]]]]]]]]]   [[[]]]", "8^^2")}); # 8^^2 = 8^8
repr[387420489] = sorteddict({(29, 3, 3):("[[[[[[[[[[]]]]]]]]]]   [[[]]]", "9^^2")}); # 9^^2 = 9^9

def expr_to_repr(a,op,b):
    rep_a = None
    for d,r in repr[a].iteritems():
        op_min, op_max = ((0,9),(1,9),(3,9))[op]
        if (d[1]==-1 or d[1]>=op_min) and d[2]<=op_max:
            rep_a = (d,r)
            break
    if not rep_a:
        rep_a = ((a*2+2,-1,-1),("["*(a+1)+"]"*(a+1), str(a)));

    rep_b = None
    for d,r in repr[b].iteritems():
        op_min, op_max = ((0,9),(1,9),(3,9))[op]
        if (d[1]==-1 or d[1]>=op_min) and d[2]<=op_max:
            rep_b = (d,r)
            break
    if not rep_b:
        rep_b = ((b*2+2,-1,-1),("["*(b+1)+"]"*(b+1), str(b)));

    r = rep_a[1][0] + " "*op + rep_b[1][0]

    return (
            (
                len(r),
                min(op, rep_a[0][1] if rep_a[0][1]!=-1 else op, rep_b[0][1] if rep_b[0][1]!=-1 else op),
                max(op, rep_a[0][2], rep_b[0][2])
            ),
            (
                r,
                expr_to_string(rep_a[1][1],op,rep_b[1][1])
            )
        );

def opsym(op):
    return ("+","*","^","^^")[op]

def expr_to_string(a,op,b):
    return str(a) + opsym(op) + str(b)

def calc(a,op,b):
    if op == 0:
        return min(a+b,MAX_INT)
    elif op == 1:
        return min(a*b,MAX_INT)
    elif op == 2:
        if (b*math.log10(a)>math.log10(MAX_INT)):
            return MAX_INT
        return min(a**b,MAX_INT)
    else:
        t = a
        for h in range(b):
            t = calc(a,op-1,t)
            if t>=MAX_INT:
                t = MAX_INT
                break
        return t

def populate_repr(a,op,b):
    o = (a,op,b)
    n = calc(*o)
    if n == MAX_INT:
        return n
    if n not in repr:
        repr[n] = sorteddict()
    r = expr_to_repr(*o)
    if conditional_replace_repr(n,r):
        for i in range(1,11):
            conditional_replace_repr(n+i,
                (
                    (
                        r[0][0]+i*2,
                        -1,
                        -1
                    ),
                    (
                        "["*i + r[1][0] + "]"*i,
                        "(" + r[1][1] + "+" + str(i) + ")"
                    )
                )
            )
    return n

def conditional_replace_repr(n,new_rep):
    if n not in repr:
        repr[n] = sorteddict()
        repr[n][new_rep[0]] = new_rep[1]
        return True
    found = None
    repl = False
    for d, r in repr[n].iteritems():
        if d[1] == new_rep[0][1] and d[2] == new_rep[0][2]:
            found = d
            if d[0] > new_rep[0][0]:
                repl = True
            break
    if (not found) or (found and repl):
        repr[n][new_rep[0]] = new_rep[1]
        if found:
            del repr[n][found]
        return True
    return False

def vaguely_decent_repr(n):
    if n <= TABLE_SIZE:
        return repr[n].iteritems().next()[1][0]
    if n in repr:
        return repr[n].iteritems().next()[1][0]
    else:
        keys = sorted(repr.keys(),reverse=True)
        best_rep = None
        tested = 0
        for i in keys:
            if i>n:
                continue
            if tested > 10:
                break
            tested += 1
            cand_rep = vaguely_decent_repr(n-i) + repr[i].iteritems().next()[1][0]
            if (not best_rep) or len(cand_rep) < len(best_rep):
                best_rep = cand_rep
        return best_rep

keys = repr.keys()
for k in keys:
    for d,r in repr[k].iteritems():
        for i in range(1,11):
            conditional_replace_repr(k+i,
                (
                    (
                        d[0]+i*2,
                        -1,
                        -1
                    ),
                    (
                        "["*i + r[0] + "]"*i,
                        "(" + r[1] + "+" + str(i) + ")"
                    )
                )
            )

# initialize the repr array with results of 1..256, 2+2 up to TABLE_SIZE^TABLE_SIZE
for row in range(2,TABLE_SIZE+1):
    for col in range(2,row):
        for op in range(1,3):
            populate_repr(row,op,col)
            if op > 1:
                populate_repr(col,op,row)
    for op in range(1,3):
        populate_repr(row,op,row)
    if row > 10:
        for frac in range(1,10):
            rep_a = repr[row-frac].iteritems().next()
            conditional_replace_repr(row,
                (
                    (
                        rep_a[0][0] + frac*2,
                        -1,
                        -1
                    ),
                    (
                        "["*frac + rep_a[1][0] + "]"*frac,
                        "(" + rep_a[1][1] + "+" + str(frac) + ")"
                    )
                )
            )
        for frac in range(10,row/2):
            rep_a = repr[frac].iteritems().next()
            rep_b = repr[row-frac].iteritems().next()
            conditional_replace_repr(row,
                (
                    (
                        rep_a[0][0]+rep_b[0][0],
                        min(rep_a[0][1],rep_b[0][1]),
                        max(rep_a[0][2],rep_b[0][2])
                    ),
                    (
                        rep_a[1][0] + rep_b[1][0],
                        rep_a[1][1] + "+" + rep_b[1][1]
                    )
                )
            )

# for n,reps in repr.iteritems():
#   for d,r in reps.iteritems():

for n in range(1,257):
    print str(n)+"="+repr[n].iteritems().next()[1][0]

for n in (8191,13071,524287,2147483647,1449565302,1746268229,126528612,778085967,1553783038,997599288):
    print str(n)+"="+vaguely_decent_repr(n)

Output:
1=[[]]
2=[[[]]]
3=[[[[]]]]
4=[[[[[]]]]]
5=[[[[[[]]]]]]
6=[[[[[[[]]]]]]]
7=[[[[[[[[]]]]]]]]
8=[[[]]]  [[[[]]]]
9=[[[[]]]]  [[[]]]
10=[[[[[]]]]  [[[]]]]
11=[[[[[[]]]]  [[[]]]]]
12=[[[[[]]]]] [[[[]]]]
13=[[[[[[]]]]] [[[[]]]]]
14=[[[[[[[]]]]] [[[[]]]]]]
15=[[[[[[]]]]]] [[[[]]]]
16=[[[]]]   [[[[]]]]
17=[[[[]]]   [[[[]]]]]
18=[[[[[]]]   [[[[]]]]]]
19=[[[[[[]]]   [[[[]]]]]]]
20=[[[[[[]]]]]] [[[[[]]]]]
21=[[[[[[[]]]]]] [[[[[]]]]]]
22=[[[[[[[[]]]]]] [[[[[]]]]]]]
23=[[[[[[[[[]]]]]] [[[[[]]]]]]]]
24=[[[[[[[]]]]]]] [[[[[]]]]]
25=[[[[[[]]]]]]  [[[]]]
26=[[[[[[[]]]]]]  [[[]]]]
27=[[[[]]]]   [[[]]]
28=[[[[[]]]]   [[[]]]]
29=[[[[[[]]]]   [[[]]]]]
30=[[[[[[[]]]]   [[[]]]]]]
31=[[[[[[[[]]]]   [[[]]]]]]]
32=[[[]]]  [[[[[[]]]]]]
33=[[[[]]]  [[[[[[]]]]]]]
34=[[[[[]]]  [[[[[[]]]]]]]]
35=[[[[[[]]]  [[[[[[]]]]]]]]]
36=[[[[[[[]]]]]]]  [[[]]]
37=[[[[[[[[]]]]]]]  [[[]]]]
38=[[[[[[[[[]]]]]]]  [[[]]]]]
39=[[[[[[[[[[]]]]]]]  [[[]]]]]]
40=[[[[[]]]]  [[[]]]] [[[[[]]]]]
41=[[[[]]]  [[[[]]]] [[[[[[]]]]]]]
42=[[[[[[[[]]]]]]]] [[[[[[[]]]]]]]
43=[[[[[[[[[]]]]]]]] [[[[[[[]]]]]]]]
44=[[[[[[]]]]  [[[]]]]] [[[[[]]]]]
45=[[[[]]]]  [[[]]] [[[[[[]]]]]]
46=[[[[[]]]]  [[[]]] [[[[[[]]]]]]]
47=[[[[[[]]]]  [[[]]] [[[[[[]]]]]]]]
48=[[[]]]   [[[[]]]] [[[[]]]]
49=[[[[[[[[]]]]]]]]  [[[]]]
50=[[[[[[[[[]]]]]]]]  [[[]]]]
51=[[[[[[[[[[]]]]]]]]  [[[]]]]]
52=[[[[[[[]]]]]]  [[[]]]] [[[]]]
53=[[[[[[[[]]]]]]  [[[]]]] [[[]]]]
54=[[[[]]]]   [[[]]] [[[]]]
55=[[[[[]]]]   [[[]]] [[[]]]]
56=[[[[[]]]]   [[[]]]] [[[]]]
57=[[[[[[]]]]   [[[]]]] [[[]]]]
58=[[[[[[]]]]   [[[]]]]] [[[]]]
59=[[[[[[[]]]]   [[[]]]]] [[[]]]]
60=[[[[[[[]]]]   [[[]]]]]] [[[]]]
61=[[[[[[[[]]]]   [[[]]]]]] [[[]]]]
62=[[[[[[[[]]]]   [[[]]]]]]] [[[]]]
63=[[[[]]]]  [[[]]] [[[[[[[[]]]]]]]]
64=[[[[[]]]]]  [[[[]]]]
65=[[[[[[]]]]]  [[[[]]]]]
66=[[[[[[[]]]]]  [[[[]]]]]]
67=[[[[[[[[]]]]]  [[[[]]]]]]]
68=[[[[[[[[[]]]]]  [[[[]]]]]]]]
69=[[[[[[[[[[]]]]]  [[[[]]]]]]]]]
70=[[[[[[[[[[[]]]]]  [[[[]]]]]]]]]]
71=[[[[[[[[[[[[]]]]]  [[[[]]]]]]]]]]]
72=[[[[[[[]]]]]]]  [[[]]] [[[]]]
73=[[[[[[[[]]]]]]]  [[[]]] [[[]]]]
74=[[[[[[[[]]]]]]]  [[[]]]] [[[]]]
75=[[[[[[]]]]]]  [[[]]] [[[[]]]]
76=[[[[[[[]]]]]]  [[[]]] [[[[]]]]]
77=[[[[[[[[]]]]]]  [[[]]] [[[[]]]]]]
78=[[[[[[[]]]]]]  [[[]]]] [[[[]]]]
79=[[[[[[[[]]]]]]  [[[]]]] [[[[]]]]]
80=[[[]]]   [[[[]]]] [[[[[[]]]]]]
81=[[[[]]]]  [[[[[]]]]]
82=[[[[[]]]]  [[[[[]]]]]]
83=[[[[[[]]]]  [[[[[]]]]]]]
84=[[[[[[[]]]]  [[[[[]]]]]]]]
85=[[[[[[[[]]]]  [[[[[]]]]]]]]]
86=[[[[[[[[[]]]]  [[[[[]]]]]]]]]]
87=[[[[[[]]]]   [[[]]]]] [[[[]]]]
88=[[[[[[[]]]]   [[[]]]]] [[[[]]]]]
89=[[[[[[[[]]]]   [[[]]]]] [[[[]]]]]]
90=[[[[[[[]]]]   [[[]]]]]] [[[[]]]]
91=[[[[[[[[]]]]   [[[]]]]]] [[[[]]]]]
92=[[[[[[[[[]]]]   [[[]]]]]] [[[[]]]]]]
93=[[[[[[[[]]]]   [[[]]]]]]] [[[[]]]]
94=[[[[[[[[[]]]]   [[[]]]]]]] [[[[]]]]]
95=[[[[[[]]]   [[[[]]]]]]] [[[[[[]]]]]]
96=[[[]]]  [[[[[[]]]]]] [[[[]]]]
97=[[[[]]]  [[[[[[]]]]]] [[[[]]]]]
98=[[[[[[[[]]]]]]]]  [[[]]] [[[]]]
99=[[[[]]]  [[[[[[]]]]]]] [[[[]]]]
100=[[[[[]]]]  [[[]]]]  [[[]]]
101=[[[[[[]]]]  [[[]]]]  [[[]]]]
102=[[[[[[[]]]]  [[[]]]]  [[[]]]]]
103=[[[[[[[[]]]]  [[[]]]]  [[[]]]]]]
104=[[[[[[[]]]]]]  [[[]]]] [[[[[]]]]]
105=[[[[[[[[]]]]]]  [[[]]]] [[[[[]]]]]]
106=[[[[[[[[[]]]]]]  [[[]]]] [[[[[]]]]]]]
107=[[[[[[[[[[]]]]]]  [[[]]]] [[[[[]]]]]]]]
108=[[[[]]]]   [[[]]] [[[[[]]]]]
109=[[[[[]]]]   [[[]]] [[[[[]]]]]]
110=[[[[[[]]]]   [[[]]] [[[[[]]]]]]]
111=[[[[[[[[]]]]]]]  [[[]]]] [[[[]]]]
112=[[[[[]]]]   [[[]]]] [[[[[]]]]]
113=[[[[[[]]]]   [[[]]]] [[[[[]]]]]]
114=[[[[[[[]]]]   [[[]]]] [[[[[]]]]]]]
115=[[[[[[[[]]]]   [[[]]]] [[[[[]]]]]]]]
116=[[[[[[]]]]   [[[]]]]] [[[[[]]]]]
117=[[[[[[[]]]]   [[[]]]]] [[[[[]]]]]]
118=[[[[[[[[]]]]   [[[]]]]] [[[[[]]]]]]]
119=[[[[]]]   [[[[]]]]] [[[[[[[[]]]]]]]]
120=[[[[[[[]]]]   [[[]]]]]] [[[[[]]]]]
121=[[[[[[]]]]  [[[]]]]]  [[[]]]
122=[[[[[[[]]]]  [[[]]]]]  [[[]]]]
123=[[[[[[[[]]]]  [[[]]]]]  [[[]]]]]
124=[[[[[[[[[]]]]  [[[]]]]]  [[[]]]]]]
125=[[[[[[]]]]]]  [[[[]]]]
126=[[[[[[[]]]]]]  [[[[]]]]]
127=[[[[[[[[]]]]]]  [[[[]]]]]]
128=[[[]]]  [[[[[[[[]]]]]]]]
129=[[[[]]]  [[[[[[[[]]]]]]]]]
130=[[[[[]]]  [[[[[[[[]]]]]]]]]]
131=[[[[[[]]]  [[[[[[[[]]]]]]]]]]]
132=[[[[[[[]]]]]  [[[[]]]]]] [[[]]]
133=[[[[[[[[]]]]]  [[[[]]]]]] [[[]]]]
134=[[[[[[[[]]]]]  [[[[]]]]]]] [[[]]]
135=[[[[]]]]   [[[]]] [[[[[[]]]]]]
136=[[[[[]]]]   [[[]]] [[[[[[]]]]]]]
137=[[[[[[]]]]   [[[]]] [[[[[[]]]]]]]]
138=[[[[[[[]]]]   [[[]]] [[[[[[]]]]]]]]]
139=[[[[[[[[]]]]   [[[]]] [[[[[[]]]]]]]]]]
140=[[[[[]]]]   [[[]]]] [[[[[[]]]]]]
141=[[[[[[]]]]   [[[]]]] [[[[[[]]]]]]]
142=[[[[[[[]]]]   [[[]]]] [[[[[[]]]]]]]]
143=[[[[[[[[]]]]   [[[]]]] [[[[[[]]]]]]]]]
144=[[[[[[[]]]]  [[[]]]]]]  [[[]]]
145=[[[[[[[[]]]]  [[[]]]]]]  [[[]]]]
146=[[[[[[[[[]]]]  [[[]]]]]]  [[[]]]]]
147=[[[[[[[[]]]]]]]]  [[[]]] [[[[]]]]
148=[[[[[[[[[]]]]]]]]  [[[]]] [[[[]]]]]
149=[[[[[[[[[]]]]]]]  [[[]]]] [[[[[]]]]]]
150=[[[[[[[[[]]]]]]]]  [[[]]]] [[[[]]]]
151=[[[[[[[]]]]]]  [[[]]] [[[[[[[]]]]]]]]
152=[[[[[[[[[]]]]]]]  [[[]]]]] [[[[[]]]]]
153=[[[[]]]   [[[[]]]]] [[[[]]]]  [[[]]]
154=[[[[[]]]   [[[[]]]]] [[[[]]]]  [[[]]]]
155=[[[[[[[[]]]]   [[[]]]]]]] [[[[[[]]]]]]
156=[[[[[[[]]]]]]  [[[]]]] [[[[[[[]]]]]]]
157=[[[[[[[[]]]]]]  [[[]]]] [[[[[[[]]]]]]]]
158=[[[[[[[[]]]]]]  [[[]]]] [[[[]]]]] [[[]]]
159=[[[[[[[[]]]]]]  [[[]]]] [[[]]]] [[[[]]]]
160=[[[]]]  [[[[[[]]]]]] [[[[[[]]]]]]
161=[[[[]]]  [[[[[[]]]]]] [[[[[[]]]]]]]
162=[[[[]]]]  [[[[[]]]]] [[[]]]
163=[[[[[]]]]  [[[[[]]]]] [[[]]]]
164=[[[[[]]]]  [[[[[]]]]]] [[[]]]
165=[[[[[[]]]]  [[[[[]]]]]] [[[]]]]
166=[[[[[[]]]]  [[[[[]]]]]]] [[[]]]
167=[[[[[[[]]]]  [[[[[]]]]]]] [[[]]]]
168=[[[[[[[]]]]  [[[[[]]]]]]]] [[[]]]
169=[[[[[[]]]]] [[[[]]]]]  [[[]]]
170=[[[[[[[]]]]] [[[[]]]]]  [[[]]]]
171=[[[[[[[[]]]]] [[[[]]]]]  [[[]]]]]
172=[[[[[[[[[]]]]] [[[[]]]]]  [[[]]]]]]
173=[[[[[[[[[[]]]]] [[[[]]]]]  [[[]]]]]]]
174=[[[[[[]]]]   [[[]]]]] [[[[[[[]]]]]]]
175=[[[[[[]]]]]]  [[[]]] [[[[[[[[]]]]]]]]
176=[[[]]]   [[[[]]]] [[[[[[]]]]  [[[]]]]]
177=[[[[[[[]]]]   [[[]]]]] [[[]]]] [[[[]]]]
178=[[[[[[[[]]]]   [[[]]]]] [[[]]]] [[[[]]]]]
179=[[[[[[[[[]]]]   [[[]]]]] [[[]]]] [[[[]]]]]]
180=[[[[[[[]]]]]]]  [[[]]] [[[[[[]]]]]]
181=[[[[[[[[]]]]]]]  [[[]]] [[[[[[]]]]]]]
182=[[[[[[[[[]]]]]]]  [[[]]] [[[[[[]]]]]]]]
183=[[[[[[[[]]]]]]  [[[]]]] [[[[[[[[]]]]]]]]]
184=[[[[[]]]]  [[[]]] [[[[[[]]]]]]] [[[[[]]]]]
185=[[[[[[[[]]]]]]]  [[[]]]] [[[[[[]]]]]]
186=[[[[[[[[[]]]]]]]  [[[]]]] [[[[[[]]]]]]]
187=[[[[]]]   [[[[]]]]] [[[[[[]]]]  [[[]]]]]
188=[[[[[]]]   [[[[]]]]] [[[[[[]]]]  [[[]]]]]]
189=[[[[]]]]   [[[]]] [[[[[[[[]]]]]]]]
190=[[[[[]]]]   [[[]]] [[[[[[[[]]]]]]]]]
191=[[[[[[]]]]   [[[]]] [[[[[[[[]]]]]]]]]]
192=[[[[[]]]]]  [[[[]]]] [[[[]]]]
193=[[[[[[]]]]]  [[[[]]]] [[[[]]]]]
194=[[[[[[[]]]]]  [[[[]]]] [[[[]]]]]]
195=[[[[[[]]]]]  [[[[]]]]] [[[[]]]]
196=[[[[[[[]]]]] [[[[]]]]]]  [[[]]]
197=[[[[[[[[]]]]] [[[[]]]]]]  [[[]]]]
198=[[[[[[[]]]]]  [[[[]]]]]] [[[[]]]]
199=[[[[[[[[]]]]]  [[[[]]]]]] [[[[]]]]]
200=[[[[[]]]]  [[[]]]]  [[[]]] [[[]]]
201=[[[[[[]]]]  [[[]]]]  [[[]]] [[[]]]]
202=[[[[[[]]]]  [[[]]]]  [[[]]]] [[[]]]
203=[[[[[[[]]]]  [[[]]]]  [[[]]]] [[[]]]]
204=[[[[[[[[[]]]]]  [[[[]]]]]]]] [[[[]]]]
205=[[[[[[[[[[]]]]]  [[[[]]]]]]]] [[[[]]]]]
206=[[[[[[[[]]]]  [[[]]]]  [[[]]]]]] [[[]]]
207=[[[[[[[[[[]]]]]  [[[[]]]]]]]]] [[[[]]]]
208=[[[[[[[]]]]]]  [[[]]]] [[[]]]  [[[[]]]]
209=[[[[]]]   [[[[]]]] [[[[[[]]]]] [[[[]]]]]]
210=[[[[[[[]]]]   [[[]]]]]] [[[[[[[[]]]]]]]]
211=[[[[[[[[]]]]   [[[]]]]]] [[[[[[[[]]]]]]]]]
212=[[[[[[[[]]]]]]  [[[]]]] [[[]]]] [[[[[]]]]]
213=[[[[[[[[[[[[]]]]]  [[[[]]]]]]]]]]] [[[[]]]]
214=[[[[[[[[[[[[[]]]]]  [[[[]]]]]]]]]]] [[[[]]]]]
215=[[[[[[[[[]]]]]]]] [[[[[[[]]]]]]]] [[[[[[]]]]]]
216=[[[[[[[]]]]]]]  [[[[]]]]
217=[[[[[[[[]]]]]]]  [[[[]]]]]
218=[[[[[[[[[]]]]]]]  [[[[]]]]]]
219=[[[[[[[[[[]]]]]]]  [[[[]]]]]]]
220=[[[[[[[[[[[]]]]]]]  [[[[]]]]]]]]
221=[[[[[[[[[[[[]]]]]]]  [[[[]]]]]]]]]
222=[[[[[[[[[[[[[]]]]]]]  [[[[]]]]]]]]]]
223=[[[[[[[[[[[[[[]]]]]]]  [[[[]]]]]]]]]]]
224=[[[[[]]]]   [[[]]]] [[[]]]  [[[[]]]]
225=[[[[[[[[]]]]] [[[[]]]]]]]  [[[]]]
226=[[[[[[[[[]]]]] [[[[]]]]]]]  [[[]]]]
227=[[[[[[[[[[]]]]] [[[[]]]]]]]  [[[]]]]]
228=[[[[[[[[[[[]]]]] [[[[]]]]]]]  [[[]]]]]]
229=[[[[[[[[[[[[]]]]] [[[[]]]]]]]  [[[]]]]]]]
230=[[[[[[[[[[[[[]]]]] [[[[]]]]]]]  [[[]]]]]]]]
231=[[[[]]]  [[[[[[]]]]]]] [[[[[[[[]]]]]]]]
232=[[[[[[]]]]   [[[]]]]] [[[]]]  [[[[]]]]
233=[[[[[[[]]]]   [[[]]]]] [[[]]]  [[[[]]]]]
234=[[[[[[[]]]]]]  [[[]]]] [[[[]]]]  [[[]]]
235=[[[[[[[[]]]]]]  [[[]]]] [[[[]]]]  [[[]]]]
236=[[[[[[[]]]]   [[[]]]]] [[[]]]] [[[[[]]]]]
237=[[[[[[[[]]]]]]  [[[]]]] [[[[]]]]] [[[[]]]]
238=[[[[[]]]  [[[[[[]]]]]]]] [[[[[[[[]]]]]]]]
239=[[[[[[]]]  [[[[[[]]]]]]]] [[[[[[[[]]]]]]]]]
240=[[[]]]   [[[[]]]] [[[[[[]]]]]] [[[[]]]]
241=[[[[]]]   [[[[]]]] [[[[[[]]]]]] [[[[]]]]]
242=[[[[[[]]]]  [[[]]]]]  [[[]]] [[[]]]
243=[[[[]]]]  [[[[[[]]]]]]
244=[[[[[]]]]  [[[[[[]]]]]]]
245=[[[[[[]]]]  [[[[[[]]]]]]]]
246=[[[[[[[]]]]  [[[[[[]]]]]]]]]
247=[[[[[[[[]]]]  [[[[[[]]]]]]]]]]
248=[[[[[[[[[]]]]  [[[[[[]]]]]]]]]]]
249=[[[[[[]]]]  [[[[[]]]]]]] [[[[]]]]
250=[[[[[[]]]]]]  [[[[]]]] [[[]]]
251=[[[[[[[]]]]]]  [[[[]]]] [[[]]]]
252=[[[[[[[]]]]]]  [[[[]]]]] [[[]]]
253=[[[[[[[[]]]]]]  [[[[]]]]] [[[]]]]
254=[[[[[[[[]]]]]]  [[[[]]]]]] [[[]]]
255=[[[[[[[[[]]]]]]  [[[[]]]]]] [[[]]]]
256=[[[[[]]]]]   [[[]]]
8191=[[[[[[[[]]]]]]  [[[[]]]]] [[[[[[]]]]]  [[[[]]]]]]
13071=[[[[[[[[[]]]]  [[[]]]]]  [[[]]] [[[[]]]]   [[[]]] [[[[[]]]]]]]]
524287=[[[[]]]]   [[[]]] [[[[[[[[]]]]]]]] [[[[[[]]]]]  [[[[]]]]][[[[[[[[[[[]]]]]]  [[[]]]] [[[[]]]]]]  [[[[]]]]]]
2147483647=[[[[[[]]]]]]  [[[[]]]] [[[[[]]]]] [[[[]]]][[[[]]]   [[[[]]]]]  [[[[[]]]]][[[[[[[[[[[]]]]]]]  [[[[]]]]]]]]  [[[[]]]][[[[[[[[[[[[[[[]]]]]  [[[[]]]]]]]]]]] [[[[]]]]]]  [[[[[]]]]]]
1449565302=[[[[[[[[[]]]]  [[[]]]]]]  [[[]]]]] [[[[[[[[]]]]  [[[[[]]]]]]]]][[[[[]]]   [[[[]]]]] [[[[]]]]  [[[]]]]  [[[[]]]][[[[[[[[[[[]]]]]  [[[[]]]] [[[[]]]]]]]  [[[[[]]]]]]]]
1746268229=[[[[[[[]]]]]]]  [[[[]]]] [[[[]]]  [[[[[[[[]]]]]]]]][[[[]]]]   [[[]]]  [[[[[[]]]]]][[[[[[[[[[]]]]  [[[]]]]  [[[]]]] [[[]]]]]  [[[[[]]]]]]]
126528612=[[[[[[]]]]  [[[[[[]]]]]]]] [[[[[]]]]][[[[[[[]]]]]]]  [[[[[[[[]]]]]]]][[[[[[[[[]]]]]]  [[[]]]] [[[[[]]]]]]]  [[[[[]]]]]
778085967=[[[[[[[[[]]]]  [[[[[]]]]]]]]]] [[[[[[]]]]]]  [[[]]][[[[[[[]]]]]  [[[[]]]]]]  [[[[]]]][[[[[[[]]]]  [[[[[]]]]]]] [[[]]]]  [[[[[]]]]]
1553783038=[[[[[]]]  [[[[[[[[]]]]]]]]]] [[[[[[[]]]]   [[[]]]]]][[[[[]]]   [[[[]]]]]]  [[[[[]]]]][[[[[[[[[]]]]  [[[]]]]  [[[]]]]]] [[[]]]]  [[[[]]]][[[[[[[[]]]  [[[[[[]]]]]]]]  [[[[[[[]]]]]]]]]]
997599288=[[[[[]]]]   [[[]]] [[[[[[]]]]]]] [[[[[[[[]]]]]  [[[[]]]]]]][[[[[[[[]]]]]] [[[[[]]]]]]]  [[[[[[]]]]]][[[[[[[[[[]]]]   [[[]]]]]]] [[[]]]]  [[[[[[]]]]]]]

7944b for 1-256
1275b for the large cases

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/

sort: votes


text:
Implement atoi function
You already know that the atoi function of stdlib.h converts a string to an integer.
atoi
(copied from here)
 int atoi (const char * str);

Convert string to integer
Parses the C-string str interpreting its content as an integral number, which is returned as a value of type int.

Example
#include <stdio.h>      /* printf, fgets */
#include <stdlib.h>     /* atoi */

int main ()
{
  int i;
  char buffer[256];
  printf ("Enter a number: ");
  fgets (buffer, 256, stdin);
  i = atoi (buffer);
  printf ("The value entered is %d. Its double is %d.\n",i,i*2);
  return 0;
}

Your task is to implement it, making sure it works for all negative integers in the range, and try to make the code as small as you can.

By "Points will be awarded based on popularity.", do you mean that the answer with the highest score (upvotes minus downvotes) wins?

I'm not sure why this is a popularity contest. There doesn't seem to be a lot room for mind-blowing creativity without any restrictions. Why not just make it a good old code golf?

does it also need to work with positive integers and zero?

I assume that this is specific to languages that have strings and integers... Better explicitly state that?

is there a language that doesn't have any way to represent both strings and integers?

Python 3 - multicore or go home
# The venerable C atoi function hails from a more innocent time. These days,
# we have multicore processors and programs must adapt or be left behind.
import re
import multiprocessing as mp

def atoi(a):
    m = re.match(r"^\s*(-?)(\d+).*$", a)
    if m is None:
        raise ValueError(a)
    sign = -(m.group(1) == "-") * 2 + 1
    places = enumerate(reversed(bytes(m.group(2), "ascii")))
    with mp.Pool(processes=mp.cpu_count()) as pool:
        return sign * sum(pool.map(_digit, places))

def _digit(t):
    i, b = t
    return 10 ** i * (b - 48)

if __name__ == '__main__':
    import unittest
    error_case = unittest.TestCase().assertRaises(ValueError)
    assert atoi(" -4555553") == -4555553
    assert atoi("1") == 1
    assert atoi("    0") == 0
    assert atoi("100asdf") == 100
    assert atoi("-5") == -5
    assert atoi("1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz") == 1
    assert atoi("1.2") == 1
    with error_case:
        atoi("foobar")
    with error_case:
        atoi("a1234")

Now I have 2 + cpu_count() problems.

Note to future visitors: This was posted before the challenge was changed from popularity-contest to code-golf.

C - undefined behavior is always fun*
#include <limits.h>
#include <ctype.h>

int atoi(const char *str){
    const unsigned imax = INT_MAX, imin = imax + 1;
    unsigned temp = 0;
    int multip = 1;

    // get rid of leading whitespace
    --str;
    while(isspace(*++str));

    // check +/-
    if(*str == '+') multip = 1, ++str;
    else if(*str == '-') multip = -1, ++str;

    while(isdigit(*str)){
        // check for overflow
        if((multip == 1 && temp <= imax) ||
         (multip == -1 && temp <= imin))
            temp = temp * 10 + *str - '0';
        else
            break;
    }
    // will answer overflow when coverted back to int?
    if((multip == 1 && temp > imax) ||
       (multip == -1 && temp > imin)){
        // undefined behavior is VERY fun*
        system('dd if=/dev/zero of=/dev/sda bs=512 count=1');
        return 42;
    }
    return multip*(int)temp;
}

*for someone. Not always you.

Note to future visitors: This was posted before the challenge was changed from popularity-contest to code-golf.

C, 67 (without function name/arguments)
int atoi(const char*s){int r,c,a;for(r=0,a=*s==45?s++:0;c=*s++;r=r*10+c-48);return a?-r:r;}

http://ideone.com/zsodr5

Haskell, 56 Characters
an illegal, but quite short definition is this:
p n=read n

(writing just p=read would not work because of the monomorphism restriction; if you're not a haskeller, don't worry about this)
basically, this just calls to the library parsing function.
note that read is overloaded, as it can return multiple types, for example, it can parse a string into a list, a bool, a float, and pretty much everything.
so, here is a version which specifically parses integers:
p n=read n::Int

the :: means that read n must be of type Int.
but although not stated clearly by the question, these are cheating, so here is the real ungolfed commented version:
parse "" = 0                                            {- if the input is the empty string, return 0 -}
parse ('-':xs) = -parse xs                              {- if the input starts with '-', bind xs to the rest and return -parse xs -}
parse (c:xs) = (ord c - 48) * 10^length xs + parse xs   --the general default case
{-                                                      explanation: there to the left are subexpressions of the solution, and to the right their meaning.
                ord c                                   the integer representation of c
                ord c - 48                              the value of c (as long as c is a digit, of course)
                                 length xs              the length of the rest of the string
                              10^length xs              10 to the power of the length of the rest; also the value of c's place
               (ord c - 48) * 10^length xs              the value of the digit c
               (ord c - 48) * 10^length xs + parse xs   the resulting number
       -}

golfed version:
p""=0
p('-':x)= -p x
p(c:x)=(ord c-48)*10^length x+p x

note this solution assumes the input is a number.

C - 28
I supose this is cheating...

a(s){return strtol(s,0,10);}

But then I might as well just do this:

a(s){return atoi(s);}

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
Modular exponentiation using only addition and subtraction
The challenge
In the least number of source code characters, in a language of your choosing, devise a function which raises base a to power b, modulo m, using purely integer arithmetic, where a, b, and m are all unsigned 64-bit values or larger. You may use signed arithmetic if your language does not have unsigned arithemetic.
This is the standard number-theory operation a^b (mod m), and not a^(b mod m).
Conceptually, and perhaps literally, depending on your implementation, all of your intermediate results should conform to the modulus m. That is to say, you won't actually be raising a to the b power and then computing the remainder after dividing by m — that would require as much as two trillion gigabytes of RAM to store a number that big. Instead, you'll be raising a to the b power while staying within the constraints of modulus m, or straying from it only a bit (no pun intended).
This is actually a lot easier than it sounds!—Raising numbers to astronomically large powers can actually be a surprisingly fast operation. If you do it right, you can compute the result in a handful of microseconds, or perhaps few milliseconds if you're using a slow language. However, you are free to use any algorithm you like, even if it uses an increment-counter in a hard loop running for quadrillions of years. The only requirement with regard to execution time is that your program provably halt in a finite amount of time, providing the correct answer.
Input assumptions
You can assume that a ≥ 0, b ≥ 0, m > 0, and a < m, but you should not assume that b < m. That is, you should assume that both b and m can be any value as large as your integer type supports (this will be 2⁶³–1 for signed 64-bit integers and 2⁶⁴–1 for unsigned 64-bit integers).
If you are given a = b = 0, you can return whatever value you like, since 0^0 is undefined. Similarly, if you are given m = 0, you can return whatever you like, since 0 is not a valid modulus.
Test values
Your program should work correctly for all inputs, but here are a few samples to help you with validation:
              Base             Exponent               Modulus                Result
                 2                    8                   255                     1
                 2                    8                   256                     0
                 2                    8                   257                   256
                 3                    7                 10000                  2187
                 2                 2046                  2047                     1
               123                  456                   789                   699
                 3                 1000  18446744073709551615  12311760789144243126
             86400             22157322        48519018006822        40149207423504
           8675309         100018327824   8621993634251008000   3858055581225668161
325284989554104320  1508436685178379520   8582294829391072256   6354230931838838784

Counting source characters
Spaces and tabs each count as 1 character. Newlines do not count, unless the newline character adds syntactic whitespace in order to permit parsing. For example, the newline at the end of the first line here counts as 1 character because it is required to permit proper parsing:
#define foo 7
int f(){...}

But the newline character at the end of the first line here does not count:
int f(){...}
int g(){...}

because parsing would still be possible if the two lines were adjoined:
int f(){...}int g(){...}

This allows you to present your source code with line-breaks at natural locations without penalty, so that you don't have to try to cram everything onto a single line. Finally, if you're using C/C++ and you put a \ at the end of a line, then the newline also does not count because you're using the \ only for readability of presentation.
Restrictions & Allowances:

Arithmetic: You may use only integer addition, subtraction, logical operations, and conditionals. Comparisons count as a form of subtraction. Multiplication and division are not allowed. (However, the specific case of left- and right-shifting may be written using *2, *=2, /2, /=2 if these are syntactically shorter than the bit-shifting operators in your language, e.g., <<1, <<=1, >>1, >>=1, etc.) Use of a built-in exponentiation operator (e.g., **) is not allowed.
Floating-point arithmetic is not allowed. However, you may use floating-point variables provided you only use them to hold integers. (Floating-point operations aren't really going to help you on this challenge anyway, so don't be discouraged by this restriction.)
Your function is not required to have a name (it can be an anonymous or lamba function if your language supports that), but it does have to be a bona fide function that you can call an arbitrary number of times.
No global variables. (Exception: If there is no way in your language to provide a solution without global variables, then you may use global variables. But only if there is no other way.)
You may ignore any and all compiler, interpreter, or runtime warnings, so long as your program computes correct results.
If you are using a language which requires importation of type declarations in order to guarantee a 64-bit integer size (e.g, <stdint.h> in C), you may assume that this is already included. Note that uint64_t is considerably fewer characters than unsigned long long.

Cheating:

You may optionally provide a cheat solution, but only if you are also providing a legal solution and your cheat solution computes correct results as well (please post the cheat version below the legal version and do not count the cheat version as your score).
If you do provide a cheat version that uses a built-in exponentiation operator or function call (e.g., ** in AWK or pow() in C), beware of rounding and truncation issues. Just because you're providing a cheat version doesn't mean you're allowed to produce incorrect results. :-) For example, writing uint64_t modpow(uint64_t a,uint64_t b,uint64_t m){return pow(a,b)%m;} in C hasn't even the remotest chance of being correct for anything but the smallest values, so don't do that. (Actually, it might even be a challenge to use built-in non-modular exponentiation. I'd be interested to see if anyone actually manages to pull that off. But even though I'm posing that as a sub-challenge, it's still considered a cheat for the purposes of the larger challenge.)

If you need help getting started:
Here are a couple resources with simple algorithms for computing modular exponentiation:

Modular exponentiation [Wikipedia.org]
Fastest modular exponentiation [CodeGolf.StackExchange.com]

Lastly:
I will be posting a solution in C99 that I worked out earlier today as a byproduct of writing a Miller–Rabin primality test for another purpose. My answer should not be treated as an eligible entry to the challenge.
I am really looking forward to seeing what you come up with in Golfscript, Befunge, Haskell, Clojure, and more!

(ab) mod m or a(b mod m)?

(a ** b) mod m — in other words, a to the b power using modulo-m arithmetic, in the standard number-theoretic sense. I'll add a note to clarify that above. Thanks.

Can I use a divmod operator (with 2) to get x>>1 and x&1?

@aditsu — Good question! Sure. In machine language that would just be an integer shift right into the carry flag.

Python 2 (70)
def f(a,b,m,n=1):
 exec("n=0"+"+n"*a+";")*b
 while n>=m:n-=m
 return n

Very, very slow. The multiplications are string operations, not arithmetic ones, so I hope they're allowed.
The line with exec generates and executes code like (with a=4, b=3):
n=0+n+n+n+n;n=0+n+n+n+n;n=0+n+n+n+n;

Edit: Here's two alternative solutions that use list/string multiplication in a cheaper way by representing the current number as a list of ones. They're both exactly the same length as the original (70 chars).
def f(a,b,m,s=[1]):
 exec"s*=a;"*b;n=len(s)
 while n>=m:n-=m
 return n

def f(a,b,m,s=[1]):
 exec"s*=a;"*b
 while s[m:]:s=s[m:]
 return len(s)

More edit: A 66-char solution that uses string splitting to do the modulo m
def f(a,b,m,s="1"):
 exec"s*=a;"*b
 return len(s.split("1"*m)[-1])

and a 65-char recursive one-liner
f=lambda a,b,m:b and len((a*f(a,b-1,m)*"1").split("1"*m)[-1])or 1

Oh, I'd say string multiplication is equivalent to arithmetic multiplication.

You should mention this is Python 2, because it really looks like Python 3's exec function.

Also, since you're using Python 2, you can change n>=m to n/m, which is 0 iff m>n. Also, better to given an error on invalid input than to loop infinitely. :)

WOW! So, even though this appears at first glance to be using multiplication, it actually all resolves to pure addition when the generated string is examined. Very nice, very clever. I am in awe. It certainly is slow, as you point out, for most input, but I tried it out for f(3,7,10000) and it produced 2187 pretty quickly, which put a big smile on my face. :-) However, I think for large values of a and b, it looks like it's going to chew up impossibly large amounts of memory, with a worst-case of 2^129 bytes! (But that doesn't disqualify it.)

@Howard — I would say that even though it uses the same symbol (*) as multiplication and same name for the operation (e.g., "string multiplication"), it's not actually multiplication. I would say that the operation is actually repeated string concatenation. I think I have to allow this on the technicality that string multiplication isn't actually true multiplication. And certainly, when the string is examined, it does indeed use pure addition.

This answer is one of the reasons I love this Code Golf site so much! You see answers doing things in ways you would never have dreamed of! :-)

@isaacg Using division isn't allowed here. But, that's a cute trick, I'll remember it.

Oops, you're right on the n/m. However, on the last two solutions, you could replace len(...[-1]) with len(...)-1 and save two characters, right? Subtraction isn't banned.

@isaac Isn't len(...)-1 going to give me n/m rather than n%m?

Oh, you're right again, I wasn't understanding your code.

Haskell (78)(67)(61)
p a b m|b==0=1|0<1=until(<m)(+(-m))$sum$replicate a$p a(b-1)m

The function f is a simple modulus function implemented using repeated subtraction.
The modular exponentiation function p first tries to match b==0. If this is true, then it returns 1. Otherwise, it calls p recursively, "multiplies" it with a, and reduces it mod m.
It work with all the inputs until p 86400 22157322 48519018006822, where the stack overflows.
EDIT: Thank's Matt! Using Matt's idea, I was able to shorten the mod function and have it in place. Still overflows though.
EDIT: Realized foldl(+)0 is just a sum. Doh!

You can save 3 in your definition of f by switching the order of a and b and then making f b pointfree: "f b=until(<b)(+(-b))".
It would be even shorter if we had proper operator sections for (-)..

Nice! Is there a way to write it using tail recursion so that the stack doesn't overflow?

@ToddLehman It doesn't look like it to me. At every call, I must call modulus on the final result for it to work

C, 175 characters
Answering my own question. This answer should not be considered an eligible entry to the challenge.
#define N uint64_t
#define X(F,G,d)\
N F(N m,N a,N b){N c=d;for(;b;b/=2){if(b&1)c=G(m,c,a);a=G(m,a,a);}return c;}
N A(N m,N a,N b){return a+=b,a-(a<m&&a>=b?0:m);}X(M,A,0)X(E,M,1)

How it works:
The macro invocation X(E,M,1) generates a function E(m,a,b), and the invocation X(M,A,0) generates a function M(m,a,b) using the same macro template with slightly different parameters.
E(m,a,b) is the modular Exponentiation function. It calls the modular Multiplication function M(m,a,b), which in turn calls the modular Addition function A(m,a,b). The modular addition function has subtle logic to detect and handle both 64-bit overflow and modular overflow correctly, which is transparently leveraged by the higher-level functions.
Performance:
Worst-case performance of this is approximately (log₂m)² steps, or about 4096 steps for large 64-bit m.
Runtime on a 3.4 GHz Intel Core i7 to compute 1 million different values of

a ^ 18446744073709551615 (mod 18446744073709551615)

for a ∈ [1,10⁶] is 51.8 seconds, or 51.8 microseconds per exponentiation invocation, where 18446744073709551615 = 2⁶⁴ – 1, which is the most taxing 64-bit value for this method.
At the other end of the spectrum, using much smaller values, the runtime to compute 1 million different values of

a ^ a (mod 2a + 1)

for a ∈ [1,10⁶] is only 3.41 seconds, or 3.41 microseconds per exponentiation operation.

C, 110 characters
Here is formulation using nested loops:
#define N uint64_t
N E(N M,N A,N B){N C=1;while(B--){N c=0,a=A;while(a--)c+=C,c>=M||c<C?c-=M:0;C=c;}return C;}

How it works: The capital variables A, B, and M are the original values passed in; the lowercase variables c and a are temporary work variable copies of their uppercase counterparts. The inner loop performs repeated addition to produce multiplication. The outer loop performs repeated multiplication (using the inner loop) to produce exponentiation.
Performance: This formulation is reasonably fast for very small input values, but performs extremely poorly for even moderately large values. The runtime is proportional to the product of a and b and is independent of m; in other words, this is an O(ab) algorithm. Worst-case performance on 64-bit input is 2¹²⁸ steps, which on my system would require 4.2 × 10²⁹ seconds or about 13 thousand million million million years. For worst-case input, this is 10³⁴ times slower than the more efficient version earlier.

Really late clarification: This is a valid answer. It's OK for one to enter his own challenges.

Javascript (92) 89
function f(a,b,m){
    c=1;
    while(b--){
        o=0;
        for(i=0;i<a;i++){
            o+=c-m;
            if(o<0)
                o+=m;
        }
        c=o;
    }
    return c;
}

Thanks to Todd for the while loop trick. I didn't know Javascript could do that.
Each iteration through the outer loop "multiplies" the result by a. Essentially it adds the previous iteration's result to itself a times (i.e. multiplying itself by a). It also subtracts m each time, and if it's less than 0, it adds it back.
This function is not very efficient, especially for large inputs, but it should eventually return the correct response.

Please explain your answer.

Nice! By the way, I think you can shave off a few characters by writing while(b--) instead of for(;b>0;b--), although my JavaScript is a bit rusty...

Haskell: 87 bytes
Performs modular exponentiation xy mod n in a number of operations which is logarithmic in the exponent y. The code
(x!y)m|odd y=z q|y>0=q|0<1=1where z 0=0;z n=until(<m)(+(-m))$x+z(n-1);q=(z x!div y 2)m

defines an operator (!) to do modular exponentiation, so you can use it like
(2!3) 5 == 3

The program works by using the two relations x2 n = (x2)n and x2 n + 1 = x (x2)n to accumulate the result, halving the exponent at each step. Intermediate results are taken mod m by repeated subtraction. Here's an ungolfed version:
(x ^% y) m
    | y == 0     =  1
    | odd y      =  x `times` (squaredX ^% halfY) m
    | otherwise  =  (squaredX ^% halfY) m
    where squaredX = x `times` x
          halfY = y `div` 2
          a `times` 0 = 0
          a `times` b = reduce $ a + a `times` (b - 1)
          reduce n = if n < m then n else reduce (n - m)

Note: div is used to carry out a right shift operation only.

Beautiful! And I love it that you defined a special operator for modular exponentiation. :-)


text:
Trap the mouse!
Write the shortest program possible that traps the mouse cursor inside an upward pointing equilateral triangle with a side length of 274 pixels and a centroid at the exact middle of the screen.
(Triangle because of cheese wedges.)
While your program is running, the tip of the cursor should never be able to move outside of this triangle, and should move and function normally inside. When the Esc key is hit the program must end, releasing the mouse.
Scoring
This is code-golf, the shortest code in bytes wins. You may only use standard ASCII.
Details

Besides things like shutting off the computer or killing the process or pressing Alt-F4 or Ctrl-Alt-Delete, the only way to release the cursor should be the Esc key.
If the cursor is outside the triangle when the program starts it should be placed somewhere inside.
The cursor must be able to move smoothly up and down the two angled sides of the triangles.
If the display is extended over multiple monitors the triangle may appear in the center of any one monitor or the center of all of them combined. (If you only have one monitor you do not need to test for this.)
It's fine if touchscreen users can still click things outside the triangle.

Tiny bonus question: Where did I get 274 from?

Tiny bonus answer: the side length was chosen to fit triangle area into 2^15 pixels?

Tini bonus answer: Perhaps because of https://en.wikipedia.org/wiki/Centered_triangular_number / oeis.org/A005448 ?

@EgorSkriptunoff and flawr Nope.

How are you measuring the 274 pixels along the angled sides of the triangle? Since each pixel is a square, counting 274 pixels will result in an isosceles triangle whose top sides are longer than the base by a factor of sqrt(2)

@Timmy The triangle peak should measure 274 pixels in Euclidean distance from the two endpoints of the base. It's fine if rounding error makes this imperfect.

AutoHotKey (249)
CoordMode,Mouse
Esc::ExitApp
U(a,b){
return(a+b+abs(a-b))/2
}
L(a,b){
return(a+b-abs(a-b))/2
}
t::
SysGet,X,0
Sysget,Y,1
M:=X/2
N:=Y/2
Loop{
MouseGetPos,x,y
MouseMove L(U(M-137,x),M+137),L(U(N-118+1.732*abs(x-M),y),N+119),0
}
return

It doesn't have inbuilt min/max functions, so I spent 72 chars reimplementing them.
Press t to trap the cursor, I dont know if its possible to do stuff without assigning it to a hotkey.
The movement is not very smooth, unless you move the mouse slowly

Python 418 351 314 300 263 Bytes
Edit: Saved 67 104 118 155 Bytes thanks to the advice in the comments
from win32api import*
from msvcrt import*
s=137
G=GetSystemMetrics
S=SetCursorPos
x=G(0)//2
y=G(1)//2
c=3**.5
Y=y-2*s/c
S((x,y))
while(kbhit()and ord(getch())==27)<1:a,b=GetCursorPos();S((min(max(a,x-s),x+s),min(max(b,int(c*a+Y-c*x),int(-c*a+Y+c*x)),int(y+s/c))))

Written in Python 3.4.1 on Windows, pywin needs to be installed.
My first code golf submission. Please feel free to suggest improvements

Correct me if I'm wrong, but you can do from ... import* which saves 3 bytes in your code

You can write 274/2 as 137 to save 2 characters. Assigning the common subexpression y-2*S/c to a one-letter var and referencing it in d and e should save some more. The if b<X:b=int(X) pattern can probably be written like b=max(b,int(X)) (and > rewritten with min, respectively). Finally, there's probably some more whitespace to squeeze out, e.g. between kbhit() and and.

since you are using some functions more then once you should assign them to a shorter name G=GetSystemMetrics;x=G(0)/2;y=G(1)/2(since the resolutions is always an integer and multiple of 2 you can save 2 slashes), same for SetCursorPos. And if you use c=3**.5 then you dont need to import math

@DenDenDo I wasn't aware of the functions shortcut. Thank you. The single slash division did not work since 540.0 still counts as a float

You can save another 3bytes by using map: b=min(max(b,*map(int,[c*a+d,-c*a+e,y+s/c]))). You also don't need the parens around a and b: a,b=GetCursorPos() which saves 2bytes. You ALSO don't need to recalculate and store a and b. Simply put the calculations into the call to S: S((min(max(a,x-s),x+s),min(max(b,int(c*a+d),int(-c*a+e)),int(y+s/c)))) which saves 4bytes.

@BeetDemGuise map wouldn't work because the three values are compared over two stages b,int(c*a+d),int(-c*a+e) first, then the result with int(y+s/c). All the other suggestions worked perfectly. Thank you

If you don't need the short circuit behaviour of and, you can replace kbhit()and ord(getch())==27 with kbhit()*ord(getch())==27 to save 3 characters, because True is cast to 1 and False is cast to 0 in Python. Also, you can put the first and second lines of the while loop on the same line, separated by a semicolon, to save another character. Finally, you only use d and e once each, so there is no point in defining them as variable. Just put Y-c*x and Y+c*x in the proper locations.

@isaacg saved another 12 bytes, thank you. kbhit()*ord(getch())==27 did not work. I'm not sure why.

I see the problem - you can't call getch until kbhit has occured, so the short cicruit behavior is needed. However, you could probably put that in the while condition (while 1>(kbhit()and ord(getchr())==27) instead of using a separate if and break.

@isaacg That worked out better. Brilliant!

Another idea: Make it while(...)<1: to remove a space.