短码之美

当前位置:首页 > 网络编程 > 编程语言与程序设计 > 短码之美

出版社:人民邮电出版社
出版日期:2011-1-8
ISBN:9787115240446
作者:Ozy (著), やねうらお (監修)
页数:338页

作者简介

样章试读:
http://www.china-pub.com/computers/common/mianfeisd.asp?id=197616
本书主要介绍短码编程,首先介绍了短码编程的三要素:数据结构和算法、执行环境以及短码编程的精神。书中以北京大学的PKU Judge Online 在线评分系统为编程环境,选取了该系统中比较典型的问题,如海狸啃木头、旋转拼图、葡萄酒买卖,利用数据结构和算法的知识加以分析,最 后编程实现,并尝试使用各种编程语言,不断地将源代码缩短。同时还介绍并分析了一些钻安全漏洞的代码,旨在通过短码编程帮助程序员集中注意力,锻炼忍耐力,开拓视野。
本书适合所有对短码编程感兴趣的人。

书籍目录

第1章 入门
1
1.1 引言
2
1.1.1 什么是短码编程
2
1.1.2 短码编程的三要素
3
1.1.3 热情、聪明的短码编程者
4
1.1.4 短码编程者的传奇
4
1.2 战场:在线评分系统
4
1.2.1 什么是在线评分系统
4
1.2.2 世界各地的在线评分系统
4
1.2.3 PKU Judge Online
5
1.3 动手试试:短码编程的基础
6
1.3.1 编程环境
6
1.3.2 使用的编程语言和编译器
6
1.3.3 注册POJ账号
6
1.3.4 基本规则
7
1.3.5 微妙的规则
8
1.3.6 道德上的规则
8
1.4 热身
10
1.4.1 关于运行环境
10
1.4.2 首先从简单的加法运算开始
10
1.4.3 不简单加法运算
16
1.4.4 计算平均值
21
1.4.5 推出重叠的牌
24
1.4.6 开始模仿编程
28
1.4.7 热身结束
31
第2章 必读!绝妙技巧
33
2.1 精通规则
34
2.1.1 醉汉看守
34
2.1.2 阶段
43
2.1.3 连续数的和
49
2.2 Quick Sort Hack
55
2.2.1 快速排序
55
2.2.2 qsort函数
55
2.2.3 Hack风暴
56
2.2.4 挑战变态排序一
58
2.2.5 挑战变态排序二
65
2.2.6 永远的Hack
69
2.3 熟练运用库函数
69
2.3.1 方便的库函数
69
2.3.2 好用的strtol函数
74
2.3.3 strtol与itoa天生一对
77
2.3.4 转换乐园
82
2.3.5 海狸啃木头
84
2.3.6 系绳
87
2.4 精减1字节的靠山
91
2.4.1 好用的~运算符
91
2.4.2 好用的%运算符
94
2.4.3 分组建立长期政权
99
2.4.4 ISBN码
106
2.4.5 非常活跃的数学问题
110
2.5 按位运算的超级魔法
114
2.5.1 超级魔法的二叉树
114
2.5.2 超级魔法的密码
119
2.5.3 超级魔法的极致
123
2.6 精通指针
129
2.6.1 短码编程中的指针
129
2.6.2 旋转拼图的智力游戏
130
2.6.3 超长加法
135
2.6.4 指针和数组的密切关系
138
2.7 数学问题
142
2.7.1 不要依赖公式
142
2.7.2 越界(数列篇)
143
2.7.3 越界(排列组合篇)
146
2.7.4 与周期有关的问题
150
2.7.5 伪随机数的周期性
151
2.7.6 三个周期
153
2.7.7 斐波那契数列
158
2.8 活用算法
163
2.8.1 高速、节省内存是编写短码的关键
163
2.8.2 三角形
163
2.9 数字的新常识
171
2.9.1 关键在“三”
171
2.9.2 整理电话号码
176
2.10 字节的热情
184
2.10.1 附上答案
184
2.10.2 汉诺塔
184
第3章 短码编程研究
193
3.1 更高的编程技巧
194
3.1.1 开始
194
3.1.2 关于表示法
194
3.2 精简循环
194
3.2.1 精通之后就能成为顶尖的短码编程者
194
3.2.2 简单的例子
195
3.2.3 常用结构
197
3.2.4 短码编程的基本类型
197
3.2.5 重要的短码语法
199
3.2.6 取数字游戏
200
3.2.7 葡萄酒买卖
202
3.2.8 难解:精简多层循环
204
3.3 强大的扩展语法
208
3.3.1 对短码编程者有用的扩展语法
208
3.3.2 条件运算符
208
3.3.3 数字根
209
3.3.4 扩展左值
212
3.3.5 扩展关系运算符
213
3.4 宏能不能缩短代码
213
3.4.1 基于短码编程的宏
213
3.4.2 while语句的可能性
214
3.4.3 数组的可能性
217
3.5 神奇的main递归
219
3.5.1 main递归可以最大限度地缩短代码
219
3.5.2 从单纯循环到main递归
219
3.5.3 破解难题的main递归
220
3.5.4 基于递归算法的main递归
232
3.5.5 传说中的1145
233
3.5.6 小结
239
3.6 Quick Sort HackⅡ
240
3.6.1 征服二进制等于征服短码编程
240
3.6.2 缩短汇编代码
244
3.6.3 进一步缩短
248
3.7 作弊代码和安全性
251
3.8 挑战难题
254
3.8.1 短码编程的灵魂
254
3.8.2 组成最强阵容
254
第4章 语言对决
277
4.1 短码编程不限语言
278
4.1.1 各种程序设计语言
278
4.1.2 本章结构
278
4.2 Java与C
278
4.2.1 Java是有缺陷的程序设计语言
278
4.2.2 使用Java的地方
279
4.2.3 多精度时就交给Java
279
4.2.4 C语言仍然强大
285
4.3 Pascal与C
292
4.3.1 遇到麻烦的Pascal语言
292
4.3.2 用Pascal写出比C语言更短的代码
293
4.3.3 复利计算
293
4.4 C++与C
294
4.4.1 不经常使用的C++
294
4.4.2 基本技巧
295
4.4.3 检查顺序
296
4.4.4 G++扩展运算符与变态GCC源代码的对比
299
4.5 更多的挑战
306
4.5.1 成为一名真正的短码编程者
306
4.5.2 世界各地的短码编程者的活动
306
4.5.3 挑战Code Golf
307
4.5.4 尝试用所有语言编写短码
312
第5章 磨练自己
313
5.1 致亲爱的读者
314
5.1.1 向短码编程者学习
314
5.1.2 源代码的可读性
314
5.1.3 希望写出错误少的程序
315
5.1.4 更大程度地提高
316
5.1.5 有人情味、富有魅力
317
5.2 珍贵的参考资料
318
5.2.1 珍贵的书籍
318
5.2.2 网站介绍
323
5.3 精明强干的短码编程者
325
5.3.1 致谢
325
5.3.2 短码高手们(敬称略,按字母顺序)
325
5.4 最后
327
附录
331
A.1 问题一览
332
A.2 ASCII码表
337
A.3 运算符的优先级与结合规则
338

编辑推荐

《短码之美:编程达人的心得技法》:短码编程的尖峰时刻编程数率的极致追求北大POJAMC经典题目解析缩短代码的过程。是头脑风暴的过程。要想写出优秀的短码程序。除了要掌握数据结构.算法、运行环境方面的丰富知识以外,还要坚信无论什么样的源代码都能缩短,就算只能缩短1字节,也要为之不懈地努力。在这个过程中集中注意力,磨砺意志力,提升思考力。程序人人会写,各有巧妙不同。《短码之美:编程达人的心得技法》以北京大学的在线评分系统为运行环境,给出了非常多的例子,足以让读者体会到如何写短码。作者除了详细介绍解题思路以外,还向读者传授不同程序语言的语法以及深入应用方面的知识,使读者在缩短源代码的过程中对程序设计语言.函数库和编程环境有更深入的了解。如果你想提升程序设计水平,那么《短码之美:编程达人的心得技法》恰好适合你阅读。

内容概要

Ozy 本名岡田佑一,是出生于日本大阪的一位短码高手。他花费相当长的时间提升短码编程技术,进而将其发展成一种技能,曾获得程序设计大赛的冠军。他开办过程序设计方面的培训班,目前致力于数学教育和程序设计师的培养工作。

章节摘录

插图:1.1.3 热情、聪明的短码编程者将源代码编写到最短的人,称为短码编程者(shortCoder)。即使只能缩短1字节,短码编程者也会为此而努力战斗。当战斗结束后,短码编程者们会相互间讨论缩短源代码过程中的想法,交换自己发现的黑客技巧,并会分享知识,然后继续迎接下一个新的挑战。虽然大多数短码编程者都拥有明晰的头脑,但是通常一个人是不可能完成短码编程的,在与其他短码编程者切磋沟通的过程中,也就生成了最短源代码,同时也使自己得到了锻炼。1.1.4 短码编程者的传奇程序员是一边参照设计文档,一边从网上和参考书上得到所需的信息来编写程序的。然而通常设计文档本身也会有不完整的时候。就算它是完整的,可能也会在库文件的实现过程中出现问题。当然,也不能保证网上内容或者是参考书都是100%正确,大多数情况下都有可能包含少量的错误。这时可以请教有经验的程序员去解决问题,去互联网上检索也肯定能找到相应源代码的例子。但是,不是所有的问题都可以这样解决的。有时,会碰到不能轻易判断出对错的问题,这时候应该怎么办呢?本书通过热情、快乐、认真地描述短码编程者勇敢挑战似乎不可能完成的任务的故事,揭示出如何掌握更高的编程技巧、如何探索未知的问题,以期培养编程者的热情。

图书封面


 短码之美下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计7条)

  •     还没读过这本书(截至2011年1月31日22点12分),考虑到这是同类书籍第一本,先评个“推荐”。这本书让我想起了"Code Golf"这个以短码竞赛出名的网站。这里的训练对我的编码生涯产生了深远的影响。现在我坚定不移地认为,大多数的代码应该先删去一半,剩下的部分中再删去一半,这时你就会发现原来的代码变成了一件优雅精致的作品,灵动无匹,御风而行。
  •     仅举第一章的一例:PKU 3062 Celebrity jeopardyhttp://poj.org/problem?id=3062做法就是输入什么输出什么.书中给的最短代码是main(){for(;gets();)puts();}GCC提交才能AC之后还有main函数递归,cmp函数写成字符串形式...很多人批评代码不易维护等等,可以在这明确说明,很多代码都是"语法错误"甚至是"语义错误"的代码,但是它是最短的可AC代码.这是基于编译器工作原理,测试数据漏洞,等多方面的钻研...如果您想从200B的代码中学到软件工程的知识...只能说,您看错书了...最近群里的众神把这本奇葩书籍批得体无完肤...仅限娱乐...以及封皮上的ACM拼错了...
  •     如果你学习短码并付诸实践,那么写出来的东西很快就会变得,连自己都读不懂了。代码越短,以后阅读代码所耗费的时间就越长——短就是长。这些短码是一种技巧,但不应该推崇。短码的写法应该留给编译器、混淆器和代码优化器去做,而不是给人看

精彩短评 (总计47条)

  •     @追忆似风 啊!囧,强大 Orz 这个都能成功的- -|| 是用了allocate register的惯用法吧。
  •     只是看了china-pub的第3章试读的开头一点。
  •     极其蛋疼。。。不过有些技巧很有意思
  •     仅仅因为是新书而想去看,貌似的确没啥特别原因的出发点。
  •     目前来说!价值不大了!硬件跟上来了!当今软件编程重在编码可维护,可读,可扩展等!短码适合以前的嵌入式吧
  •     估计很多人会问写短码有什么意义,没什么意义,只是geek的乐趣而已
  •     ACM高人的作品,他的pku账号是shortcoder
  •     就有那么几个例子还不错,其他都太多依赖未定义行为
  •     很好啊!很有用啊,不过有些难度
  •     不是Geeker就别看了
  •     真心不适合初学者啊...但是追求高效的代码是每个编程人员都梦想的!
  •     @洛垂天之云
    呵呵,仔细看看咯~, gets(); puts(); 都没有传参数的
  •     总体不错,书内容很好,但是书脊有点破损,美中不足~
  •     terrible coding style ... orz
  •     艹,跟我大Perl比?你们这是自寻死路!
  •       仅举第一章的一例:
      PKU 3062 Celebrity jeopardy
      http://poj.org/problem?id=3062
      做法就是输入什么输出什么.
      书中给的最短代码是
      main(){for(;gets();)puts();}
      GCC提交才能AC
      
      之后还有main函数递归,cmp函数写成字符串形式...
      
      很多人批评代码不易维护等等,可以在这明确说明,很多代码都是"语法错误"甚至是"语义错误"的代码,但是它是最短的可AC代码.这是基于编译器工作原理,测试数据漏洞,等多方面的钻研...
      
      如果您想从200B的代码中学到软件工程的知识...只能说,您看错书了...
      
      最近群里的众神把这本奇葩书籍批得体无完肤...仅限娱乐...以及封皮上的ACM拼错了...
  •     短码强迫症可以读读。
  •     其实自己手写也不过是这样的程序。 只是多些缩进换行。
  •     呵呵,还有cmp写成字符串~
    int s[] = {5, 4, 3, 2, 1};
    qsort(s, sizeof(s) / sizeof(s[0]), sizeof(s[0]), "YXZQQQ\x8b\x00+\x02\xc3");
    很好玩的~
  •     這時候就他媽的應該上個ARM9的CPU,我叫你取地址,我取你媽……
  •     很不错的一本书
  •     大概翻过,不时候我,因为,我不是变态- -
  •     短码是尴尬的存在。
  •     看过这里面的代码后,再也不敢写【短码】了
  •     其实未读完,不过没时间读下去了,因为实在想不到“短码”的一个很有必要的理由,可能就只是种趣味吧。
  •     看了一点,感觉学软件工程的可以直接忽略了。刚学C/C++的同学可以翻下,学些小技巧,也是不错的。
  •     OIer们玩玩还不错,娱乐书。
  •     权当娱乐,不适用于产品
  •     @trort
    的确...28B已经成为绝版了~
  •      如果追求意义,就不要看这本书了,geek的娱乐你不懂
  •     如果你学习短码并付诸实践,那么写出来的东西很快就会变得,连自己都读不懂了。这些短码的写法应该留给编译器和代码优化器去做,而不是给人看。
  •     很少见的日本人写的计算机书,一看内容就能深深的体会到日本人细致到变态的特质。感觉这书看看开阔一下思路可以,实用价值不高。
  •     2012-03-19
  •     封面有重大错误,应该是poj acm
  •     POJ AMC是神马
  •     日本变态编码,just看看。可不敢实践哟。
  •     首先感谢这本书,医治好了我多年的极端短码强迫症,花几个小时去删减几个字母让我深深感觉到这是对生命的践踏,有这闲工夫可以多看几本厚厚的书
  •     pku居然还有这么水的题......
  •     这书我在书店翻了一下,只能说,这是纯粹的邪门歪道。当然了,作为娱乐还是不错的
  •     现在成RE了。。。
  •     look,邪教来了
  •     日本人写的代码还是有借鉴之处滴
  •     看了样章了. 译者还算合格, 当然在偶看来译的并不好. 这封面 ACM 写成 AMC 了? :D 瞧干了件什么事这是... 看在原作者的份上三星. 书店站读非预览部分, 样章果然是相对比较无用的部分, 方法实际是相当巧妙的. see also https://github.com/jed/140bytes/wiki/Byte-saving-techniques
  •     偶然在广州图书馆看到这本书,看了前边几章觉得短码太变态了,以前在做一些ACM题目时确实用到一些技巧,但是没有作者说的那么变态。当然作者要倡导的想法是在code过程追求极致,而不是真的在生产环境放这么难懂的代码,不过后边找了盗版的pdf看,没什么感觉,也略显枯燥。
  •     把别人坑过几次之后就会知道写别人能懂的代码多重要。
  •     很变态,很用心在做。
  •     Coding Fun类型的书,有趣。终于读完了。
 

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024