佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 719|回复: 9

第一期编程比赛 [已结束]

[复制链接]
发表于 14-3-2019 04:29 PM | 显示全部楼层 |阅读模式
活动类型:
线上活动
开始时间:
14-3-2019 12:00 PM 至 28-3-2019 12:00 PM 商定
活动地点:
软件工程
性别:
不限
已报名人数:
2
剩余名额:
3 人
报名截止:
28-3-2019 12:00 PM
本帖最后由 褐眼睛 于 28-3-2019 02:34 PM 编辑

压缩 /解压缩“指定图案”

举办人:褐眼睛

宗旨:引进欧洲的编程比赛点子,激发本国编程爱好者的技术。

目的:设计一个程序压缩 “指定图案”(ASCII Art),该程序也必须能够解压缩回同样图案(我会用FC来比对原始图案和解压缩后的图案),如果被压缩的图案在参赛者中为最小则将胜出。

你的成绩呈交的截至日期是本月28日之前,如果没有竞争者,奖金将会自动颁发给唯一的参赛者。
如果有多位参赛者的成绩是相同的,奖金将会被平分。


条件:
1)程序可以是任何平台开发出来的,但是不能使用第三方压缩/解压缩工具。
2)程序可以压缩 和 解压缩“指定图案”。
3)程序只需针对“指定图案”而设计出
4)程序里面不可非法含有属于“指定图案”的任何部分
5)程序大小与快慢不重要,但是必须能够完成压缩 /解压缩

赏金:50元 x 一份

参赛方式:
1)上传(并粘贴链接)你的已压缩的程序可执行文件(如EXE)上来
2)比赛结束后,请再出示你的源代码已方便核实

志在玩一玩,欢迎各位参与!

下载“指定图案”:http://kangfuzhe.org/forum.php?m ... DkyfDIwNzM5fDI5MjIw
(如果你打开CARI.txt,你会发现“指定图案”是由许多符号拼成的黑马)



已通过 (2 人)

  留言 申请时间
phpwebcoder

016-5542106 alvin yew

25-3-2019 10:13 AM
nsda

沒有玩過 多多指教!

14-3-2019 04:41 PM
回复

使用道具 举报


ADVERTISEMENT

发表于 15-3-2019 12:36 PM | 显示全部楼层
50大元 无语了

点评

这次比赛旨在激发编程爱好者的兴趣,以后有机会与人联办再考虑提高奖金。谢谢你的意见。  发表于 15-3-2019 07:26 PM
回复

使用道具 举报

发表于 15-3-2019 04:51 PM | 显示全部楼层
本帖最后由 martinng 于 15-3-2019 04:56 PM 编辑

这个利用LZW 算法,已经可以得到2696 bytes。这个2696是来自1348x2。因为LZW产生的table size是1478个,就是mapping index 时需要用16 bit word。

我也计算过,共有325个少于256 的index。如果有办法分辨16 bit 和8 bit的index,那么最终结果就是 2696 - 325 = 2371。就可以打赢C#了。我还在想着如何分辨,然后写 解码器。LZW 编码容易,解码就麻烦点。
P/S:winrar 用最best的ratio,是2392 bytes,而且人家还有固定档头。所以更加厉害。应该是用GZip的Deflate algorithm。加强版LZW - LZ77,shifting填补空档bits(滑窗法sliding window)

评分

参与人数 1积分 +20 收起 理由
褐眼睛 + 20 谢谢分享

查看全部评分

回复

使用道具 举报

发表于 16-3-2019 04:10 AM | 显示全部楼层
LZW with dynamic code len (8 ~ 12 bits),最好成绩是:2481 bytes。还是打不赢 IO.Compress的2423(可能是algorithm比 LZW 更好好吧)
回复

使用道具 举报

发表于 18-3-2019 01:13 AM | 显示全部楼层
我突然发现有可能得到更好的成绩!就是别2481 bytes还少。还是LZW,由于table size一开始就是256了(要装256个单个ASCII字元)。不如先分析全部出现过的单个ASCII字元,应该是11个(这个楼主已经找出来了)。那么table size就只是11而已,接下来增加的字串,都可以利用12~256 = 244个。之前第一个字串就是256,必须用9 bits code length,但现在可以在压缩过程前端大量使用8bit code length,那么肯定可以得到比2481 更好的成绩。但是否可以打败c#,就要试过才知。

点评

期待你的参赛作品唷!  发表于 18-3-2019 11:44 AM
回复

使用道具 举报

 楼主| 发表于 20-3-2019 11:34 AM | 显示全部楼层
02_avatar_small.jpg nsda
沒有玩過 多多指教!
加油!只要尽力了就好了。

评分

参与人数 1人气 +5 收起 理由
nsda + 5 原创内容

查看全部评分

回复

使用道具 举报

Follow Us
发表于 28-3-2019 06:32 AM | 显示全部楼层
本帖最后由 nsda 于 28-3-2019 06:34 AM 编辑

12點我不在 先在這裡更新 我這個是投降帖:
一開始用自己想的方法壓縮 不過“壓縮”之後反而更長了

之後我都在嘗試LZW 網上有很多例子 基本上我也是用現成python例子 再把原本256字節的字典 改成根據martinng大大提到的使用針對“指點圖案”的11個字字典(其實11個字字典算作弊嗎?) 似乎有把file size縮短一些 幾十bytes

不過我最後做不到decompress

最大原因是LZW壓縮後是拿到list of integer,而大過256的integer不能轉換為bytes,網上看到一些建議是說要pad成9個bits,不過一些數字需要到11個bits 其實這點我不懂怎樣解決

反正最後是把他們串起來了 然後寫進binary檔案看file size爽一下 比較一下256 VS 11字的字典

不過decompress時卻無法把整串的它們還原成bytes by bytes 其實花了很多時間在這裡的 最後還是不成

反正代碼也是網上抄來的 就不放上來獻醜了

無論如何 還是謝謝褐眼睛大大搞這個活動
一直以來用現成的東西太多了 唯有在這個活動才懂原來最不起眼的每一bit其實都那麼重要

评分

参与人数 1积分 +100 收起 理由
褐眼睛 + 100 谢谢分享

查看全部评分

回复

使用道具 举报

发表于 28-3-2019 04:49 PM | 显示全部楼层
不好意思樓主忘了補充 看到你有更新賞金那部分

截止時間好像已經過了 我估計結果是“成績相同”?

無論如何 我想說的是我這裡先自動棄權獎金(如果有) 因為成品沒弄出來 希望你還會有其他活動 也希望高手不要潛水 多教導後輩
回复

使用道具 举报


ADVERTISEMENT

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 29-3-2024 04:18 AM , Processed in 0.077732 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表