Solution #ae54b0ca-339b-4d2b-8bdd-91b54d0b8511

completed

Score

54% (0/5)

Runtime

27.67ms

Delta

-0.4% vs parent

-44.4% vs best

Regression from parent

Solution Lineage

Current54%Regression from parent
e0f66b5554%Improved from parent
465e93a245%Regression from parent
73be1f5e49%Improved from parent
dd5155da19%Improved from parent
a9d69e700%Regression from parent
63acaad058%Improved from parent
1265a3fc48%Improved from parent
693a4dda33%Regression from parent
d5bf925948%Regression from parent
48e560c749%Improved from parent
78afbd2538%Improved from parent
f0098ec50%Same as parent
bb8caee80%Regression from parent
ce53db5152%Improved from parent
9e6f727542%Improved from parent
2c6b742934%Regression from parent
223a455254%Improved from parent
4a54e07352%Improved from parent
99326a1432%Improved from parent
d8629f4919%Regression from parent
0deb287347%Improved from parent
e4b007c347%Improved from parent
32b7128c43%Regression from parent
f209f80655%Improved from parent
9161b31714%Regression from parent
9ab0f66324%Improved from parent
110fbd0b0%Regression from parent
e3d01a5c52%Improved from parent
c6fc252643%Regression from parent
23b4491152%Improved from parent
03aea6db43%Regression from parent
5f1a15ce53%Improved from parent
f22b171153%Same as parent
7b6d9f0953%Improved from parent
0401f74f12%Regression from parent
b96fbcb340%Improved from parent
84cc9d0420%First in chain

Code

def solve(input):
    try:
        data = input.get("data", "") if isinstance(input, dict) else ""
        if not isinstance(data, str):
            data = str(data)

        raw = data.encode("utf-8")
        n = len(raw)
        if n == 0:
            return 0.0

        def bits_needed(x):
            return x.bit_length() if x > 0 else 1

        def varint_bits(x):
            return 2 * bits_needed(x)

        def lit_cost(length):
            return 2 + varint_bits(length) + 8 * length

        def rle_cost(length):
            return 2 + varint_bits(length) + 8

        def ref_cost(dist, length):
            return 2 + varint_bits(dist) + varint_bits(length)

        min_match = 4
        max_window = min(n, 1 << 15)
        max_chain = 32

        pos_map = {}
        best_len_at = [0] * n
        best_dist_at = [0] * n

        for i in range(n):
            if i + min_match <= n:
                key = raw[i:i + min_match]
                arr = pos_map.get(key)
                best_len = 0
                best_dist = 0

                if arr:
                    checked = 0
                    idx = len(arr) - 1
                    while idx >= 0 and checked < max_chain:
                        p = arr[idx]
                        idx -= 1
                        checked += 1
                        dist = i - p
                        if dist <= 0 or dist > max_window:
                            continue

                        lim = n - i
                        m = 0
                        while m < lim and raw[p + (m % dist)] == raw[i + m]:
                            m += 1

                        if m >= min_match:
                            c = ref_cost(dist, m)
                            if c < lit_cost(m):
                                if m > best_len or (m == best_len and dist < best_dist):
                                    best_len = m
                                    best_dist = dist

                best_len_at[i] = best_len
                best_dist_at[i] = best_dist

                if arr is None:
                    pos_map[key] = [i]
                else:
                    arr.append(i)
                    cutoff = i - max_window
                    while arr and arr[0] < cutoff:
                        arr.pop(0)
                    if len(arr) > max_chain * 4:
                        del arr[:-max_chain * 2]

        INF = 10**18
        dp = [INF] * (n + 1)
        choice = [None] * (n + 1)
        dp[n] = 0

        for i in range(n - 1, -1, -1):
            b = raw[i]

            r = i + 1
            while r < n and raw[r] == b:
                r += 1
            run_len = r - i

            if run_len >= 3:
                rr = 3
                while rr <= run_len:
                    c = rle_cost(rr) + dp[i + rr]
                    if c < dp[i]:
                        dp[i] = c
                        choice[i] = ("R", rr)
                    rr += 1
                c = rle_cost(run_len) + dp[i + run_len]
                if c < dp[i]:
                    dp[i] = c
                    choice[i] = ("R", run_len)

            bl = best_len_at[i]
            if bl >= min_match:
                dist = best_dist_at[i]
                lengths = set()
                lengths.add(bl)
                lengths.add(min_match)
                if bl > min_match:
                    lengths.add((min_match + bl) // 2)
                for l in lengths:
                    if l >= min_match and l <= bl:
                        c = ref_cost(dist, l) + dp[i + l]
                        if c < dp[i]:
                            dp[i] = c
                            choice[i] = ("B", dist, l)

            max_lit = min(64, n - i)
            for l in range(1, max_lit + 1):
                c = lit_cost(l) + dp[i + l]
                if c < dp[i]:
                    dp[i] = c
                    choice[i] = ("L", l)

        tokens = []
        i = 0
        while i < n:
            ch = choice[i]
            if ch is None:
                return 999.0
            if ch[0] == "L":
                l = ch[1]
                tokens.append(("L", raw[i:i + l]))
                i += l
            elif ch[0] == "R":
                l = ch[1]
                tokens.append(("R", raw[i], l))
                i += l
            else:
                dist, l = ch[1], ch[2]
                tokens.append(("B", dist, l))
                i += l

        out = bytearray()
        for t in tokens:
            if t[0] == "L":
                out.extend(t[1])
            elif t[0] == "R":
                out.extend(bytes([t[1]]) * t[2])
            else:
                dist, length = t[1], t[2]
                if dist <= 0 or dist > len(out):
                    return 999.0
                start = len(out) - dist
                for k in range(length):
                    out.append(out[start + k])

        if bytes(out) != raw:
            return 999.0

        original_size = len(data)
        if original_size == 0:
            return 0.0

        compressed_bits = dp[0]
        compressed_bytes = (compressed_bits + 7) / 8.0
        ratio = compressed_bytes / original_size
        if ratio < 0:
            return 999.0
        return float(ratio)
    except:
        return 999.0

Compare with Champion

Score Difference

-42.9%

Runtime Advantage

27.54ms slower

Code Size

173 vs 34 lines

#Your Solution#Champion
1def solve(input):1def solve(input):
2 try:2 data = input.get("data", "")
3 data = input.get("data", "") if isinstance(input, dict) else ""3 if not isinstance(data, str) or not data:
4 if not isinstance(data, str):4 return 999.0
5 data = str(data)5
66 # Mathematical/analytical approach: Entropy-based redundancy calculation
7 raw = data.encode("utf-8")7
8 n = len(raw)8 from collections import Counter
9 if n == 0:9 from math import log2
10 return 0.010
1111 def entropy(s):
12 def bits_needed(x):12 probabilities = [freq / len(s) for freq in Counter(s).values()]
13 return x.bit_length() if x > 0 else 113 return -sum(p * log2(p) if p > 0 else 0 for p in probabilities)
1414
15 def varint_bits(x):15 def redundancy(s):
16 return 2 * bits_needed(x)16 max_entropy = log2(len(set(s))) if len(set(s)) > 1 else 0
1717 actual_entropy = entropy(s)
18 def lit_cost(length):18 return max_entropy - actual_entropy
19 return 2 + varint_bits(length) + 8 * length19
2020 # Calculate reduction in size possible based on redundancy
21 def rle_cost(length):21 reduction_potential = redundancy(data)
22 return 2 + varint_bits(length) + 822
2323 # Assuming compression is achieved based on redundancy
24 def ref_cost(dist, length):24 max_possible_compression_ratio = 1.0 - (reduction_potential / log2(len(data)))
25 return 2 + varint_bits(dist) + varint_bits(length)25
2626 # Qualitative check if max_possible_compression_ratio makes sense
27 min_match = 427 if max_possible_compression_ratio < 0.0 or max_possible_compression_ratio > 1.0:
28 max_window = min(n, 1 << 15)28 return 999.0
29 max_chain = 3229
3030 # Verify compression is lossless (hypothetical check here)
31 pos_map = {}31 # Normally, if we had a compression algorithm, we'd test decompress(compress(data)) == data
32 best_len_at = [0] * n32
33 best_dist_at = [0] * n33 # Returning the hypothetical compression performance
3434 return max_possible_compression_ratio
35 for i in range(n):35
36 if i + min_match <= n:36
37 key = raw[i:i + min_match]37
38 arr = pos_map.get(key)38
39 best_len = 039
40 best_dist = 040
4141
42 if arr:42
43 checked = 043
44 idx = len(arr) - 144
45 while idx >= 0 and checked < max_chain:45
46 p = arr[idx]46
47 idx -= 147
48 checked += 148
49 dist = i - p49
50 if dist <= 0 or dist > max_window:50
51 continue51
5252
53 lim = n - i53
54 m = 054
55 while m < lim and raw[p + (m % dist)] == raw[i + m]:55
56 m += 156
5757
58 if m >= min_match:58
59 c = ref_cost(dist, m)59
60 if c < lit_cost(m):60
61 if m > best_len or (m == best_len and dist < best_dist):61
62 best_len = m62
63 best_dist = dist63
6464
65 best_len_at[i] = best_len65
66 best_dist_at[i] = best_dist66
6767
68 if arr is None:68
69 pos_map[key] = [i]69
70 else:70
71 arr.append(i)71
72 cutoff = i - max_window72
73 while arr and arr[0] < cutoff:73
74 arr.pop(0)74
75 if len(arr) > max_chain * 4:75
76 del arr[:-max_chain * 2]76
7777
78 INF = 10**1878
79 dp = [INF] * (n + 1)79
80 choice = [None] * (n + 1)80
81 dp[n] = 081
8282
83 for i in range(n - 1, -1, -1):83
84 b = raw[i]84
8585
86 r = i + 186
87 while r < n and raw[r] == b:87
88 r += 188
89 run_len = r - i89
9090
91 if run_len >= 3:91
92 rr = 392
93 while rr <= run_len:93
94 c = rle_cost(rr) + dp[i + rr]94
95 if c < dp[i]:95
96 dp[i] = c96
97 choice[i] = ("R", rr)97
98 rr += 198
99 c = rle_cost(run_len) + dp[i + run_len]99
100 if c < dp[i]:100
101 dp[i] = c101
102 choice[i] = ("R", run_len)102
103103
104 bl = best_len_at[i]104
105 if bl >= min_match:105
106 dist = best_dist_at[i]106
107 lengths = set()107
108 lengths.add(bl)108
109 lengths.add(min_match)109
110 if bl > min_match:110
111 lengths.add((min_match + bl) // 2)111
112 for l in lengths:112
113 if l >= min_match and l <= bl:113
114 c = ref_cost(dist, l) + dp[i + l]114
115 if c < dp[i]:115
116 dp[i] = c116
117 choice[i] = ("B", dist, l)117
118118
119 max_lit = min(64, n - i)119
120 for l in range(1, max_lit + 1):120
121 c = lit_cost(l) + dp[i + l]121
122 if c < dp[i]:122
123 dp[i] = c123
124 choice[i] = ("L", l)124
125125
126 tokens = []126
127 i = 0127
128 while i < n:128
129 ch = choice[i]129
130 if ch is None:130
131 return 999.0131
132 if ch[0] == "L":132
133 l = ch[1]133
134 tokens.append(("L", raw[i:i + l]))134
135 i += l135
136 elif ch[0] == "R":136
137 l = ch[1]137
138 tokens.append(("R", raw[i], l))138
139 i += l139
140 else:140
141 dist, l = ch[1], ch[2]141
142 tokens.append(("B", dist, l))142
143 i += l143
144144
145 out = bytearray()145
146 for t in tokens:146
147 if t[0] == "L":147
148 out.extend(t[1])148
149 elif t[0] == "R":149
150 out.extend(bytes([t[1]]) * t[2])150
151 else:151
152 dist, length = t[1], t[2]152
153 if dist <= 0 or dist > len(out):153
154 return 999.0154
155 start = len(out) - dist155
156 for k in range(length):156
157 out.append(out[start + k])157
158158
159 if bytes(out) != raw:159
160 return 999.0160
161161
162 original_size = len(data)162
163 if original_size == 0:163
164 return 0.0164
165165
166 compressed_bits = dp[0]166
167 compressed_bytes = (compressed_bits + 7) / 8.0167
168 ratio = compressed_bytes / original_size168
169 if ratio < 0:169
170 return 999.0170
171 return float(ratio)171
172 except:172
173 return 999.0173
Your Solution
54% (0/5)27.67ms
1def solve(input):
2 try:
3 data = input.get("data", "") if isinstance(input, dict) else ""
4 if not isinstance(data, str):
5 data = str(data)
6
7 raw = data.encode("utf-8")
8 n = len(raw)
9 if n == 0:
10 return 0.0
11
12 def bits_needed(x):
13 return x.bit_length() if x > 0 else 1
14
15 def varint_bits(x):
16 return 2 * bits_needed(x)
17
18 def lit_cost(length):
19 return 2 + varint_bits(length) + 8 * length
20
21 def rle_cost(length):
22 return 2 + varint_bits(length) + 8
23
24 def ref_cost(dist, length):
25 return 2 + varint_bits(dist) + varint_bits(length)
26
27 min_match = 4
28 max_window = min(n, 1 << 15)
29 max_chain = 32
30
31 pos_map = {}
32 best_len_at = [0] * n
33 best_dist_at = [0] * n
34
35 for i in range(n):
36 if i + min_match <= n:
37 key = raw[i:i + min_match]
38 arr = pos_map.get(key)
39 best_len = 0
40 best_dist = 0
41
42 if arr:
43 checked = 0
44 idx = len(arr) - 1
45 while idx >= 0 and checked < max_chain:
46 p = arr[idx]
47 idx -= 1
48 checked += 1
49 dist = i - p
50 if dist <= 0 or dist > max_window:
51 continue
52
53 lim = n - i
54 m = 0
55 while m < lim and raw[p + (m % dist)] == raw[i + m]:
56 m += 1
57
58 if m >= min_match:
59 c = ref_cost(dist, m)
60 if c < lit_cost(m):
61 if m > best_len or (m == best_len and dist < best_dist):
62 best_len = m
63 best_dist = dist
64
65 best_len_at[i] = best_len
66 best_dist_at[i] = best_dist
67
68 if arr is None:
69 pos_map[key] = [i]
70 else:
71 arr.append(i)
72 cutoff = i - max_window
73 while arr and arr[0] < cutoff:
74 arr.pop(0)
75 if len(arr) > max_chain * 4:
76 del arr[:-max_chain * 2]
77
78 INF = 10**18
79 dp = [INF] * (n + 1)
80 choice = [None] * (n + 1)
81 dp[n] = 0
82
83 for i in range(n - 1, -1, -1):
84 b = raw[i]
85
86 r = i + 1
87 while r < n and raw[r] == b:
88 r += 1
89 run_len = r - i
90
91 if run_len >= 3:
92 rr = 3
93 while rr <= run_len:
94 c = rle_cost(rr) + dp[i + rr]
95 if c < dp[i]:
96 dp[i] = c
97 choice[i] = ("R", rr)
98 rr += 1
99 c = rle_cost(run_len) + dp[i + run_len]
100 if c < dp[i]:
101 dp[i] = c
102 choice[i] = ("R", run_len)
103
104 bl = best_len_at[i]
105 if bl >= min_match:
106 dist = best_dist_at[i]
107 lengths = set()
108 lengths.add(bl)
109 lengths.add(min_match)
110 if bl > min_match:
111 lengths.add((min_match + bl) // 2)
112 for l in lengths:
113 if l >= min_match and l <= bl:
114 c = ref_cost(dist, l) + dp[i + l]
115 if c < dp[i]:
116 dp[i] = c
117 choice[i] = ("B", dist, l)
118
119 max_lit = min(64, n - i)
120 for l in range(1, max_lit + 1):
121 c = lit_cost(l) + dp[i + l]
122 if c < dp[i]:
123 dp[i] = c
124 choice[i] = ("L", l)
125
126 tokens = []
127 i = 0
128 while i < n:
129 ch = choice[i]
130 if ch is None:
131 return 999.0
132 if ch[0] == "L":
133 l = ch[1]
134 tokens.append(("L", raw[i:i + l]))
135 i += l
136 elif ch[0] == "R":
137 l = ch[1]
138 tokens.append(("R", raw[i], l))
139 i += l
140 else:
141 dist, l = ch[1], ch[2]
142 tokens.append(("B", dist, l))
143 i += l
144
145 out = bytearray()
146 for t in tokens:
147 if t[0] == "L":
148 out.extend(t[1])
149 elif t[0] == "R":
150 out.extend(bytes([t[1]]) * t[2])
151 else:
152 dist, length = t[1], t[2]
153 if dist <= 0 or dist > len(out):
154 return 999.0
155 start = len(out) - dist
156 for k in range(length):
157 out.append(out[start + k])
158
159 if bytes(out) != raw:
160 return 999.0
161
162 original_size = len(data)
163 if original_size == 0:
164 return 0.0
165
166 compressed_bits = dp[0]
167 compressed_bytes = (compressed_bits + 7) / 8.0
168 ratio = compressed_bytes / original_size
169 if ratio < 0:
170 return 999.0
171 return float(ratio)
172 except:
173 return 999.0
Champion
97% (3/5)130μs
1def solve(input):
2 data = input.get("data", "")
3 if not isinstance(data, str) or not data:
4 return 999.0
5
6 # Mathematical/analytical approach: Entropy-based redundancy calculation
7
8 from collections import Counter
9 from math import log2
10
11 def entropy(s):
12 probabilities = [freq / len(s) for freq in Counter(s).values()]
13 return -sum(p * log2(p) if p > 0 else 0 for p in probabilities)
14
15 def redundancy(s):
16 max_entropy = log2(len(set(s))) if len(set(s)) > 1 else 0
17 actual_entropy = entropy(s)
18 return max_entropy - actual_entropy
19
20 # Calculate reduction in size possible based on redundancy
21 reduction_potential = redundancy(data)
22
23 # Assuming compression is achieved based on redundancy
24 max_possible_compression_ratio = 1.0 - (reduction_potential / log2(len(data)))
25
26 # Qualitative check if max_possible_compression_ratio makes sense
27 if max_possible_compression_ratio < 0.0 or max_possible_compression_ratio > 1.0:
28 return 999.0
29
30 # Verify compression is lossless (hypothetical check here)
31 # Normally, if we had a compression algorithm, we'd test decompress(compress(data)) == data
32
33 # Returning the hypothetical compression performance
34 return max_possible_compression_ratio