短碼之美

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

內容概要

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

作者簡介

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

書籍目錄

第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)場:在線評分系統(tǒng) 4 1.2.1 什么是在線評分系統(tǒng) 4 1.2.2 世界各地的在線評分系統(tǒng) 4 1.2.3 pku judge online 5 1.3 動手試試:短碼編程的基礎 6 1.3.1 編程環(huán)境 6 1.3.2 使用的編程語言和編譯器 6 1.3.3 注冊poj賬號 6 1.3.4 基本規(guī)則 7 1.3.5 微妙的規(guī)則 8 1.3.6 道德上的規(guī)則 8 1.4 熱身 10 1.4.1 關于運行環(huán)境 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 精通規(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風暴 56 2.2.4 挑戰(zhàn)變態(tài)排序一 58 2.2.5 挑戰(zhàn)變態(tài)排序二 65 2.2.6 永遠的hack 69 2.3 熟練運用庫函數(shù) 69 2.3.1 方便的庫函數(shù) 69 2.3.2 好用的strtol函數(shù) 74 2.3.3 strtol與itoa天生一對 77 2.3.4 轉換樂園 82 2.3.5 海貍啃木頭 84 2.3.6 系繩 87 2.4 精減1字節(jié)的靠山 91 2.4.1 好用的~運算符 91 2.4.2 好用的%運算符 94 2.4.3 分組建立長期政權 99 2.4.4 isbn碼 106 2.4.5 非?;钴S的數(shù)學問題 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 指針和數(shù)組的密切關系 138 2.7 數(shù)學問題 142 2.7.1 不要依賴公式 142 2.7.2 越界(數(shù)列篇) 143 2.7.3 越界(排列組合篇) 146 2.7.4 與周期有關的問題 150 2.7.5 偽隨機數(shù)的周期性 151 2.7.6 三個周期 153 2.7.7 斐波那契數(shù)列 158 2.8 活用算法 163 2.8.1 高速、節(jié)省內存是編寫短碼的關鍵 163 2.8.2 三角形 163 2.9 數(shù)字的新常識 171 2.9.1 關鍵在“三” 171 2.9.2 整理電話號碼 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 關于表示法 194 3.2 精簡循環(huán) 194 3.2.1 精通之后就能成為頂尖的短碼編程者 194 3.2.2 簡單的例子 195 3.2.3 常用結構 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 強大的擴展語法 208 3.3.1 對短碼編程者有用的擴展語法 208 3.3.2 條件運算符 208 3.3.3 數(shù)字根 209 3.3.4 擴展左值 212 3.3.5 擴展關系運算符 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 小結 239 3.6 quick sort hackⅱ 240 3.6.1 征服二進制等于征服短碼編程 240 3.6.2 縮短匯編代碼 244 3.6.3 進一步縮短 248 3.7 作弊代碼和安全性 251 3.8 挑戰(zhàn)難題 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 不經(jīng)常使用的c++ 294 4.4.2 基本技巧 295 4.4.3 檢查順序 296 4.4.4 g++擴展運算符與變態(tài)gcc源代碼的對比 299 4.5 更多的挑戰(zhàn) 306 4.5.1 成為一名真正的短碼編程者 306 4.5.2 世界各地的短碼編程者的活動 306 4.5.3 挑戰(zhàn)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 網(wǎng)站介紹 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 運算符的優(yōu)先級與結合規(guī)則 338

章節(jié)摘錄

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

編輯推薦

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

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    短碼之美 PDF格式下載


用戶評論 (總計13條)

 
 

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

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

京ICP備13047387號-7