# C01: Ternary ###### tags: `sysprog2017` ## 預期目標 * 準備 GNU/Linux 開發工具 * 學習使用 HackMD 和 LaTeX * 學習使用 Git 與 GitHub * 掌握數值系統 * 技術報告寫作練習 ## 技術報告寫作 * 為什麼你該在大學時代學好技術報告撰寫呢? * 在這個資訊爆炸的時代裡,資訊接受者往往習慣於以快速瀏覽的方式搜尋所要的資訊...文字可能是最容易讓資訊接受者「失去耐性」的一種資訊型態。 * 一篇技術報告即使文字內容非常有內涵,如果不能有分明的段落,讓讀者一開始便能快速、清晰地掌握報告內涵,恐怕讀者根本不會有意願或耐性深入閱讀這份報告。 :::info 「你我在 21 世紀都該以專業獲利 (技術授權、商業模式、顧問諮詢),並非一味出賣勞務」 -- [2017 年秋季課程簡介和注意須知](https://docs.google.com/presentation/d/1-6ZlaL3vd-a54omTpcTQPudbpxz-eqisyd7PY4e_Ctc/edit#) ::: * 平行式思考可讓寫作變得更有效率,作者不必等到整篇文章構思完成後才開始寫作,而可以先把構思比較成熟、材料比較完整的文字段落先行記載下來,這時也先不必花太多時間顧慮用字遣詞,或者文章的組織與結構。 * 這些文字段落開始也許十分零散,但是累積足夠內容後,作者便可以利用電腦軟體將全文從頭編輯一次,包括修飾所用詞句,增添不足的內容,刪除重複或不相關的內容,調整文字段落順序,組織文章的結構,賦予不同文字段落應有的格式等。 * 作者可以一次又一次地重頭編輯整篇文章,每次編輯都像是為文章「穿衣」,都可能有新的想法或素材為文章作更新,每次編輯對於文字內容和文章結構或格式的講究也越加細膩,直到交卷期限到了才停止。 * 一般習慣上技術報告或論文都有以下的基本結構: * 摘要簡介 * 文獻回顧 * 研究方法 * 研究結果 * 結論與討論 * 章節標題訂定一個重要的原則是要有「敘述性」,讓讀者能夠望文生義,而對章節內容有所期待。像是「第一章 簡介」、「第二章 文獻回顧」這樣的標題可能太過籠統,「第一章 多重障礙者運動機能訓練科技輔具研發背景與目的」、「第二章 科技輔具研究文獻探討」便比較有敘述性。 * 在建立研究的動機、凸顯此研究問題的重要性時,常需引用文獻、數據客觀地支持作者的論點。在技術報告中文獻的引用有許多功能,除了建立研究的整體動機、凸顯此問題的重要性之外,文獻回顧也可對此領域的研究分門別類作一整體瞭解,除了避免重複別人已經做過的研究工作外,更可以具體指出哪些部分研究還沒有作,或是目前作得不夠完整,有繼續研究的必要。另外在敘述研究方法時,也常需引用研究文獻中既有的方法或數據,或使用文獻中的例子重複執行,與之比對,證實本研究之效果 * 參考資料: [技術報告撰寫的基本原則](http://designer.mech.yzu.edu.tw/articlesystem/article/compressedfile/(2004-06-21)%20%e6%8a%80%e8%a1%93%e5%a0%b1%e5%91%8a%e6%92%b0%e5%af%ab%e7%9a%84%e5%9f%ba%e6%9c%ac%e5%8e%9f%e5%89%87.aspx?ArchID=639), [Webcache](http://webcache.googleusercontent.com/search?q=cache:MS991iGLlMIJ:designer.mech.yzu.edu.tw/article/articles/course/file/(2004-06-21)%2520%25A7%25DE%25B3N%25B3%25F8%25A7i%25BC%25B6%25BCg%25AA%25BA%25B0%25F2%25A5%25BB%25AD%25EC%25ABh.pdf+&cd=1&hl=en&ct=clnk&gl=tw) ## Balanced Ternary * 回顧第 1 週課程 [重新理解數值](https://hackmd.io/s/BkRKhQGae) 的「電腦不是只有二進位」一節,提及了 [Ternary numeral system](https://en.wikipedia.org/wiki/Ternary_numeral_system) 和 [Balanced ternary](https://en.wikipedia.org/wiki/Balanced_ternary) * 留意 Addition, subtraction and multiplication and division 的章節  * [Binary to trinary conversion and vice versa](https://forum.iota.org/t/binary-to-trinary-conversion-and-vice-versa/201) * 工具: [Base Converter](https://www.cut-the-knot.org/binary.shtml) ## 測試 Balanced Ternary * 在 GNU/Linux 環境中,開啟 (虛擬) 終端機,輸入並執行以下命令: ```shell $ mkdir -p ~/workspace $ cd ~/workspace $ git clone https://github.com/sysprog21/balanced-ternary $ cd balanced-ternary $ make ``` * 預期會在 `~/workspace` 目錄看到新建立的執行檔 `b3k`,測試方式如下: ```shell echo 0 | ./b3k ``` 預期輸出為: ``` ┌───┐ │ │ └───┘ ``` * 將上一步驟的 `0` 更換為 `27`, `-27`, `9`, 和 `-9`,觀察其輸出: (或者執行 `make check` 命令) ``` ├───┐ ┌┬──┐ ┌───┐ ┌───┐ │ │ │ │ ┤ │ ├ │ └───┘ └───┘ └───┘ └───┘ (27) (-27) (9) (-9) ``` 再對照下圖,思考這些數值在 balanced ternary 表示的關聯  ## Balanced Ternary 教學影片 (務必詳閱) * [Number Systems: Ternary](https://www.youtube.com/watch?v=vOyiHMa-mtQ) * [Non-Binary Computing](https://www.youtube.com/watch?v=TFTK074nG_M) * [Full Adder](https://www.youtube.com/watch?v=v7XxIjv_mUc) * [Modulo 3 Sum and Product Functions](https://www.youtube.com/watch?v=cgcXoCnyZhQ) * [Ripple Adder in Binary and Ternary Logic](https://www.youtube.com/watch?v=TfJxAb0owj8) ## 作業要求 1. 研讀 Balanced Ternary,並依據 [課前測驗參考解答: Q1](https://hackmd.io/s/ByzoiggIb) 的風格和探討方式,涵蓋以下: * 解釋 Balanced Ternary 原理; * Balanced Ternary 的設計要解決什麼類型的問題,需要詳述實際應用案例 (如 IOTA/Tangle)。提示:從算術表達的精準度和空間使用效率去探討; * 針對特定的領域 (如加密貨幣),列出在 GitHub 裡頭可找到的應用案例,不僅列出程式碼,還要解說; * 在研究的過程中,應該會對既有工具進行修改或者重新開發 (不限程式語言),也該一併指出,程式碼應該維護在 GitHub 上; 2. 建立新的 HackMD 頁面,並列於 [作業區](https://hackmd.io/s/HyxQTaZj-)。撰寫數學式應該全部[用 LaTeX 表示](https://hackmd.io/s/B1RwlM85Z),不該用圖片 3. 在 GitHub 上 fork [balanced-ternary](https://github.com/sysprog21/balanced-ternary),針對你的分析需求,進行必要的修改 * 提交修改前,務必確認詳讀 [如何寫好 Git Commit Message](https://blog.louie.lu/2017/03/21/%E5%A6%82%E4%BD%95%E5%AF%AB%E4%B8%80%E5%80%8B-git-commit-message/) 4. 繳交截止日期: Oct 8, 2017 * 越早在 HackMD/GitHub 上有動態、越早接受批評檢閱,評分越高
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.