diff options
author | Marvin Borner | 2023-05-22 12:31:05 +0200 |
---|---|---|
committer | Marvin Borner | 2023-05-22 12:31:05 +0200 |
commit | c1ce8eb719a95b22fea8e6220bf407d2eb7447b3 (patch) | |
tree | cdec2e905982e196cfb9e5b5c60d6c9d96666f92 | |
parent | cbb215c7f8f78f0a54c22fa90569733bef05907e (diff) |
Changed order of abstraction and application encodings
This gives some minor space improvements as almost all abstractions
imply a following application but not so much with applications.
At least by case-analysis :)
-rw-r--r-- | makefile | 2 | ||||
-rw-r--r-- | readme.md | 13 | ||||
-rw-r--r-- | src/build.c | 2 | ||||
-rw-r--r-- | src/parse.c | 12 | ||||
-rw-r--r-- | test/aoc.blc.dump | 188 | ||||
-rw-r--r-- | test/fac.blc.dump | 64 |
6 files changed, 142 insertions, 139 deletions
@@ -10,7 +10,7 @@ INC = ${CURDIR}/inc SRCS = $(wildcard $(SRC)/*.c) OBJS = $(patsubst $(SRC)/%.c, $(BUILD)/%.o, $(SRCS)) -CFLAGS_DEBUG = -Wno-error -g -O0 -Wno-unused -fsanitize=address,undefined,leak +CFLAGS_DEBUG = -fsanitize=leak CFLAGS_WARNINGS = -Wall -Wextra -Wshadow -Wpointer-arith -Wwrite-strings -Wredundant-decls -Wnested-externs -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wcast-qual -Wswitch-default -Wswitch-enum -Wunreachable-code -Wundef -Wold-style-definition -pedantic -Wno-switch-enum CFLAGS = $(CFLAGS_WARNINGS) -std=c99 -Ofast -I$(INC) @@ -13,20 +13,20 @@ first show you some results: 1. x86 C compiler [8cc](https://github.com/rui314/8cc) translated [to lambda calculus](https://github.com/woodrush/lambda-8cc): - the original expression takes ~5M bytes in bit-encoded BLC - - the same expression in BLoC needs only ~650K bytes (which is + - the same expression in BLoC needs only ~640K bytes (which is around 2x the original 8cc!) 2. The [bruijn](https://github.com/marvinborner/bruijn) expression `fac (+30)`, where `fac` is the factorial implementation from `std/Math`: - the original expression takes 1200 bytes in bit-encoded BLC - - the same expression in BLoC needs only 348 bytes + - the same expression in BLoC needs only 349 bytes 3. [My solution](https://github.com/marvinborner/bruijn/blob/main/samples/aoc/2022/01/solve.bruijn) for the “Advent of Code” challenge [2022/01](https://adventofcode.com/2022/day/1) in [bruijn](https://github.com/marvinborner/bruijn): - the original expression takes 6258 bytes in bit-encoded BLC - - the same expression in BLoC needs only 946 bytes + - the same expression in BLoC needs only 935 bytes You can find these examples in `test/`. @@ -50,8 +50,8 @@ following derivation of normal bit-encoded BLC: | prefix | content | |:-----------------|:------------------------------| -| 00M | abstraction of expression `M` | -| 010MN | application of `M` and `N` | +| 010M | abstraction of expression `M` | +| 00MN | application of `M` and `N` | | 1<sup>i+1</sup>0 | bruijn index `i` | | 011I | index\* to an entry | @@ -84,6 +84,9 @@ Even in this small example BLoC uses less space than BLC (0x34 vs. 0x42 bytes). Depending on the content of `M` and `N`, this could have potentially been compressed even more. +You can dump the bloc table using the `-d/--dump` flag of `bloc`. Some +additional dumps for testing can also be found in `test/`. + ## Optimizer The optimizer converts a normal BLC expression to the BLoC format. diff --git a/src/build.c b/src/build.c index 4c26e69..50b565b 100644 --- a/src/build.c +++ b/src/build.c @@ -26,12 +26,12 @@ static void rec_write_bblc(struct tree *tree, FILE *file, char *byte, int *bit) switch (tree->type) { case ABS: write_bit(0, file, byte, bit); + write_bit(1, file, byte, bit); write_bit(0, file, byte, bit); rec_write_bblc(tree->u.abs.term, file, byte, bit); break; case APP: write_bit(0, file, byte, bit); - write_bit(1, file, byte, bit); write_bit(0, file, byte, bit); rec_write_bblc(tree->u.app.lhs, file, byte, bit); rec_write_bblc(tree->u.app.rhs, file, byte, bit); diff --git a/src/parse.c b/src/parse.c index 5f00ffa..7051dd8 100644 --- a/src/parse.c +++ b/src/parse.c @@ -46,19 +46,19 @@ struct term *parse_blc(const char *term) #define BIT_AT(i) ((term[(i) / 8] & (1 << (7 - ((i) % 8)))) >> (7 - ((i) % 8))) // parses bloc's bit-encoded blc -// 00M -> abstraction of M -// 010MN -> application of M and N +// 010M -> abstraction of M +// 00MN -> application of M and N // 1X0 -> bruijn index, amount of 1s in X // 011I -> 2B index to entry static struct term *parse_bloc_bblc(const char *term, size_t *bit) { struct term *res = 0; - if (!BIT_AT(*bit) && !BIT_AT(*bit + 1)) { - (*bit) += 2; + if (!BIT_AT(*bit) && BIT_AT(*bit + 1) && !BIT_AT(*bit + 2)) { + (*bit) += 3; res = new_term(ABS); res->u.abs.term = parse_bloc_bblc(term, bit); - } else if (!BIT_AT(*bit) && BIT_AT(*bit + 1) && !BIT_AT(*bit + 2)) { - (*bit) += 3; + } else if (!BIT_AT(*bit) && !BIT_AT(*bit + 1)) { + (*bit) += 2; res = new_term(APP); res->u.app.lhs = parse_bloc_bblc(term, bit); res->u.app.rhs = parse_bloc_bblc(term, bit); diff --git a/test/aoc.blc.dump b/test/aoc.blc.dump index 0cc6113..f5ecf68 100644 --- a/test/aoc.blc.dump +++ b/test/aoc.blc.dump @@ -1,100 +1,100 @@ === START BLOC === | entries: 95 -| entry 93: [[[[(1 3)]]]] -| entry 92: (<20> 1) -| entry 91: ((<9> (<2> [[[(<1> (((<18> <8>) [0]) <42>))]]])) <6>) -| entry 90: ((3 0) [[0]]) -| entry 89: (<0> <92>) -| entry 88: ([(0 0)] [[((<46> [(<38> <76>)]) [(<22> <76>)])]]) -| entry 87: ((0 [[0]]) [[1]]) -| entry 86: (2 (<39> 1)) -| entry 85: ((3 0) [[[1]]]) -| entry 84: ((3 0) [[1]]) -| entry 83: [[[[[(((4 1) 0) <41>)]]]]] -| entry 82: ((<19> <49>) [[[[(((3 2) 0) 1)]]]]) -| entry 81: (<10> <85>) -| entry 80: (<2> [[[[(<25> (((3 2) ((2 1) <14>)) <6>))]]]]) -| entry 79: (<0> <12>) -| entry 78: [(([[[[[[((((5 2) 1) 0) <5>)]]]]]] 1) <7>)] -| entry 77: (<83> 1) -| entry 76: ([((3 3) 0)] 0) -| entry 75: [[((([[[((<2> [[((<15> 3) ((4 <14>) (1 <6>)))]]) 0)]]] <83>) [[[2]]]) ((([[[((<54> 0) (((<9> (([[[[((3 0) (2 1))]]]] <47>) (<2> [[(<52> (1 0))]]))) ([(((((<19> [(((0 [[1]]) [[0]]) [[0]])]) <44>) 0) <56>) 0)] ((<34> 2) (<61> 0)))) 1))]]] (<61> (<73> ([(<45> (((0 (<21> [[1]])) [(0 [[(<26> [[0]])]])]) [(0 [[((<0> (<46> <12>)) 0)]])]))] 1)))) [[0]]) (<73> 0)))]] -| entry 74: (<20> <7>) -| entry 73: [(((0 [[0]]) [((<0> [[1]]) 0)]) [((<0> [[0]]) 0)])] -| entry 72: ((3 0) [[[2]]]) -| entry 71: (4 3) -| entry 70: (<0> (((<2> [[[(<1> ((<18> (<8> <42>)) [[0]]))]]]) <27>) 0)) -| entry 69: [(1 [((1 1) 0)])] -| entry 68: (<0> <3>) -| entry 67: (<20> <72>) -| entry 66: [<87>] -| entry 65: (<0> <40>) -| entry 64: [[(([(((0 [(<59> (<88> 0))]) [[(((0 [[0]]) [(2 0)]) [[[0]]])]]) [[(((0 (1 0)) [[[0]]]) [(2 0)])]])] 1) <55>)]] -| entry 63: [([(0 [[0]])] ((((0 (<68> [[[[(2 3)]]]])) [(0 [[(<37> (<20> 0))]])]) [(0 [[(<89> <40>)]])]) [(0 [[(<65> <51>)]])]))] -| entry 62: [((1 (<22> <84>)) (<38> <90>))] -| entry 61: ((<2> [[[(<25> (<86> <6>))]]]) <3>) -| entry 60: (0 <3>) -| entry 59: [(<33> [0])] -| entry 58: (0 (1 3)) -| entry 57: (<38> 1) -| entry 56: ([[[[[(((<71> 1) 2) 0)]]]]] 0) -| entry 55: ([((<46> <93>) [[[[(0 3)]]]])] 0) -| entry 54: (<2> [[[(((<31> 1) 0) ((<0> (<45> 1)) ((2 ([(0 [[0]])] 1)) 0)))]]]) -| entry 53: ([[((([<33>] 1) ([[[(0 2)]]] 0)) 1)]] 0) -| entry 52: (<0> 0) -| entry 51: (<10> 1) -| entry 50: [(<77> <90>)] -| entry 49: [([(0 [[0]])] (((0 (<21> [[[(1 2)]]])) [(0 [[(<26> (<22> 0))]])]) [(0 [[(<79> <57>)]])]))] -| entry 48: ((<80> <16>) <3>) -| entry 47: (<2> [[[(<1> (((<32> 1) [[0]]) (<8> ((2 (<63> 1)) <6>))))]]]) -| entry 46: (0 [[[2]]]) -| entry 45: [(0 [[1]])] -| entry 44: [(([[((0 1) [0])]] [[[0]]]) ((((0 [[1]]) [(<53> [[[2]]])]) [(<53> [[[1]]])]) [0]))] -| entry 43: (<10> <7>) -| entry 42: ((2 1) <6>) -| entry 41: (((3 2) 1) 0) -| entry 40: (<4> 1) -| entry 39: [([(0 [[0]])] ((((0 (<68> <93>)) [(0 [[(<37> <40>)]])]) [(0 [[(<89> (<10> 0))]])]) [(0 [[(<65> <92>)]])]))] -| entry 38: [[[[(1 <41>)]]]] -| entry 37: (<0> <51>) -| entry 36: (<4> <7>) -| entry 35: ([(<52> [[0]])] <14>) -| entry 34: [[((<16> 1) <56>)]] -| entry 33: ((0 [[1]]) [[[0]]]) -| entry 32: [((<33> [[[0]]]) [0])] -| entry 31: [((0 [[[[[0]]]]]) [[1]])] -| entry 30: (<2> [[[(<1> ((<0> <18>) <42>))]]]) -| entry 29: (((<2> [[[(<1> ((<18> <42>) 0))]]]) <27>) 0) -| entry 28: [[(((<19> [(<87> [[0]])]) <44>) ((<34> 1) 0))]] -| entry 27: ((<19> <66>) 1) -| entry 26: (<0> <57>) -| entry 25: (<15> 1) -| entry 24: (<4> 0) -| entry 23: [(((1 <36>) <81>) <74>)] -| entry 22: [[[[(0 <41>)]]]] -| entry 21: (<0> [[[2]]]) -| entry 20: [[[[[(1 <5>)]]]]] -| entry 19: [[[(2 (1 0))]]] -| entry 18: (1 <14>) -| entry 17: (([([(1 (0 0))] [(1 (0 0))])] [[(((<60> [(<10> (2 0))]) [(<20> (2 0))]) [(<4> (2 0))])]]) 1) -| entry 16: [[(([([[((1 0) [[[0]]])]] ((((0 [[(((0 (<63> <17>)) (<39> <17>)) <17>)]]) [[[((((1 (<11> 1)) [(((1 (<4> <72>)) <43>) <67>)]) <78>) <11>)]]]) [[[((((1 (<23> 1)) <78>) [(((1 <74>) (<4> <85>)) <81>)]) <23>)]]]) [[[((((1 (<78> 1)) <11>) <23>) <78>)]]]))] 1) ([(((<60> [[[[[(2 4)]]]]]) [[[[[(1 4)]]]]]) [[[[[(0 4)]]]]])] 0))]] -| entry 15: (<31> 0) -| entry 14: (<45> 0) -| entry 13: (<88> 1) -| entry 12: (<22> 1) -| entry 11: [(((1 <67>) <36>) <43>)] -| entry 10: [[[[[(2 <5>)]]]]] -| entry 9: [[[((2 0) 1)]]] -| entry 8: (<0> <14>) -| entry 7: ((3 0) [[[0]]]) -| entry 6: ([(0 [[0]])] 0) -| entry 5: (((<71> 2) 1) 0) -| entry 4: [[[[[(0 <5>)]]]]] -| entry 3: [[[[3]]]] -| entry 2: [(<69> <69>)] -| entry 1: (<15> [[0]]) +| entry 93: (<1> [[[(<3> (((<78> 1) [[0]]) (<8> ((2 (<33> 1)) <2>))))]]]) +| entry 92: (<9> 0) +| entry 91: [[(((<45> [(<85> [[0]])]) <62>) ((<34> 1) 0))]] +| entry 90: (((3 2) 1) 0) +| entry 89: [[[[[(((4 1) 0) <90>)]]]]] +| entry 88: [([(0 [[0]])] (((0 (<17> [[[(1 2)]]])) [(0 [[(<28> (<11> 0))]])]) [(0 [[(<30> <23>)]])]))] +| entry 87: (((<1> [[[(<3> ((<13> <6>) 0))]]]) <86>) 0) +| entry 86: ((<45> <56>) 1) +| entry 85: ((0 [[0]]) [[1]]) +| entry 84: ((0 [[1]]) [[[0]]]) +| entry 83: ([[[[[(((<49> 1) 2) 0)]]]]] 0) +| entry 82: (<9> <44>) +| entry 81: (<0> <39>) +| entry 80: (<1> [[[[(<32> (((3 2) ((2 1) <10>)) <2>))]]]]) +| entry 79: [[((([[[((<1> [[((<40> 3) ((4 <10>) (1 <2>)))]]) 0)]]] <89>) [[[2]]]) ((([[[((<7> 0) (((<22> (([[[[((3 0) (2 1))]]]] <93>) (<1> [[(<59> (1 0))]]))) ([(((((<45> [(((0 [[1]]) [[0]]) [[0]])]) <62>) 0) <83>) 0)] ((<34> 2) (<42> 0)))) 1))]]] (<42> (<51> ([(<24> (((0 (<17> [[1]])) [(0 [[(<28> [[0]])]])]) [(0 [[((<0> (<43> <36>)) 0)]])]))] 1)))) [[0]]) (<51> 0)))]] +| entry 78: [((<84> [[[0]]]) [0])] +| entry 77: ([((3 3) 0)] 0) +| entry 76: ([(0 0)] [[((<43> [(<18> <77>)]) [(<11> <77>)])]]) +| entry 75: (<76> 1) +| entry 74: ((3 0) [[[1]]]) +| entry 73: [[(([(((0 [(<29> (<76> 0))]) [[(((0 [[0]]) [(2 0)]) [[[0]]])]]) [[(((0 (1 0)) [[[0]]]) [(2 0)])]])] 1) <31>)]] +| entry 72: ((3 0) [[1]]) +| entry 71: [([(0 [[0]])] ((((0 (<64> <53>)) [(0 [[(<46> <35>)]])]) [(0 [[(<81> (<12> 0))]])]) [(0 [[(<47> <39>)]])]))] +| entry 70: ((3 0) [[[2]]]) +| entry 69: ([(<59> [[0]])] <10>) +| entry 68: (<12> <74>) +| entry 67: (<12> <44>) +| entry 66: (<5> <44>) +| entry 65: (<0> (((<1> [[[(<3> ((<13> (<8> <6>)) [[0]]))]]]) <86>) 0)) +| entry 64: (<0> <4>) +| entry 63: (<89> 1) +| entry 62: [(([[((0 1) [0])]] [[[0]]]) ((((0 [[1]]) [(<58> [[[2]]])]) [(<58> [[[1]]])]) [0]))] +| entry 61: (2 (<71> 1)) +| entry 60: (<5> <70>) +| entry 59: (<0> 0) +| entry 58: ([[((([<84>] 1) ([[[(0 2)]]] 0)) 1)]] 0) +| entry 57: (0 <4>) +| entry 56: [<85>] +| entry 55: ((<80> <21>) <4>) +| entry 54: ((3 0) [[0]]) +| entry 53: [[[[(1 3)]]]] +| entry 52: (0 (1 3)) +| entry 51: [(((0 [[0]]) [((<0> [[1]]) 0)]) [((<0> [[0]]) 0)])] +| entry 50: ((<22> (<1> [[[(<3> (((<13> <8>) [0]) <6>))]]])) <2>) +| entry 49: (4 3) +| entry 48: (<12> 1) +| entry 47: (<0> <35>) +| entry 46: (<0> <48>) +| entry 45: [[[(2 (1 0))]]] +| entry 44: ((3 0) [[[0]]]) +| entry 43: (0 [[[2]]]) +| entry 42: ((<1> [[[(<32> (<61> <2>))]]]) <4>) +| entry 41: (([([(1 (0 0))] [(1 (0 0))])] [[(((<57> [(<12> (2 0))]) [(<5> (2 0))]) [(<9> (2 0))])]]) 1) +| entry 40: (<16> 0) +| entry 39: (<5> 1) +| entry 38: (((<49> 2) 1) 0) +| entry 37: [(<63> <54>)] +| entry 36: (<11> 1) +| entry 35: (<9> 1) +| entry 34: [[((<21> 1) <83>)]] +| entry 33: [([(0 [[0]])] ((((0 (<64> [[[[(2 3)]]]])) [(0 [[(<46> (<5> 0))]])]) [(0 [[(<81> <35>)]])]) [(0 [[(<47> <48>)]])]))] +| entry 32: (<40> 1) +| entry 31: ([((<43> <53>) [[[[(0 3)]]]])] 0) +| entry 30: (<0> <36>) +| entry 29: [(<84> [0])] +| entry 28: (<0> <23>) +| entry 27: [(((1 <60>) <82>) <67>)] +| entry 26: [((1 (<11> <72>)) (<18> <54>))] +| entry 25: [(1 [((1 1) 0)])] +| entry 24: [(0 [[1]])] +| entry 23: (<18> 1) +| entry 22: [[[((2 0) 1)]]] +| entry 21: [[(([([[((1 0) [[[0]]])]] ((((0 [[(((0 (<33> <41>)) (<71> <41>)) <41>)]]) [[[((((1 (<27> 1)) [(((1 (<9> <70>)) <67>) <60>)]) <19>) <27>)]]]) [[[((((1 (<15> 1)) <19>) [(((1 <66>) (<9> <74>)) <68>)]) <15>)]]]) [[[((((1 (<19> 1)) <27>) <15>) <19>)]]]))] 1) ([(((<57> [[[[[(2 4)]]]]]) [[[[[(1 4)]]]]]) [[[[[(0 4)]]]]])] 0))]] +| entry 20: (<1> [[[(<3> ((<0> <13>) <6>))]]]) +| entry 19: [(([[[[[[((((5 2) 1) 0) <38>)]]]]]] 1) <44>)] +| entry 18: [[[[(1 <90>)]]]] +| entry 17: (<0> [[[2]]]) +| entry 16: [((0 [[[[[0]]]]]) [[1]])] +| entry 15: [(((1 <82>) <68>) <66>)] +| entry 14: ((<45> <88>) [[[[(((3 2) 0) 1)]]]]) +| entry 13: (1 <10>) +| entry 12: [[[[[(2 <38>)]]]]] +| entry 11: [[[[(0 <90>)]]]] +| entry 10: (<24> 0) +| entry 9: [[[[[(0 <38>)]]]]] +| entry 8: (<0> <10>) +| entry 7: (<1> [[[(((<16> 1) 0) ((<0> (<24> 1)) ((2 ([(0 [[0]])] 1)) 0)))]]]) +| entry 6: ((2 1) <2>) +| entry 5: [[[[[(1 <38>)]]]]] +| entry 4: [[[[3]]]] +| entry 3: (<40> [[0]]) +| entry 2: ([(0 [[0]])] 0) +| entry 1: [(<25> <25>)] | entry 0: [[[((0 2) 1)]]] -| final: [([(<8> (<48> ((<47> [[[[<58>]]]]) 0)))] ((<2> [[(<1> ((<54> ((<54> (1 (<91> ((<9> (<9> [[(<66> ((<28> 1) 0))]])) <14>)))) <35>)) (1 (<91> ((<9> (<9> <28>)) <14>)))))]]) ((<30> <48>) (((<2> [[[(<1> ([(<8> ((3 2) <6>))] (([[(<70> ([(<1> <6>)] <29>))]] 1) 0)))]]]) <32>) ((<30> ((<19> ((<80> [[((<16> (([[((((1 <3>) [((<34> <24>) 1)]) [((<16> <24>) 1)]) [<24>])]] [[[[(1 <58>)]]]]) 1)) 0)]]) <3>)) (<30> [(((<2> [[[(((<59> 0) 1) (<86> ([([(0 [[0]])] (((0 (<21> [[[2]]])) [(0 [[(<26> <12>)]])]) [(0 [[(<79> (<38> 0))]])]))] 0)))]]]) <3>) (([[((((<64> 0) 1) [[[2]]]) (<82> (([[(([([[((1 0) [[0]])]] (((0 [[((0 (<49> <13>)) <13>)]]) [[[(((1 (<62> 1)) [(<77> <84>)]) <62>)]]]) [[[(((1 (<50> 1)) <62>) <50>)]]]))] 1) <55>)]] ((<75> 1) 0)) (<82> ((<75> 0) 1)))))]] 0) [[[(0 (0 (0 (0 (1 (1 (0 (0 2))))))))]]]))]))) ((<2> [[([(((<31> <6>) <35>) (<8> (2 ([(0 [[0]])] <6>))))] (([[(<70> <29>)]] (<64> [[[(0 (1 (0 (1 (0 (0 (0 (0 2))))))))]]])) 0))]]) 0))))))] +| final: [([(<8> (<55> ((<93> [[[[<52>]]]]) 0)))] ((<1> [[(<3> ((<7> ((<7> (1 (<50> ((<22> (<22> [[(<56> ((<91> 1) 0))]])) <10>)))) <69>)) (1 (<50> ((<22> (<22> <91>)) <10>)))))]]) ((<20> <55>) (((<1> [[[(<3> ([(<8> ((3 2) <2>))] (([[(<65> ([(<3> <2>)] <87>))]] 1) 0)))]]]) <78>) ((<20> ((<45> ((<80> [[((<21> (([[((((1 <4>) [((<34> <92>) 1)]) [((<21> <92>) 1)]) [<92>])]] [[[[(1 <52>)]]]]) 1)) 0)]]) <4>)) (<20> [(((<1> [[[(((<29> 0) 1) (<61> ([([(0 [[0]])] (((0 (<17> [[[2]]])) [(0 [[(<28> <36>)]])]) [(0 [[(<30> (<18> 0))]])]))] 0)))]]]) <4>) (([[((((<73> 0) 1) [[[2]]]) (<14> (([[(([([[((1 0) [[0]])]] (((0 [[((0 (<88> <75>)) <75>)]]) [[[(((1 (<26> 1)) [(<63> <72>)]) <26>)]]]) [[[(((1 (<37> 1)) <26>) <37>)]]]))] 1) <31>)]] ((<79> 1) 0)) (<14> ((<79> 0) 1)))))]] 0) [[[(0 (0 (0 (0 (1 (1 (0 (0 2))))))))]]]))]))) ((<1> [[([(((<16> <2>) <69>) (<8> (2 ([(0 [[0]])] <2>))))] (([[(<65> <87>)]] (<73> [[[(0 (1 (0 (1 (0 (0 (0 (0 2))))))))]]])) 0))]]) 0))))))] === END BLOC === diff --git a/test/fac.blc.dump b/test/fac.blc.dump index db72801..e46df2a 100644 --- a/test/fac.blc.dump +++ b/test/fac.blc.dump @@ -1,40 +1,40 @@ === START BLOC === | entries: 35 -| entry 33: (<2> <26>) -| entry 32: (<2> 1) -| entry 31: (<5> <32>) -| entry 30: [[(([([[((1 0) [[[0]]])]] ((((0 [[(((0 ([([(0 [[0]])] ((((0 (<27> [[[[(2 3)]]]])) [(0 [[(<13> (<2> 0))]])]) [(0 [[(<31> <12>)]])]) [(0 [[(<24> <19>)]])]))] <11>)) (<8> <11>)) <11>)]]) [[[((((1 (<10> 1)) [(((1 (<0> <26>)) <18>) <33>)]) <14>) <10>)]]]) [[[((((1 (<9> 1)) <14>) [(((1 <29>) (<0> <25>)) <17>)]) <9>)]]]) [[[((((1 (<14> 1)) <10>) <9>) <14>)]]]))] 1) <20>)]] -| entry 29: (<2> <1>) -| entry 28: (4 3) -| entry 27: (<5> <3>) +| entry 33: (<1> 1) +| entry 32: [(((1 <18>) <24>) <22>)] +| entry 31: (0 <5>) +| entry 30: (<2> <33>) +| entry 29: (<3> 1) +| entry 28: (<2> <5>) +| entry 27: ([([(1 (0 0))] [(1 (0 0))])] [[(((<31> [(<3> (2 0))]) [(<1> (2 0))]) [(<0> (2 0))])]]) | entry 26: ((3 0) [[[2]]]) -| entry 25: ((3 0) [[[1]]]) -| entry 24: (<5> <12>) -| entry 23: (<0> <1>) -| entry 22: (<0> 0) -| entry 21: ([([(1 (0 0))] [(1 (0 0))])] [[(((<16> [(<6> (2 0))]) [(<2> (2 0))]) [(<0> (2 0))])]]) -| entry 20: ([(((<16> [[[[[(2 4)]]]]]) [[[[[(1 4)]]]]]) [[[[[(0 4)]]]]])] 0) -| entry 19: (<6> 1) -| entry 18: (<6> <1>) -| entry 17: (<6> <25>) -| entry 16: (0 <3>) -| entry 15: [(1 [((1 1) 0)])] -| entry 14: [(([[[[[[((((5 2) 1) 0) <4>)]]]]]] 1) <1>)] -| entry 13: (<5> <19>) +| entry 25: [[(([([[((1 0) [[[0]]])]] ((((0 [[(((0 ([([(0 [[0]])] ((((0 (<28> [[[[(2 3)]]]])) [(0 [[(<19> (<1> 0))]])]) [(0 [[(<30> <12>)]])]) [(0 [[(<17> <29>)]])]))] <6>)) (<11> <6>)) <6>)]]) [[[((((1 (<32> 1)) [(((1 (<0> <26>)) <22>) <18>)]) <7>) <32>)]]]) [[[((((1 (<9> 1)) <7>) [(((1 <21>) (<0> <13>)) <23>)]) <9>)]]]) [[[((((1 (<7> 1)) <32>) <9>) <7>)]]]))] 1) <20>)]] +| entry 24: (<0> <15>) +| entry 23: (<3> <13>) +| entry 22: (<3> <15>) +| entry 21: (<1> <15>) +| entry 20: ([(((<31> [[[[[(2 4)]]]]]) [[[[[(1 4)]]]]]) [[[[[(0 4)]]]]])] 0) +| entry 19: (<2> <29>) +| entry 18: (<1> <26>) +| entry 17: (<2> <12>) +| entry 16: (<0> 0) +| entry 15: ((3 0) [[[0]]]) +| entry 14: (4 3) +| entry 13: ((3 0) [[[1]]]) | entry 12: (<0> 1) -| entry 11: (<21> 1) -| entry 10: [(((1 <33>) <23>) <18>)] -| entry 9: [(((1 <23>) <17>) <29>)] -| entry 8: [([(0 [[0]])] ((((0 (<27> <7>)) [(0 [[(<13> <12>)]])]) [(0 [[(<31> (<6> 0))]])]) [(0 [[(<24> <32>)]])]))] -| entry 7: [[[[(1 3)]]]] -| entry 6: [[[[[(2 <4>)]]]]] -| entry 5: [[[((0 2) 1)]]] -| entry 4: (((<28> 2) 1) 0) -| entry 3: [[[[3]]]] -| entry 2: [[[[[(1 <4>)]]]]] -| entry 1: ((3 0) [[[0]]]) +| entry 11: [([(0 [[0]])] ((((0 (<28> <8>)) [(0 [[(<19> <12>)]])]) [(0 [[(<30> (<3> 0))]])]) [(0 [[(<17> <33>)]])]))] +| entry 10: [(1 [((1 1) 0)])] +| entry 9: [(((1 <24>) <23>) <21>)] +| entry 8: [[[[(1 3)]]]] +| entry 7: [(([[[[[[((((5 2) 1) 0) <4>)]]]]]] 1) <15>)] +| entry 6: (<27> 1) +| entry 5: [[[[3]]]] +| entry 4: (((<14> 2) 1) 0) +| entry 3: [[[[[(2 <4>)]]]]] +| entry 2: [[[((0 2) 1)]]] +| entry 1: [[[[[(1 <4>)]]]]] | entry 0: [[[[[(0 <4>)]]]]] -| final: ([((((([(<15> <15>)] [[[[[(((([[(([((((0 [([((((0 [[1]]) [[[0]]]) [[[0]]]) [0])] (<21> 0))]) [[((((0 [[0]]) [(2 0)]) [[[0]]]) [[[0]]])]]) [[((((0 [[0]]) [[[0]]]) [(2 0)]) [[[0]]])]]) [[((((0 (1 0)) [[[0]]]) [[[0]]]) [(2 0)])]])] 1) <20>)]] 2) (<8> 1)) 3) ((((4 (([[((((1 <3>) [(([[((<30> 1) ([[[[[(((<28> 1) 2) 0)]]]]] 0))]] <22>) 1)]) [((<30> <22>) 1)]) [<22>])]] 3) (0 2))) (<8> 2)) 1) 0))]]]]]) <7>) <7>) 0) [0])] [[[[(0 (1 (0 (1 3))))]]]]) +| final: ([((((([(<10> <10>)] [[[[[(((([[(([((((0 [([((((0 [[1]]) [[[0]]]) [[[0]]]) [0])] (<27> 0))]) [[((((0 [[0]]) [(2 0)]) [[[0]]]) [[[0]]])]]) [[((((0 [[0]]) [[[0]]]) [(2 0)]) [[[0]]])]]) [[((((0 (1 0)) [[[0]]]) [[[0]]]) [(2 0)])]])] 1) <20>)]] 2) (<11> 1)) 3) ((((4 (([[((((1 <5>) [(([[((<25> 1) ([[[[[(((<14> 1) 2) 0)]]]]] 0))]] <16>) 1)]) [((<25> <16>) 1)]) [<16>])]] 3) (0 2))) (<11> 2)) 1) 0))]]]]]) <8>) <8>) 0) [0])] [[[[(0 (1 (0 (1 3))))]]]]) === END BLOC === |