短碼之美

出版時(shí)間:2011-1-8  出版社:人民郵電出版社  作者:Ozy (著), やねうらお (監(jiān)修)  頁數(shù):338  
Tag標(biāo)簽:無  

內(nèi)容概要

  《短碼之美:編程達(dá)人的心得技法》主要介紹短碼編程,首先介紹了短碼編程的三要素:數(shù)據(jù)結(jié)構(gòu)和算法、執(zhí)行環(huán)境以及短碼編程的精神。書中以北京大學(xué)的pku judge online 在線評(píng)分系統(tǒng)為編程環(huán)境,選取了該系統(tǒng)中比較典型的問題,如海貍啃木頭、旋轉(zhuǎn)拼圖、葡萄酒買賣,利用數(shù)據(jù)結(jié)構(gòu)和算法的知識(shí)加以分析,最后編程實(shí)現(xiàn),并嘗試使用各種編程語言,不斷地將源代碼縮短。同時(shí)還介紹并分析了一些鉆安全漏洞的代碼,旨在通過短碼編程幫助程序員集中注意力,鍛煉忍耐力,開拓視野?!  抖檀a之美:編程達(dá)人的心得技法》適合所有對(duì)短碼編程感興趣的人。

作者簡介

作者:(日本)岡田佑一 譯者:李秀銀 賽麗娜Ozy本名同田佑一,是出生于日本大阪的一位短碼高手。他花費(fèi)相當(dāng)長的時(shí)間提升短碼編程技術(shù),進(jìn)而將其發(fā)展成一種技能,曾獲得程序設(shè)計(jì)大賽的冠軍。他開辦過程序設(shè)計(jì)方面的培訓(xùn)班,目前致力于數(shù)學(xué)教育和程序設(shè)計(jì)師的培養(yǎng)工作。李秀銀畢業(yè)于黑龍江大學(xué),高級(jí)軟件工程師,一直致力于IT行業(yè)的項(xiàng)目研發(fā)。精通各種開發(fā)環(huán)境及語言,從事對(duì)日外包工作近20年,先后研發(fā)各類軟件項(xiàng)目60佘項(xiàng),發(fā)表學(xué)術(shù)論文數(shù)十篇,多次獲省級(jí)科研項(xiàng)目獎(jiǎng)。賽麗娜,畢業(yè)于黑龍江大學(xué),軟件工程師,精通各種開發(fā)環(huán)境及語言,從事對(duì)日外包工作近15年,先后研發(fā)各類軟件項(xiàng)目40余項(xiàng)。

書籍目錄

第1章 入門 1 1.1 引言 2 1.1.1 什么是短碼編程 2 1.1.2 短碼編程的三要素 3 1.1.3 熱情、聰明的短碼編程者 4 1.1.4 短碼編程者的傳奇 4 1.2 戰(zhàn)場(chǎng):在線評(píng)分系統(tǒng) 4 1.2.1 什么是在線評(píng)分系統(tǒng) 4 1.2.2 世界各地的在線評(píng)分系統(tǒng) 4 1.2.3 pku judge online 5 1.3 動(dòng)手試試:短碼編程的基礎(chǔ) 6 1.3.1 編程環(huán)境 6 1.3.2 使用的編程語言和編譯器 6 1.3.3 注冊(cè)poj賬號(hào) 6 1.3.4 基本規(guī)則 7 1.3.5 微妙的規(guī)則 8 1.3.6 道德上的規(guī)則 8 1.4 熱身 10 1.4.1 關(guān)于運(yùn)行環(huán)境 10 1.4.2 首先從簡單的加法運(yùn)算開始 10 .1.4.3 不簡單加法運(yùn)算 16 1.4.4 計(jì)算平均值 21 1.4.5 推出重疊的牌 24 1.4.6 開始模仿編程 28 1.4.7 熱身結(jié)束 31 第2章 必讀!絕妙技巧 33 2.1 精通規(guī)則 34 2.1.1 醉漢看守 34 2.1.2 階段 43 2.1.3 連續(xù)數(shù)的和 49 2.2 quick sort hack 55 2.2.1 快速排序 55 2.2.2 qsort函數(shù) 55 2.2.3 hack風(fēng)暴 56 2.2.4 挑戰(zhàn)變態(tài)排序一 58 2.2.5 挑戰(zhàn)變態(tài)排序二 65 2.2.6 永遠(yuǎn)的hack 69 2.3 熟練運(yùn)用庫函數(shù) 69 2.3.1 方便的庫函數(shù) 69 2.3.2 好用的strtol函數(shù) 74 2.3.3 strtol與itoa天生一對(duì) 77 2.3.4 轉(zhuǎn)換樂園 82 2.3.5 海貍啃木頭 84 2.3.6 系繩 87 2.4 精減1字節(jié)的靠山 91 2.4.1 好用的~運(yùn)算符 91 2.4.2 好用的%運(yùn)算符 94 2.4.3 分組建立長期政權(quán) 99 2.4.4 isbn碼 106 2.4.5 非常活躍的數(shù)學(xué)問題 110 2.5 按位運(yùn)算的超級(jí)魔法 114 2.5.1 超級(jí)魔法的二叉樹 114 2.5.2 超級(jí)魔法的密碼 119 2.5.3 超級(jí)魔法的極致 123 2.6 精通指針 129 2.6.1 短碼編程中的指針 129 2.6.2 旋轉(zhuǎn)拼圖的智力游戲 130 2.6.3 超長加法 135 2.6.4 指針和數(shù)組的密切關(guān)系 138 2.7 數(shù)學(xué)問題 142 2.7.1 不要依賴公式 142 2.7.2 越界(數(shù)列篇) 143 2.7.3 越界(排列組合篇) 146 2.7.4 與周期有關(guān)的問題 150 2.7.5 偽隨機(jī)數(shù)的周期性 151 2.7.6 三個(gè)周期 153 2.7.7 斐波那契數(shù)列 158 2.8 活用算法 163 2.8.1 高速、節(jié)省內(nèi)存是編寫短碼的關(guān)鍵 163 2.8.2 三角形 163 2.9 數(shù)字的新常識(shí) 171 2.9.1 關(guān)鍵在“三” 171 2.9.2 整理電話號(hào)碼 176 2.10 字節(jié)的熱情 184 2.10.1 附上答案 184 2.10.2 漢諾塔 184 第3章 短碼編程研究 193 3.1 更高的編程技巧 194 3.1.1 開始 194 3.1.2 關(guān)于表示法 194 3.2 精簡循環(huán) 194 3.2.1 精通之后就能成為頂尖的短碼編程者 194 3.2.2 簡單的例子 195 3.2.3 常用結(jié)構(gòu) 197 3.2.4 短碼編程的基本類型 197 3.2.5 重要的短碼語法 199 3.2.6 取數(shù)字游戲 200 3.2.7 葡萄酒買賣 202 3.2.8 難解:精簡多層循環(huán) 204 3.3 強(qiáng)大的擴(kuò)展語法 208 3.3.1 對(duì)短碼編程者有用的擴(kuò)展語法 208 3.3.2 條件運(yùn)算符 208 3.3.3 數(shù)字根 209 3.3.4 擴(kuò)展左值 212 3.3.5 擴(kuò)展關(guān)系運(yùn)算符 213 3.4 宏能不能縮短代碼 213 3.4.1 基于短碼編程的宏 213 3.4.2 while語句的可能性 214 3.4.3 數(shù)組的可能性 217 3.5 神奇的main遞歸 219 3.5.1 main遞歸可以最大限度地縮短代碼 219 3.5.2 從單純循環(huán)到main遞歸 219 3.5.3 破解難題的main遞歸 220 3.5.4 基于遞歸算法的main遞歸 232 3.5.5 傳說中的1145 233 3.5.6 小結(jié) 239 3.6 quick sort hackⅱ 240 3.6.1 征服二進(jìn)制等于征服短碼編程 240 3.6.2 縮短匯編代碼 244 3.6.3 進(jìn)一步縮短 248 3.7 作弊代碼和安全性 251 3.8 挑戰(zhàn)難題 254 3.8.1 短碼編程的靈魂 254 3.8.2 組成最強(qiáng)陣容 254 第4章 語言對(duì)決 277 4.1 短碼編程不限語言 278 4.1.1 各種程序設(shè)計(jì)語言 278 4.1.2 本章結(jié)構(gòu) 278 4.2 java與c 278 4.2.1 java是有缺陷的程序設(shè)計(jì)語言 278 4.2.2 使用java的地方 279 4.2.3 多精度時(shí)就交給java 279 4.2.4 c語言仍然強(qiáng)大 285 4.3 pascal與c 292 4.3.1 遇到麻煩的pascal語言 292 4.3.2 用pascal寫出比c語言更短的代碼 293 4.3.3 復(fù)利計(jì)算 293 4.4 c++與c 294 4.4.1 不經(jīng)常使用的c++ 294 4.4.2 基本技巧 295 4.4.3 檢查順序 296 4.4.4 g++擴(kuò)展運(yùn)算符與變態(tài)gcc源代碼的對(duì)比 299 4.5 更多的挑戰(zhàn) 306 4.5.1 成為一名真正的短碼編程者 306 4.5.2 世界各地的短碼編程者的活動(dòng) 306 4.5.3 挑戰(zhàn)code golf 307 4.5.4 嘗試用所有語言編寫短碼 312 第5章 磨練自己 313 5.1 致親愛的讀者 314 5.1.1 向短碼編程者學(xué)習(xí) 314 5.1.2 源代碼的可讀性 314 5.1.3 希望寫出錯(cuò)誤少的程序 315 5.1.4 更大程度地提高 316 5.1.5 有人情味、富有魅力 317 5.2 珍貴的參考資料 318 5.2.1 珍貴的書籍 318 5.2.2 網(wǎng)站介紹 323 5.3 精明強(qiáng)干的短碼編程者 325 5.3.1 致謝 325 5.3.2 短碼高手們(敬稱略,按字母順序) 325 5.4 最后 327 附錄 331 a.1 問題一覽 332 a.2 ascii碼表 337 a.3 運(yùn)算符的優(yōu)先級(jí)與結(jié)合規(guī)則 338

章節(jié)摘錄

插圖:1.1.3 熱情、聰明的短碼編程者將源代碼編寫到最短的人,稱為短碼編程者(shortCoder)。即使只能縮短1字節(jié),短碼編程者也會(huì)為此而努力戰(zhàn)斗。當(dāng)戰(zhàn)斗結(jié)束后,短碼編程者們會(huì)相互間討論縮短源代碼過程中的想法,交換自己發(fā)現(xiàn)的黑客技巧,并會(huì)分享知識(shí),然后繼續(xù)迎接下一個(gè)新的挑戰(zhàn)。雖然大多數(shù)短碼編程者都擁有明晰的頭腦,但是通常一個(gè)人是不可能完成短碼編程的,在與其他短碼編程者切磋溝通的過程中,也就生成了最短源代碼,同時(shí)也使自己得到了鍛煉。1.1.4 短碼編程者的傳奇程序員是一邊參照設(shè)計(jì)文檔,一邊從網(wǎng)上和參考書上得到所需的信息來編寫程序的。然而通常設(shè)計(jì)文檔本身也會(huì)有不完整的時(shí)候。就算它是完整的,可能也會(huì)在庫文件的實(shí)現(xiàn)過程中出現(xiàn)問題。當(dāng)然,也不能保證網(wǎng)上內(nèi)容或者是參考書都是100%正確,大多數(shù)情況下都有可能包含少量的錯(cuò)誤。這時(shí)可以請(qǐng)教有經(jīng)驗(yàn)的程序員去解決問題,去互聯(lián)網(wǎng)上檢索也肯定能找到相應(yīng)源代碼的例子。但是,不是所有的問題都可以這樣解決的。有時(shí),會(huì)碰到不能輕易判斷出對(duì)錯(cuò)的問題,這時(shí)候應(yīng)該怎么辦呢?本書通過熱情、快樂、認(rèn)真地描述短碼編程者勇敢挑戰(zhàn)似乎不可能完成的任務(wù)的故事,揭示出如何掌握更高的編程技巧、如何探索未知的問題,以期培養(yǎng)編程者的熱情。

編輯推薦

《短碼之美:編程達(dá)人的心得技法》:短碼編程的尖峰時(shí)刻編程數(shù)率的極致追求北大POJAMC經(jīng)典題目解析縮短代碼的過程。是頭腦風(fēng)暴的過程。要想寫出優(yōu)秀的短碼程序。除了要掌握數(shù)據(jù)結(jié)構(gòu).算法、運(yùn)行環(huán)境方面的豐富知識(shí)以外,還要堅(jiān)信無論什么樣的源代碼都能縮短,就算只能縮短1字節(jié),也要為之不懈地努力。在這個(gè)過程中集中注意力,磨礪意志力,提升思考力。程序人人會(huì)寫,各有巧妙不同?!抖檀a之美:編程達(dá)人的心得技法》以北京大學(xué)的在線評(píng)分系統(tǒng)為運(yùn)行環(huán)境,給出了非常多的例子,足以讓讀者體會(huì)到如何寫短碼。作者除了詳細(xì)介紹解題思路以外,還向讀者傳授不同程序語言的語法以及深入應(yīng)用方面的知識(shí),使讀者在縮短源代碼的過程中對(duì)程序設(shè)計(jì)語言.函數(shù)庫和編程環(huán)境有更深入的了解。如果你想提升程序設(shè)計(jì)水平,那么《短碼之美:編程達(dá)人的心得技法》恰好適合你閱讀。

圖書封面

圖書標(biāo)簽Tags

評(píng)論、評(píng)分、閱讀與下載


    短碼之美 PDF格式下載


用戶評(píng)論 (總計(jì)13條)

 
 

  •   封面有重大錯(cuò)誤,應(yīng)該是poj acm
  •   估計(jì)很多人會(huì)問寫短碼有什么意義,沒什么意義,只是geek的樂趣而已
  •   很好?。『苡杏冒?,不過有些難度
  •   總體不錯(cuò),書內(nèi)容很好,但是書脊有點(diǎn)破損,美中不足~
  •     僅舉第一章的一例:
      PKU 3062 Celebrity jeopardy
      http://poj.org/problem?id=3062
      做法就是輸入什么輸出什么.
      書中給的最短代碼是
      main(){for(;gets();)puts();}
      GCC提交才能AC
      
      之后還有main函數(shù)遞歸,cmp函數(shù)寫成字符串形式...
      
      很多人批評(píng)代碼不易維護(hù)等等,可以在這明確說明,很多代碼都是"語法錯(cuò)誤"甚至是"語義錯(cuò)誤"的代碼,但是它是最短的可AC代碼.這是基于編譯器工作原理,測(cè)試數(shù)據(jù)漏洞,等多方面的鉆研...
      
      如果您想從200B的代碼中學(xué)到軟件工程的知識(shí)...只能說,您看錯(cuò)書了...
      
      最近群里的眾神把這本奇葩書籍批得體無完膚...僅限娛樂...以及封皮上的ACM拼錯(cuò)了...
  •   pku居然還有這么水的題......
  •   其實(shí)自己手寫也不過是這樣的程序。 只是多些縮進(jìn)換行。
  •   @洛垂天之云
    呵呵,仔細(xì)看看咯~, gets(); puts(); 都沒有傳參數(shù)的
  •   呵呵,還有cmp寫成字符串~
    int s[] = {5, 4, 3, 2, 1};
    qsort(s, sizeof(s) / sizeof(s[0]), sizeof(s[0]), "YXZQQQ\x8b\x00+\x02\xc3");
    很好玩的~
  •   @追憶似風(fēng) 啊!囧,強(qiáng)大 Orz 這個(gè)都能成功的- -|| 是用了allocate register的慣用法吧。
  •   現(xiàn)在成RE了。。。
  •   @trort
    的確...28B已經(jīng)成為絕版了~
  •   這時(shí)候就他媽的應(yīng)該上個(gè)ARM9的CPU,我叫你取地址,我取你媽……
 

250萬本中文圖書簡介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7