短码之美

短码之美

作者:Ozy (著), やねうらお (監修)

出版社:人民邮电出版社

出版年:2011-1-8

评分:6.7

ISBN:9787115240446

所属分类:行业好书

书刊介绍

内容简介

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

作品目录

第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
· · · · · ·

作者简介

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

精彩摘录

如果目光短浅地想“只要做这些就可以考上OO学校”,只为单纯的目的而单纯地学习,就不会有大的积累,也没有什么意思。人类是所有动物之中唯一会计较得失的。遇到什么不知道的、令人在意的事物,先不要考虑它是否有用、是否有意义,而是要用一颗纯粹的好奇心来接触它。“如果这样就会怎样”这种武断的想法,是包括我在内的所有现代人的通病,完全去掉是不可能的。如果我们做任何事情的动机都很单纯,同时找出事物之间的因果关系,然后深入思考,就能用与其他人不同的视角去思考问题。

——引自第316页


一般做法//短码做法全局变量用容易理解的名称,局部变量用短名称命名//变量全部用一个字母命名函数用动词命名//函数用一个字母命名用明确的描述文字命名//用一个字母命名为结构加上容易理解的缩进//该缩进的地方也不要放进多余的空格写成自然的形式//写成最短的形式加上括号避免误读//熟知运算符优先级,尽量不用括号把复杂的表达式分开//把复杂的表达式换成同等的简单表达式或近似表达式明确编写源代码//明确编写源代码注意副作用//把副作用应用到极致统一缩进、大括号的使用方式//绝不缩进,大括号能省就省以惯用写法确保一致性//学会最短的惯用法,尽快转换成短码编程想法多重分支使用else-if//不管是不是多重分支,都使用条件运算符尽量不要用宏//绝对不要用宏宏自身的参数记得加上括号//就算非得用宏,还是千万别用括号为魔术数字命名//魔术数字基本上维持原状不要使用整数,使用字符串常量//整数、浮点数、字符串常量挑最短的使用用语言计算对象大小//事先计算好对象大小理所当然的事就不要写注释了//完全不用写注释为函数的与全局变量加上详细说明//完全不用写注释烂原始代码就别注释了,重写比较快//长的源代码就别注释了,缩短比较快注释不要与源代码冲突//完全不用写注释明确注释,不要导致混乱//什么都不写是最明智的

——引自第319页

相关推荐

微信二维码