Ecole 42 的自我挑戰 —The Norm(regulation)

Tsungyu Yu
2 min readNov 2, 2018

--

tl;dr: while, 25 lines, tabs

Norm,讓人又愛又恨的玩意,

網路上找不到英文版本的。
法文版本:
https://github.com/Binary-Hackers/42_Subjects/blob/master/04_Norme/norme_2_0_1.pdf

1什麼是Norm?
Norm是Ecole 42最有名的限制標準,他制定了一個程式內共同的格式規範,如縮排格式、變數名稱、註解、行數都有規範,可以讓同學之間在觀看互相的程式碼的時候能夠有一定的共識。

2Norm規範了什麼檔案?
Norm只規範了C語言檔案,其他檔案不會加以限制,例如.sh檔或Makefile檔。

3Norm規範了什麼?
這裡只分享一些比較重要的,詳細限制請看檔案。
1. 自製檔案及資料集只能包含小寫字母、數字、底線。
2. 自製變數及函數只能包含小寫字母、數字、底線,且函式必須以ft_為開頭。
3. 自製資料型態必須在其名稱前加入相對的格式。(詳見檔案。)
4. 使用的字元必須要在標準ASCII表內。
5. 程式碼必須整齊(縮排、對齊等等),其中縮排應固定為4個空白鍵。
6. 任一個函式的內容不可超過25行,不包含函式本身的大括弧(含main)。
7. 一個指令一個行。
8. 不可以同時間定義多個變數,且單一函式只許定義最多5個變數。
9. 單一函式只許擁有最多4個參數。
10. struct不可在.c檔案定義。
11. 不可以使用for, do…while, switch, case, goto。
12. 不可以使用以變數定義長度的陣列(Arrays)。
13. 單一檔案不可以超過五個函式。
14. 註解不可存在於函式內,且必須符合格式。

4如果不遵守Norm會怎樣?
評分系統在跑測試之前會先用標準的指令執行一遍,如果沒有通過Norm的測試的話,會直接宣告答案錯誤。

5考試的時候也會有Norm嗎?
當初我在考試的時候Norm的指令跑不了,我沒有測試可不可以不遵守,所以這個問題無法回答。

以上。

--

--