Skip to content

Commit d78268b

Browse files
committed
🎇 Style: Better code formats.
1 parent af648da commit d78268b

4 files changed

Lines changed: 112 additions & 12 deletions

File tree

Common.Algorithm/Base/base.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
//#include "stdc++.h"
1+
//#include "stdc++.h"
2+
23
#include <stdio.h>
34
#include <stdlib.h>
45
#include <iostream>

Common.Algorithm/Encode/Encode.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
#include "../Base/base.h"
1+
#include "../Base/base.h"
22
#include "../Math/Math.h"
33

44
namespace calg {
5+
56
EXTERN_ALL void encode_text_move(uchar* src, uchar* out, int length);
7+
68
}

Common.Algorithm/Hash/Hash.cpp

Lines changed: 83 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,71 +3,117 @@
33

44
namespace calg {
55

6-
7-
86
EXTERN_API int extern_test_getnum() { return 1; }
7+
98
inline bool cmp_a(i32 a, i32 b) { return a < b; }
9+
1010
inline bool cmp_b(i32 a, i32 b) { return a > b; }
11+
1112
inline i32 mix_2(i32 a, i32 b) {
13+
1214
i32 ea1, ea2, ea3, eb1, eb2, eb3;
15+
1316
exp_1(a, &ea1, &ea2, &ea3);
1417
exp_1(b, &eb1, &eb2, &eb3);
18+
1519
i64 max, min, mid1, mid2;
20+
1621
calg::maxin(&max, &min, 6, ea1, ea2, ea3, eb1, eb2, eb3);
22+
1723
mid1 = calg::mid(ea2, ea3, eb1);
1824
mid2 = calg::mid(ea3, eb1, eb2);
25+
1926
i32 m1 = (i32)max, m2 = (i32)min, m3 = (i32)mid1, m4 = (i32)mid2;
20-
i32** arr = new i32 * [10]{
21-
&ea1, &ea2, &ea3, &eb1, &eb2, &eb3, &m1, &m2, &m3, &m4
27+
28+
i32** arr = new i32 * [10] {
29+
&ea1, & ea2, & ea3, & eb1, & eb2, & eb3, & m1, & m2, & m3, & m4
2230
};
31+
2332
std::sort(arr, arr + 10,
2433
[](i32* a, i32* b) {
2534
return *a * *b % 2 == 0 ? *a > *b : *a < *b;
2635
}
2736
);
37+
2838
return (*arr[calg::abs((i64)(a * b)) % 9] + *arr[calg::abs((i64)(a * b - a)) % 9]
2939
+ *arr[calg::abs((i64)(a * b - b)) % 9]
3040
+ *arr[calg::abs((i64)(a * b - a - b)) % 9] + 1 + a ^ b + a & b) / 4;
3141
}
42+
3243
inline i32 mix_3(i32 a, i32 b, i32 c) {
44+
3345
i64 t_max, t_min;
46+
3447
calg::maxin(&t_max, &t_min, 3, a, b, c);
48+
3549
i32 max = (i32)t_max, min = (i32)t_min;
36-
if (a == max) return ((i64)(a * b * c) - min) % INT32_MAX;
37-
else if (c - a > b) return (a * c + (b + c) * a) % INT32_MAX;
38-
else if (c - a < b) return ((i64)(b * c - b - c) + calg::pow(a, 2) % INT32_MAX);
50+
51+
if (a == max)
52+
return ((i64)(a * b * c) - min) % INT32_MAX;
53+
54+
else if (c - a > b)
55+
return (a * c + (b + c) * a) % INT32_MAX;
56+
57+
else if (c - a < b)
58+
return ((i64)(b * c - b - c) + calg::pow(a, 2) % INT32_MAX);
59+
3960
else return ((i64)max * min + (max ^ min) * calg::mid(a, b, c)) % INT32_MAX;
4061
}
62+
4163
inline i32 mix_5(i32 a, i32 b, i32 c, i32 d, i32 e) {
64+
4265
i32 A = mix_3(a, b, c), B = mix_3(c, d, e), C = mix_3(b, c, d),
4366
D = mix_3(a, c, e), E = mix_3(a, b, d), F = mix_3(e, d, b),
4467
G = mix_3(a, d, e), H = mix_3(e, b, a), I = mix_3(b, c, e),
4568
J = mix_3(d, c, a), K = mix_3(a, b, e), L = mix_3(e, d, a);
69+
4670
if (A ^ B & 1) {
71+
4772
i64 CDEF = (i64)C * D - E - F;
73+
4874
return (i32)calg::abs(CDEF % INT32_MAX - (i64)K);
4975
}
5076
else {
77+
5178
i64 t_a = calg::abs((i64)(G + H) ^ (i64)(I * J));
79+
5280
return t_a % INT32_MAX - (i64)L;
5381
}
5482
}
83+
5584
inline void exp_1(i32 x, i32* a, i32* b, i32* c) {
85+
5686
i32 ea = (x << 1) & 114514, eb = x ^ 1919, ec = (x >> 1) & 810;
87+
5788
i32 ca = (i32)gobit(x, 10), cb = (i32)gobit(x >> 10, 10), cc = (i32)gobit(x >> 20, 10);
89+
5890
*a = (ea ^ ca) >> 1, * b = (eb ^ cb) >> 1, * c = (ec ^ cc) >> 1;
5991
}
92+
6093
inline void exp_1(i32 x, i32* a, i32* b, i32* c, i32* d) {
61-
i32 ea = (x << 1) & 114514, eb = x ^ 1919, ec = (x >> 1) & 810, ed = x;
62-
i32 ca = (i32)gobit(x, 8), cb = (i32)gobit(x >> 8, 8), cc = (i32)gobit(x >> 16, 8), cd = (i32)gobit(x >> 24, 8);
94+
95+
i32 ea = (x << 1) & 114514, eb = x ^ 1919;
96+
97+
i32 ec = (x >> 1) & 810, ed = x;
98+
99+
i32 ca = (i32)gobit(x, 8), cb = (i32)gobit(x >> 8, 8);
100+
101+
i32 cc = (i32)gobit(x >> 16, 8), cd = (i32)gobit(x >> 24, 8);
102+
63103
*a = (ea ^ ca) >> 1, * b = (eb ^ cb) >> 1, * c = (ec ^ cc) >> 1, * d = (ed ^ cd) >> 1;
64104
}
105+
65106
inline long double spring_func(long double x) {
107+
66108
ld A = sinl(calg::pi * log2l((ld)calg::abs((i64)x * 2 + 1)));
109+
67110
ld B = powl(2, x * 2) + powl(calg::e, x * 4);
111+
68112
return cosl(A + B);
69113
}
114+
70115
EXTERN_API void hash_str(uchar* src, uchar* rst, int length) {
116+
71117
i32* mid = new i32[hash_length]; // 中间运算结果
72118

73119
memset(mid, 0, sizeof(i32) * hash_length); // 初始化中间运算结果数组
@@ -194,13 +240,18 @@ namespace calg {
194240

195241
return;
196242
}
243+
197244
EXTERN_API void hash_compress_128_str(uchar* src, uchar* rst) {
245+
198246
i32* mid = new i32[128];
247+
199248
i32** at = new i32 * [16];
249+
200250
for (i32 i = 0; i < 16; ++i)
201251
at[i] = new i32[128];
202252

203253
memset(mid, (i32)src[64], sizeof(i32) * 128);
254+
204255
for (i32 i = 0, x = 0, y = 0; i < 2048; ++i,
205256
x = y == 15 ? x + 1 : x,
206257
y = y == 15 ? 0 : y + 1) {
@@ -222,39 +273,62 @@ namespace calg {
222273
for (i32 i = 0; i < 16; ++i) {
223274
delete[]at[i]; at[i] = NULL;
224275
}
276+
225277
delete[]at; at = NULL;
226278
}
279+
227280
EXTERN_API void hash_compress_64_str(uchar* src, uchar* rst) {
281+
228282
uchar* mid = new uchar[128];
283+
229284
hash_compress_128_str(src, mid);
285+
230286
for (i32 i = 0; i < 64; ++i)
231287
rst[i] = (uchar)(calg::abs((i64)mix_2((i32)mid[i * 2], (i32)mid[i * 2 + 1])) % 255);
232288
}
289+
233290
EXTERN_API void hash_compress_32_str(uchar* src, uchar* rst) {
291+
234292
uchar* mid = new uchar[64];
293+
235294
hash_compress_64_str(src, mid);
295+
236296
for (i32 i = 0; i < 32; ++i)
237297
rst[i] = (uchar)(calg::abs((i64)mix_2((i32)mid[i * 2], (i32)mid[i * 2 + 1])) % 255);
238298
}
299+
239300
EXTERN_API void hash_compress_16_str(uchar* src, uchar* rst) {
301+
240302
uchar* mid = new uchar[32];
303+
241304
hash_compress_32_str(src, mid);
305+
242306
for (i32 i = 0; i < 16; ++i)
243307
rst[i] = (uchar)(calg::abs((i64)mix_2((i32)mid[i * 2], (i32)mid[i * 2 + 1])) % 255);
244308
}
309+
245310
EXTERN_API void hash_compress_8_str(uchar* src, uchar* rst) {
311+
246312
uchar* mid = new uchar[16];
313+
247314
hash_compress_16_str(src, mid);
315+
248316
for (i32 i = 0; i < 8; ++i)
249317
rst[i] = (uchar)(calg::abs((i64)mix_2((i32)mid[i * 2], (i32)mid[i * 2 + 1])) % 255);
250318
}
319+
251320
EXTERN_API void hash_compress_4_str(uchar* src, uchar* rst) {
321+
252322
uchar* mid = new uchar[8];
323+
253324
hash_compress_8_str(src, mid);
325+
254326
for (i32 i = 0; i < 4; ++i)
255327
rst[i] = (uchar)(calg::abs((i64)mix_2((i32)mid[i * 2], (i32)mid[i * 2 + 1])) % 255);
256328
}
329+
257330
EXTERN_API int hash_file(uchar* fileName, int type) {
331+
258332
//TODO: 文件哈希
259333

260334
return 1;

Common.Algorithm/Hash/Hash.h

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,47 @@
22
#include "../Math/Math.h"
33

44
namespace calg {
5+
56
EXTERN_ALL const i32 hash_length = 2048;
7+
68
EXTERN_ALL const i32 hash_block_length = 128;
79

8-
EXTERN_ALL int extern_test_getnum();
10+
11+
912
inline bool cmp_a(i32 a, i32 b);
13+
1014
inline bool cmp_b(i32 a, i32 b);
15+
1116
inline i32 mix_2(i32 a, i32 b);
17+
1218
inline i32 mix_3(i32 a, i32 b, i32 c);
19+
1320
inline i32 mix_5(i32 a, i32 b, i32 c, i32 d, i32 e);
21+
1422
inline void exp_1(i32 x, i32* a, i32* b, i32* c);
23+
1524
inline void exp_1(i32 x, i32* a, i32* b, i32* c, i32* d);
25+
1626
inline long double spring_func(long double x);
27+
28+
29+
30+
EXTERN_ALL int extern_test_getnum();
31+
1732
EXTERN_ALL void hash_str(uchar* src, uchar* rst, int length);
33+
1834
EXTERN_ALL void hash_compress_128_str(uchar* src, uchar* rst);
35+
1936
EXTERN_ALL void hash_compress_64_str(uchar* src, uchar* rst);
37+
2038
EXTERN_ALL void hash_compress_32_str(uchar* src, uchar* rst);
39+
2140
EXTERN_ALL void hash_compress_16_str(uchar* src, uchar* rst);
41+
2242
EXTERN_ALL void hash_compress_8_str(uchar* src, uchar* rst);
43+
2344
EXTERN_ALL void hash_compress_4_str(uchar* src, uchar* rst);
45+
2446
EXTERN_ALL int hash_file(uchar* fileName, int type);
47+
2548
}

0 commit comments

Comments
 (0)