您的任务是读取包含手写数字的图像,识别并打印出该数字。
输入: 28*28灰度图像,以从0到255的784个纯文本数字序列,用空格分隔.0表示白色,255表示黑色。
输出:公认的数字。
评分:我将测试您的程序与1000张来自MNIST数据库培训集的图像(转换为ASCII格式)。我已经选择了图片(随机),但不会公布名单。测试必须在1小时内完成,并将确定n -正确答案的数量。
n必须至少是200,你的程序才有资格。如果您的源代码的大小是s,那么您的分数将被计算为s * (1200 - n) / 1000。最低分获胜。
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 18 18 18 126 136 175 26 166 255 247 127 0 0 0 0 0 0 0 0 0 0 0 0 30 36 94 154 170 253 253 253 253 253 225 172 253 242 195 64 0 0 0 0 0 0 0 0 0 0 0 49 238 253 253 253 253 253 253 253 253 251 93 82 82 56 39 0 0 0 0 0 0 0 0 0 0 0 0 18 219 253 253 253 253 253 198 182 247 241 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 80 156 107 253 253 205 11 0 43 154 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 1 154 253 90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 139 253 190 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 190 253 70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35 241 225 160 108 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 240 253 253 119 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 45 186 253 253 150 27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 93 252 253 187 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 249 253 249 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46 130 183 253 253 207 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39 148 229 253 253 253 250 182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 114 221 253 253 253 253 201 78 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 66 213 253 253 253 253 198 81 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 171 219 253 253 253 253 195 80 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 55 172 226 253 253 253 253 244 133 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 136 253 253 253 212 135 132 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0顺便说一句,如果您将这一行放在输入的前面:
P2 28 28 255您将获得一个有效的图像文件的pgm格式,与倒置/否定的颜色。
这就是用正确的颜色看上去的样子:

5No.| Name | Language | Alg | Ver | n | s | Score
----------------------------------------------------------------
1 | Peter Taylor | GolfScript | 6D | v2 | 567 | 101 | 63.933
2 | Peter Taylor | GolfScript | 3x3 | v1 | 414 | 207 | 162.702发布于 2014-05-20 16:59:10
这是与我之前的GolfScript答案完全不同的方法,因此将它作为单独的答案在v1上发布比编辑另一个答案并生成v2更有意义。
~]:B;569'!EM,R.==|%NL2+^=1'{{32-}%95{base}:^~\^}:&~2/{~B=<}%2^10'#]8Y,;KiZfnnRsDzPsvQ!%4C&..z,g,$m'&=~]:B;
[30 183 21 378 31 381 7 461 113 543 15 568]
2/{~B=<}%2base
7060456576664262556515119565486100005262700292623582181233639882 10base
=原始问题是784维空间中点的分类.一种标准的方法是维数约简:确定一小部分维数,它提供了足够的区分能力来进行分类。我评估了每个维度和每个可能的阈值,以确定18对(维度,阈值范围)看起来很有前途。然后,我选择了每个阈值范围的中心,并评估了这18对的6个元素子集。最后,对最佳6维投影的各维阈值进行了优化,使其精度从56.3%提高到56.6%。
因为投影分为6个维度,而且对于每个维度,我应用了一个简单的阈值,所以最终的查找表只需要64个元素。它似乎不是特别可压缩,所以主要的高尔夫是基础-转换两个查找表(尺寸和阈值的列表;半空间矢量到数字地图),并共享基本转换代码。
发布于 2014-05-20 11:47:49
~]28/10:?/{zip?/{[]*0-!!}/}%2{base}:^~'"yN(YZ5B 7k{&w,M`f>wMb>}F2A#.{E6T9kNP_s 3Q?V`;Z\'C-z*kA5M@?l=^3ASH/@*@HeI@A<^)YN_bDI^hgD>jI"OUWiGct%7/U($*;h*<"r@xdTz6x~,/M:gT|\\:#cII8[lBr<%0r&y4'{32-}%95^?^2/{))*~}%=或者概括地说,
~]28/10:?/{zip?/{[]*0-!!}/}%2{base}:^~'MAGIC STRING'{32-}%95^?^2/{))*~}%=我在高层的做法是:
t1,那么将其设置为1;否则设置为0。t2,则将组得分为1,否则为0。t1和t2的大多数选择保留在表的50%到63%之间,作为“不关心”值,这些值可以与相邻值相结合以增加运行长度;我的v1表中的平均运行长度为3.6)。结果表明,设置t1=t2=0虽然不是最优的,但在精度上与t1和t2的最佳值相差不远;在表可压缩性方面非常好;并且允许我将这两个阈值操作组合成[]*0-!! (平面2D数组到1D;删除0s;检查它是否为空)。
查找表为给定的组分数向量提供了最有可能的候选值。可以通过识别可以更改的表条目来提高分数,使表的改进可压缩性超过降低的准确性。
https://codegolf.stackexchange.com/questions/28207
复制相似问题