From 918fa6c94b9a70fdc7810f52850b07dca9f3d8d0 Mon Sep 17 00:00:00 2001 From: Fan Jiang Date: Fri, 6 Nov 2020 23:38:08 -0500 Subject: [PATCH 1/4] Create writeup.md --- players/ProfFan/writeup.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 players/ProfFan/writeup.md diff --git a/players/ProfFan/writeup.md b/players/ProfFan/writeup.md new file mode 100644 index 0000000..a5f2e03 --- /dev/null +++ b/players/ProfFan/writeup.md @@ -0,0 +1,9 @@ +今年实在太忙,只做了一题 + +# 证验码 + +注意到题目给的是 BMP 格式,显然是为了保存图片的一些统计特征。继续审代码,发现随机数均为真随机,故这个方向没有价值。众所周知字体渲染是有 Anti-aliasing 的,所以每个字都有独特的灰度分布。 +故我们可以计算每张图片的灰度分布,再加上预计算每个单独字符的灰度分布,得到直方图,在直方图上做优化即可得到验证码。 + +注意此处应当使用 L1 而不是 L2 优化,因为16个字符远少于 26*2+10,结果应当是稀疏的。本题用 L2 也可以得到解,但是如果增加干扰线条的密度,L2 应该会失败。 + From 4a6e03e0460a26fd400560340de30c946b98cd53 Mon Sep 17 00:00:00 2001 From: Fan Jiang Date: Fri, 6 Nov 2020 23:41:45 -0500 Subject: [PATCH 2/4] Add code --- players/ProfFan/solver_files/solver_5_1.png | Bin 0 -> 65598 bytes players/ProfFan/solver_files/solver_5_1.svg | 562 ++ players/ProfFan/solver_files/solver_6_0.png | Bin 0 -> 56616 bytes players/ProfFan/solver_files/solver_6_0.svg | 7442 +++++++++++++++++++ players/ProfFan/writeup.md | 469 +- 5 files changed, 8472 insertions(+), 1 deletion(-) create mode 100644 players/ProfFan/solver_files/solver_5_1.png create mode 100644 players/ProfFan/solver_files/solver_5_1.svg create mode 100644 players/ProfFan/solver_files/solver_6_0.png create mode 100644 players/ProfFan/solver_files/solver_6_0.svg diff --git a/players/ProfFan/solver_files/solver_5_1.png b/players/ProfFan/solver_files/solver_5_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9b291e28e421bff32789b9ee013771e186ed3e0b GIT binary patch literal 65598 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 PV8E9gjJ#z}jo$np+f4r% literal 0 HcmV?d00001 diff --git a/players/ProfFan/solver_files/solver_5_1.svg b/players/ProfFan/solver_files/solver_5_1.svg new file mode 100644 index 0000000..186a459 --- /dev/null +++ b/players/ProfFan/solver_files/solver_5_1.svg @@ -0,0 +1,562 @@ + + + + + + + + + 2020-11-03T00:20:11.701038 + image/svg+xml + + + Matplotlib v3.3.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/players/ProfFan/solver_files/solver_6_0.png b/players/ProfFan/solver_files/solver_6_0.png new file mode 100644 index 0000000000000000000000000000000000000000..6e5ae9c3be664ccf27450e42c335c156f5e4b929 GIT binary patch literal 56616 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 QLBP*zc{RB*8Pkvd3m_4&*Z=?k literal 0 HcmV?d00001 diff --git a/players/ProfFan/solver_files/solver_6_0.svg b/players/ProfFan/solver_files/solver_6_0.svg new file mode 100644 index 0000000..f594ee7 --- /dev/null +++ b/players/ProfFan/solver_files/solver_6_0.svg @@ -0,0 +1,7442 @@ + + + + + + + + + 2020-11-03T00:20:18.711238 + image/svg+xml + + + Matplotlib v3.3.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/players/ProfFan/writeup.md b/players/ProfFan/writeup.md index a5f2e03..becff46 100644 --- a/players/ProfFan/writeup.md +++ b/players/ProfFan/writeup.md @@ -1,4 +1,4 @@ -今年实在太忙,只做了一题 +今年实在太忙,只做了一题orz # 证验码 @@ -7,3 +7,470 @@ 注意此处应当使用 L1 而不是 L2 优化,因为16个字符远少于 26*2+10,结果应当是稀疏的。本题用 L2 也可以得到解,但是如果增加干扰线条的密度,L2 应该会失败。 +# 代码 + +```python +%matplotlib inline + +import matplotlib.pyplot as plt +import numpy as np +import random, string +``` + + +```python +import shuffle +``` + + +```python +# !wget https://github.com/adobe-fonts/source-code-pro/raw/release/TTF/SourceCodePro-Light.ttf +``` + + +```python +alphabet = sorted(string.digits + string.ascii_letters) +#code = "".join([random.choice(alphabet) for _ in range(16)]) +code = "01234567890ABcde" +print("Code:", code) +``` + + Code: 01234567890ABcde + + + +```python +original = shuffle.generate_captcha(code, shuffle_mode=False) +shuffled = shuffle.generate_captcha(code, shuffle_mode=True) +``` + + +```python +plt.subplot(211) +plt.imshow(original) +plt.subplot(212) +plt.imshow(shuffled) +``` + + + + + + + + + +![svg](solver_files/solver_5_1.svg) + + + +```python +fig, axs = plt.subplots(2, 10, figsize=(20,6)) +for i in range(10): + test_onealpha = np.array(shuffle.img_generate("{}".format(i))) + axs[0][i].imshow(test_onealpha) + counts = np.bincount(test_onealpha[:, :, 0].flatten(),minlength=255) + axs[1][i].plot(counts) + axs[1][i].set_yscale('log') +``` + + +![svg](solver_files/solver_6_0.svg) + + + +```python +counts_full = [] +for k in range(3): + counts = np.bincount(np.array(shuffled)[:, :, 0].flatten(),minlength=256) + counts[255] = 0 + counts_full.append(counts) +counts_full = np.hstack(counts_full) +print(counts_full.shape) +``` + + (768,) + + + +```python +# %pip install cvxpy +``` + + +```python +import cvxpy as cvx +``` + + +```python +bases = [] + +for i in range(len(alphabet)): + bases_rgb = [] + for k in range(3): + test_onealpha = np.array(shuffle.img_generate("{}".format(alphabet[i]))) + counts = np.bincount(test_onealpha[:, :, k].flatten(),minlength=256) + counts[255] = 0 + bases_rgb.append(counts) + bases.append(np.hstack(bases_rgb)) + +A = np.vstack(bases).T +print(A.shape) +print(A.T) +``` + + (768, 62) + [[224 5 2 ... 3 5 0] + [134 1 1 ... 0 2 0] + [171 2 1 ... 3 4 0] + ... + [ 94 1 2 ... 2 6 0] + [118 4 3 ... 2 6 0] + [195 2 2 ... 1 3 0]] + /usr/lib/python3.8/site-packages/ipykernel/ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above. + and should_run_async(code) + + + +```python +import PIL +shuffled = PIL.Image.open("./captcha_shuffled.bmp") +# Solve actual problem +counts_full = [] +for k in range(3): + counts = np.bincount(np.array(shuffled)[:, :, 0].flatten(),minlength=256) + counts[255] = 0 + counts_full.append(counts) +counts_full = np.hstack(counts_full) +print(counts_full.shape) +``` + + (768,) + /usr/lib/python3.8/site-packages/ipykernel/ipkernel.py:287: DeprecationWarning: `should_run_async` will not call `transform_cell` automatically in the future. Please pass the result to `transformed_cell` argument and any exception that happen during thetransform in `preprocessing_exc_tuple` in IPython 7.17 and above. + and should_run_async(code) + + + +```python +vx = cvx.Variable(len(alphabet)) +objective = cvx.Minimize(cvx.norm(A*vx - counts_full, 1)) +constraints = [vx >= 0] +prob = cvx.Problem(objective, constraints) +result = prob.solve(verbose=True) +``` + + + ECOS 2.0.7 - (C) embotech GmbH, Zurich Switzerland, 2012-15. Web: www.embotech.com/ECOS + + It pcost dcost gap pres dres k/t mu step sigma IR | BT + 0 -2.788e-13 +1.258e-12 +5e+05 8e-01 4e-01 1e+00 3e+02 --- --- 1 2 - | - - + 1 +4.640e+03 +4.675e+03 +2e+05 3e-01 1e-01 3e+01 1e+02 0.7401 2e-01 1 1 1 | 0 0 + 2 +5.846e+03 +5.861e+03 +9e+04 1e-01 4e-02 1e+01 6e+01 0.6585 8e-02 1 1 1 | 0 0 + 3 +5.968e+03 +5.970e+03 +1e+04 1e-02 3e-03 2e+00 6e+00 0.9494 6e-02 1 1 1 | 0 0 + 4 +6.080e+03 +6.080e+03 +3e+03 4e-03 1e-03 5e-01 2e+00 0.7566 6e-02 1 1 1 | 0 0 + 5 +6.151e+03 +6.152e+03 +2e+03 2e-03 6e-04 3e-01 1e+00 0.6536 5e-01 1 1 1 | 0 0 + 6 +6.193e+03 +6.193e+03 +9e+02 1e-03 3e-04 1e-01 5e-01 0.6015 1e-01 1 1 1 | 0 0 + 7 +6.198e+03 +6.198e+03 +8e+02 1e-03 3e-04 1e-01 5e-01 0.2129 7e-01 1 1 1 | 0 0 + 8 +6.216e+03 +6.216e+03 +6e+02 9e-04 2e-04 1e-01 3e-01 0.5360 4e-01 1 1 1 | 0 0 + 9 +6.230e+03 +6.230e+03 +3e+02 6e-04 1e-04 6e-02 2e-01 0.6585 4e-01 1 1 1 | 0 0 + 10 +6.244e+03 +6.244e+03 +2e+02 3e-04 5e-05 3e-02 1e-01 0.6652 2e-01 1 1 1 | 0 0 + 11 +6.249e+03 +6.249e+03 +1e+02 2e-04 3e-05 2e-02 7e-02 0.5025 4e-01 1 1 1 | 0 0 + 12 +6.255e+03 +6.255e+03 +6e+01 1e-04 2e-05 1e-02 4e-02 0.7639 3e-01 1 1 1 | 0 0 + 13 +6.259e+03 +6.259e+03 +3e+01 5e-05 7e-06 6e-03 2e-02 0.6280 1e-01 1 1 1 | 0 0 + 14 +6.261e+03 +6.261e+03 +1e+01 2e-05 3e-06 2e-03 7e-03 0.7859 2e-01 1 1 1 | 0 0 + 15 +6.262e+03 +6.262e+03 +4e+00 8e-06 1e-06 9e-04 2e-03 0.7343 1e-01 1 1 1 | 0 0 + 16 +6.263e+03 +6.263e+03 +8e-01 2e-06 2e-07 2e-04 5e-04 0.8474 6e-02 1 1 1 | 0 0 + 17 +6.263e+03 +6.263e+03 +3e-01 7e-07 9e-08 8e-05 2e-04 0.6258 6e-02 1 1 1 | 0 0 + 18 +6.263e+03 +6.263e+03 +4e-02 7e-08 1e-08 8e-06 2e-05 0.9127 2e-02 1 1 1 | 0 0 + 19 +6.263e+03 +6.263e+03 +2e-03 3e-09 4e-10 4e-07 1e-06 0.9579 2e-04 2 1 1 | 0 0 + 20 +6.263e+03 +6.263e+03 +2e-05 3e-11 5e-12 4e-09 1e-08 0.9890 1e-04 2 1 1 | 0 0 + + OPTIMAL (within feastol=3.4e-11, reltol=2.7e-09, abstol=1.7e-05). + Runtime: 0.048064 seconds. + + /home/fan/.local/lib/python3.8/site-packages/cvxpy/expressions/expression.py:550: UserWarning: + This use of ``*`` has resulted in matrix multiplication. + Using ``*`` for matrix multiplication has been deprecated since CVXPY 1.1. + Use ``*`` for matrix-scalar and vector-scalar multiplication. + Use ``@`` for matrix-matrix and matrix-vector multiplication. + Use ``multiply`` for elementwise multiplication. + + warnings.warn(__STAR_MATMUL_WARNING__, UserWarning) + + + +```python +print(*zip(alphabet, vx.value.round(0))) +``` + + ('0', 1.0) ('1', 0.0) ('2', -0.0) ('3', 0.0) ('4', -0.0) ('5', 1.0) ('6', 0.0) ('7', -0.0) ('8', 0.0) ('9', -0.0) ('A', 0.0) ('B', -0.0) ('C', -0.0) ('D', -0.0) ('E', 1.0) ('F', 0.0) ('G', -0.0) ('H', 1.0) ('I', -0.0) ('J', -0.0) ('K', 0.0) ('L', 1.0) ('M', -0.0) ('N', -0.0) ('O', 0.0) ('P', 1.0) ('Q', -0.0) ('R', -0.0) ('S', 1.0) ('T', -0.0) ('U', 0.0) ('V', 0.0) ('W', 1.0) ('X', 1.0) ('Y', 0.0) ('Z', 1.0) ('a', -0.0) ('b', 0.0) ('c', 0.0) ('d', 0.0) ('e', -0.0) ('f', -0.0) ('g', -0.0) ('h', -0.0) ('i', -0.0) ('j', -0.0) ('k', -0.0) ('l', 2.0) ('m', -0.0) ('n', -0.0) ('o', -0.0) ('p', -0.0) ('q', 0.0) ('r', -0.0) ('s', 1.0) ('t', -0.0) ('u', 1.0) ('v', 0.0) ('w', 1.0) ('x', 1.0) ('y', -0.0) ('z', -0.0) + + + +```python +print(A @ np.array([[2,2,2,2,2,2, 1,1,1,1]]).T - np.expand_dims(counts_full,axis=1)) +``` + + [[ 159] + [ 2] + [ 2] + [ 0] + [-109] + [ 0] + [ 4] + [ 3] + [ 2] + [ 1] + [ 4] + [ 5] + [ 1] + [ 0] + [ 0] + [ 1] + [ 4] + [ 3] + [ 0] + [ 1] + [ 0] + [ 1] + [ 2] + [ 1] + [ 1] + [ 1] + [ 3] + [ 3] + [ 0] + [ 0] + [ 1] + [ 1] + [ 0] + [ 2] + [ 0] + [ 5] + [ 1] + [ 2] + [ 1] + [ 1] + [ 1] + [ 1] + [ 0] + [ 1] + [ 0] + [ 0] + [ 2] + [ 0] + [ 0] + [ 1] + [ 1] + [ 2] + [ 1] + [ 2] + [ 0] + [ 1] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 1] + [ 1] + [ 0] + [ 1] + [ 1] + [ 0] + [ 0] + [ 1] + [ 2] + [ 2] + [ 2] + [ 1] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 1] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 1] + [ 1] + [ 0] + [ 0] + [ 0] + [ 1] + [ 2] + [ 1] + [ 0] + [ 0] + [ 0] + [ 1] + [ 1] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 1] + [ 0] + [ 0] + [ 0] + [ 0] + [ 1] + [ 0] + [ 1] + [ 1] + [ 0] + [ 0] + [-238] + [ 0] + [ 1] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 1] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 1] + [ 0] + [ 0] + [ 1] + [ 0] + [ 1] + [-147] + [ 0] + [ 0] + [ 1] + [-204] + [ 1] + [ 2] + [ 1] + [ 0] + [ 2] + [ 1] + [ 0] + [ 0] + [ 0] + [ 0] + [ 1] + [ 2] + [ 2] + [ 1] + [ 1] + [ 1] + [ 0] + [ 1] + [ 0] + [ 1] + [ 1] + [ 2] + [ 4] + [-149] + [ 0] + [ 2] + [ 0] + [ 1] + [ 0] + [ 1] + [ 0] + [ 1] + [ 0] + [ 1] + [ 0] + [ 0] + [ 0] + [ 1] + [ 1] + [ 0] + [ 1] + [ 0] + [ 2] + [ 2] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 1] + [ 2] + [ 1] + [ 0] + [ 1] + [ 2] + [ 0] + [ 0] + [-323] + [-154] + [ 1] + [ 0] + [ 0] + [ 0] + [ 1] + [ 2] + [ 0] + [ 1] + [ 0] + [ 0] + [ 0] + [-338] + [ 1] + [ 0] + [ 0] + [ 2] + [ 0] + [ 0] + [ 2] + [ 1] + [ 2] + [ 1] + [ 2] + [ 2] + [ 1] + [ 2] + [ 1] + [ 0] + [-215] + [ 0] + [ 0] + [ 0] + [ 0] + [ 0] + [ 2] + [ 2] + [ 1] + [ -94] + [ 1] + [ 0] + [ 1] + [ 1] + [ 0] + [ 2] + [ 1] + [ 0] + [ 4] + [ 0]] + + + +```python + +``` From e9ef12bd74fca91dc296888136bb5386c023c9d1 Mon Sep 17 00:00:00 2001 From: Fan Jiang Date: Fri, 6 Nov 2020 23:43:03 -0500 Subject: [PATCH 3/4] Remove unnecessary files --- players/ProfFan/writeup.md | 268 ------------------------------------- 1 file changed, 268 deletions(-) diff --git a/players/ProfFan/writeup.md b/players/ProfFan/writeup.md index becff46..ee13dbb 100644 --- a/players/ProfFan/writeup.md +++ b/players/ProfFan/writeup.md @@ -206,271 +206,3 @@ print(*zip(alphabet, vx.value.round(0))) ('0', 1.0) ('1', 0.0) ('2', -0.0) ('3', 0.0) ('4', -0.0) ('5', 1.0) ('6', 0.0) ('7', -0.0) ('8', 0.0) ('9', -0.0) ('A', 0.0) ('B', -0.0) ('C', -0.0) ('D', -0.0) ('E', 1.0) ('F', 0.0) ('G', -0.0) ('H', 1.0) ('I', -0.0) ('J', -0.0) ('K', 0.0) ('L', 1.0) ('M', -0.0) ('N', -0.0) ('O', 0.0) ('P', 1.0) ('Q', -0.0) ('R', -0.0) ('S', 1.0) ('T', -0.0) ('U', 0.0) ('V', 0.0) ('W', 1.0) ('X', 1.0) ('Y', 0.0) ('Z', 1.0) ('a', -0.0) ('b', 0.0) ('c', 0.0) ('d', 0.0) ('e', -0.0) ('f', -0.0) ('g', -0.0) ('h', -0.0) ('i', -0.0) ('j', -0.0) ('k', -0.0) ('l', 2.0) ('m', -0.0) ('n', -0.0) ('o', -0.0) ('p', -0.0) ('q', 0.0) ('r', -0.0) ('s', 1.0) ('t', -0.0) ('u', 1.0) ('v', 0.0) ('w', 1.0) ('x', 1.0) ('y', -0.0) ('z', -0.0) - - -```python -print(A @ np.array([[2,2,2,2,2,2, 1,1,1,1]]).T - np.expand_dims(counts_full,axis=1)) -``` - - [[ 159] - [ 2] - [ 2] - [ 0] - [-109] - [ 0] - [ 4] - [ 3] - [ 2] - [ 1] - [ 4] - [ 5] - [ 1] - [ 0] - [ 0] - [ 1] - [ 4] - [ 3] - [ 0] - [ 1] - [ 0] - [ 1] - [ 2] - [ 1] - [ 1] - [ 1] - [ 3] - [ 3] - [ 0] - [ 0] - [ 1] - [ 1] - [ 0] - [ 2] - [ 0] - [ 5] - [ 1] - [ 2] - [ 1] - [ 1] - [ 1] - [ 1] - [ 0] - [ 1] - [ 0] - [ 0] - [ 2] - [ 0] - [ 0] - [ 1] - [ 1] - [ 2] - [ 1] - [ 2] - [ 0] - [ 1] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 1] - [ 1] - [ 0] - [ 1] - [ 1] - [ 0] - [ 0] - [ 1] - [ 2] - [ 2] - [ 2] - [ 1] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 1] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 1] - [ 1] - [ 0] - [ 0] - [ 0] - [ 1] - [ 2] - [ 1] - [ 0] - [ 0] - [ 0] - [ 1] - [ 1] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 1] - [ 0] - [ 0] - [ 0] - [ 0] - [ 1] - [ 0] - [ 1] - [ 1] - [ 0] - [ 0] - [-238] - [ 0] - [ 1] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 1] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 1] - [ 0] - [ 0] - [ 1] - [ 0] - [ 1] - [-147] - [ 0] - [ 0] - [ 1] - [-204] - [ 1] - [ 2] - [ 1] - [ 0] - [ 2] - [ 1] - [ 0] - [ 0] - [ 0] - [ 0] - [ 1] - [ 2] - [ 2] - [ 1] - [ 1] - [ 1] - [ 0] - [ 1] - [ 0] - [ 1] - [ 1] - [ 2] - [ 4] - [-149] - [ 0] - [ 2] - [ 0] - [ 1] - [ 0] - [ 1] - [ 0] - [ 1] - [ 0] - [ 1] - [ 0] - [ 0] - [ 0] - [ 1] - [ 1] - [ 0] - [ 1] - [ 0] - [ 2] - [ 2] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 1] - [ 2] - [ 1] - [ 0] - [ 1] - [ 2] - [ 0] - [ 0] - [-323] - [-154] - [ 1] - [ 0] - [ 0] - [ 0] - [ 1] - [ 2] - [ 0] - [ 1] - [ 0] - [ 0] - [ 0] - [-338] - [ 1] - [ 0] - [ 0] - [ 2] - [ 0] - [ 0] - [ 2] - [ 1] - [ 2] - [ 1] - [ 2] - [ 2] - [ 1] - [ 2] - [ 1] - [ 0] - [-215] - [ 0] - [ 0] - [ 0] - [ 0] - [ 0] - [ 2] - [ 2] - [ 1] - [ -94] - [ 1] - [ 0] - [ 1] - [ 1] - [ 0] - [ 2] - [ 1] - [ 0] - [ 4] - [ 0]] - - - -```python - -``` From a6445a765e9613d19471319b76d385e69af2ad1f Mon Sep 17 00:00:00 2001 From: Fan Jiang Date: Fri, 6 Nov 2020 23:45:31 -0500 Subject: [PATCH 4/4] update comments --- players/ProfFan/writeup.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/players/ProfFan/writeup.md b/players/ProfFan/writeup.md index ee13dbb..b5eb195 100644 --- a/players/ProfFan/writeup.md +++ b/players/ProfFan/writeup.md @@ -1,11 +1,13 @@ -今年实在太忙,只做了一题orz +今年肝 paper 实在太忙,只做了一题和自己研究相关的( + +顺便膜各位师傅 orz # 证验码 注意到题目给的是 BMP 格式,显然是为了保存图片的一些统计特征。继续审代码,发现随机数均为真随机,故这个方向没有价值。众所周知字体渲染是有 Anti-aliasing 的,所以每个字都有独特的灰度分布。 故我们可以计算每张图片的灰度分布,再加上预计算每个单独字符的灰度分布,得到直方图,在直方图上做优化即可得到验证码。 -注意此处应当使用 L1 而不是 L2 优化,因为16个字符远少于 26*2+10,结果应当是稀疏的。本题用 L2 也可以得到解,但是如果增加干扰线条的密度,L2 应该会失败。 +注意此处应当使用 L1 而不是 L2 (最小二乘)优化,因为16个字符远少于 26*2+10,结果应当是稀疏的。本题用 L2 也可以得到解,但是如果增加干扰线条的密度,L2 应该会失败。 # 代码