成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

程序員必須挑戰的七大編程項目,你能挑戰幾個?

移動開發
俗話說,熟能生巧。然而,有些事情我們做的越多,就會產生越多的“風險”。比如我們使用相同的工具來解決同一類的問題,盡管可以很好的完成它,但卻讓你失去了靈活性思維。 很多編程愛好者想要不斷挑戰自己,他們有著相同的特征,不滿足現狀,挑戰高難度,更多的則是因興趣而生。文中分享的這七個編程題目,你不妨來試試,發揮自己的靈活性與創造性,也許還能幫助你自學一套編程技巧。

1)Sums

提示:針對這道題目,你需要采用一種技術,即使你已經擁有幾十年的編程經驗。從數據文件開始,列出每個年級、每個學校、每個城市、每個州中紅發學生的數量。你的任務是按數據進行排列,每個州(第一),城市(第二),學校(第三),最后按年級(K to 6)

  1. IDENTIFICATION DIVISION.{.js .plain} 
  2.  
  3.   
  4.  
  5. PROGRAM-ID. SUMS.{.js .plain} 
  6.  
  7.   
  8.  
  9. ENVIRONMENT DIVISION.{.js .plain} 
  10.  
  11.   
  12.  
  13. INPUT-OUTPUT SECTION.{.js .plain} 
  14.  
  15.   
  16.  
  17. FILE-CONTROL.{.js .plain} 
  18.  
  19.   
  20.  
  21. SELECT StudentFile ASSIGN TO {.js .plain}'input.txt'{.js .string
  22.  
  23.   
  24.  
  25.     {.js .spaces}ORGANIZATION IS LINE SEQUENTIAL.{.js .plain} 
  26.  
  27.   
  28.  
  29. DATA DIVISION.{.js .plain} 
  30.  
  31.   
  32.  
  33. FILE SECTION.{.js .plain} 
  34.  
  35.   
  36.  
  37. FD StudentFile.{.js .plain} 
  38.  
  39.   
  40.  
  41. 01 StudentCount.{.js .plain} 
  42.  
  43.   
  44.  
  45.    {.js .spaces}02  State       PIC X(12).{.js .plain} 
  46.  
  47.   
  48.  
  49.    {.js .spaces}02  City        PIC X(18).{.js .plain} 
  50.  
  51.   
  52.  
  53.    {.js .spaces}02  School      PIC X(20).{.js .plain} 
  54.  
  55.   
  56.  
  57.    {.js .spaces}02  Grade      PIC X.{.js .plain} 
  58.  
  59.   
  60.  
  61.    {.js .spaces}02  RedHaired   PIC 9999.{.js .plain} 
  62.  
  63.   
  64.  
  65. WORKING-STORAGE SECTION.{.js .plain} 
  66.  
  67.   
  68.  
  69. […]{.js .plain} 
  70.  
  71.   
  72.  
  73. PROCEDURE DIVISION.{.js .plain} 
  74.  
  75.   
  76.  
  77. Begin.{.js .plain} 
  78.  
  79.   
  80.  
  81.     {.js .spaces}OPEN INPUT StudentFile.{.js .plain} 
  82.  
  83.   
  84.  
  85.     {.js .spaces}READ StudentFile{.js .plain} 
  86.  
  87.   
  88.  
  89.       {.js .spaces}AT END MOVE HIGH-VALUES TO StudentCount{.js 
  90. .plain} 
  91.  
  92.   
  93.  
  94.     {.js .spaces}END-READ.{.js .plain} 
  95.  
  96.   
  97.  
  98.     {.js .spaces}[…]{.js .plain} 
  99.  
  100.   
  101.  
  102. STOP RUN.{.js .plain} 
  103.   

下面是個輸入文件案例:

NY        NYC             PS 122            K1000{.js .plain}

NY        NYC             PS 122            12000{.js .plain}

NY        NYC             PS 122            43000{.js .plain}

NY        NYC             St-Judes          40043{.js .plain}

NY        NYC             St-Judes          50057{.js .plain}

NY        Albany          Green Acres       K0003{.js .plain}

NY        Albany          Green Acres       20005{.js .plain}

NY        Albany          Green Acres       30010{.js .plain}

NY        Albany          Blue Hills        30123{.js .plain}

NY        Albany          Blue Hills        40302{.js .plain}

NY        Albany          Blue Hills        50067{.js .plain}

NY        Rochester       Happy Trails      50076{.js .plain}

  1. <b>Gives:</b>{.js .plain} 
  2.  
  3.   
  4.  
  5.       {.js .spaces}PS 122                 6000{.js .plain} 
  6.  
  7.   
  8.  
  9.       {.js .spaces}St-Judes                100{.js .plain} 
  10.  
  11.   
  12.  
  13.       {.js .spaces}NYC                  6100{.js .plain} 
  14.  
  15.   
  16.  
  17.       {.js .spaces}Green Acres              18{.js .plain} 
  18.  
  19.   
  20.  
  21.       {.js .spaces}Blue Hills              492{.js .plain} 
  22.  
  23.   
  24.  
  25.       {.js .spaces}Albany                510{.js .plain} 
  26.  
  27.   
  28.  
  29.       {.js .spaces}Happy Trails             76{.js .plain} 
  30.  
  31.   
  32.  
  33.       {.js .spaces}Rochester              76{.js .plain} 
  34.  
  35.   
  36.  
  37.       {.js .spaces}NY             6686{.js .plain} 
  38.   

在這個例子中我采用了COBOL,使用固定的長度字段,數值填充為0。你可能會認為tab-
or comma-separated
input,當然這個值不一定非要為0。這個題目旨在增加正確值并在正確的時間顯示,而不是為了證明你可以輸入解析局部變量。請注意,這里的數據都是虛構的。

2) Fibonacci Sequence(斐波那契序列)

0, 1, 1, 2, 3, 5, 8, 13, 21…{.js .plain}

寫個函數返回到第n^th^的序列。這題應該是很容易。

3) Drawing with a Turtle

TurtleArt是創建該程序的其中一個,
其適合繪制各種圖片。你可以將“pen”移動至一個新的位置,改變畫筆的顏色,前進或者后退,隨意改變方向。此外,你還可以添加繪畫路徑,改變整個方形或者圓形色彩。這個挑戰就是利用TurtleArt來畫花。

下載TurtleArt:

你可以參照這幅圖片來進行繪制,當然你也可以自由創建。如果你認為這個很簡單,你還以嘗試繪制Michelle Deschênes:

 4) 16-Puzzle

有時我們也稱其為15-puzzle拼圖,這個通常是由塑料制作而成的小玩具,采用4×4網格被分成15塊,每一塊都有圖片。游戲的目標是重新組合圖片以形成一個完成的圖像。

Batgirl

參考Wikipedia上9-puzzle的相關示例。

我們可以通過Scratch來編寫16-puzzle游戲。它與TurtleArt相類似,但不要你安裝軟件。你可以在線使用Scratch。

先不要急著挑戰高難度,由簡入繁,你可以先從2×2 puzzle開始,成功創建后再進行3×3,一步一步逐級增加,直到最終獲得完成16-puzzle。

5) Pascal Triangle(帕斯卡三角)

對于這個挑戰,通常會采用SQL來計算每一行的帕斯卡三角。

這個題目可能在我們童年時期見過,從1開始,1在頂部,第一個和最后一個都是1;接著每一行中間數字是由相鄰兩個數字之和,呈現金字塔形狀。

我們先定義一個表,這里使用MySQL語法,也可以采用任意SQL數據庫引擎:

  1. create table pascal ({.js .plain} 
  2.  
  3.   
  4.  
  5.   {.js .spaces}row int not {.js .plain}null{.js .keyword},{.js .plain} 
  6.  
  7.   
  8.  
  9.   {.js .spaces}entry int not {.js .plain}null{.js .keyword},{.js 
  10.  
  11. .plain} 
  12.  
  13.   
  14.  
  15.   {.js .spaces}val int not {.js .plain}null{.js .keyword},{.js .plain} 
  16.  
  17.   
  18.  
  19.   {.js .spaces}primary key (row, entry){.js .plain} 
  20.  
  21.   
  22.  
  23. );{.js .plain} 

先初始化前兩行,從技術上來講,你只真正需要第一個,從第三行開始變得很容易,實際上你已經從上一行開始計算值。

  1. insert into pascal values (1, 1, 1);{.js .plain} 
  2.  
  3.   
  4.  
  5. insert into pascal values (2, 1, 1);{.js .plain} 
  6.  
  7.   
  8.  
  9. insert into pascal values (2, 2, 1);{.js .plain} 

你可以使用存儲過程( stored
procedure)來填寫 n^th^行,或者你也可以使用宿主語言(host
language)比如PHP或Java來調用數據庫。記住,不要使用任何(flow control
)流量控制(比如ifs, loops等),不要調用遞歸函數,你可以采用insert
statements。

mysql> select * from pascal where row = 10;{.js .plain}

當然,只要你愿意,你也可以采用NoSQL數據庫。

6) Sierpiński Triangle (謝爾賓斯基三角形 )

這個得名來源于波蘭數學家 Wacław Franciszek Sierpiński(波蘭語,謝爾賓斯基),有三個著名的分形是以他的名字命名(Sierpinski三角形,Sierpinski地毯,Sierpinski曲線),創建于1915年。

繪制這個,你需要從一個等邊三角形(equilateral triangle)開始,然后給其填充顏色,然后挖空三角形中間部分,這樣中間的三角形是其他三個三角形的邊。從9個三角形增加至27個,以此類推。


你也可以在HTML5 canvas中繪制,首先你要決定canvas的形狀及大小以及三角形坐標。

如果每個邊有長度x,長度h,那么就可通過從頂點畫線,這樣使它底部的邊緣交叉成直角,可以采用應用勾股定理找到h至x的比例。

如果你不想采用數學原理,那么你還可以使用canvas設定寬220,高195,三角形頂點 (10, 185),(210, 185),(110,
10)。當你完成一個基本的三角形工作,添加一個小動畫。使其呈現出不同的效果,你可以看到它是如何一步一步實現的。

完成三角形后,你還可以嘗試 Sierpiński carpet(Sierpinski地毯)。

道理是同樣的,從一個正方形開始,把它分成9個正方形。挖空中間,和其他8個正方形構成carpet。

7) Project Euler

[[76969]]

Project Euler由Colin Hughes(也被人稱為euler) 在2001年10月創建,一開始時作為mathschallenge網站的一個子欄目。它是一個具有挑戰性的不僅僅需要具備數學能力的“數學/計算機編程”問題集合。

Project Euler致力于鼓勵、挑戰并且發展解題技巧,并且為那些對迷人的數學世界有興趣的人提供樂趣。

Project Euler提供的問題集有不同的難度以及多種解題經驗,可以進行連續的啟發式的學習。也就是說,通過解決一個問題,提供給解題者一個新的概念,使解題者可以接觸之前無法涉及的問題。因此,有毅力的參與者將會逐一完成每一個題目。

最后:

試試你能挑戰幾個吧?希望這些挑戰能夠激發你的好奇心,通過它們擴大視野,幫助你創造性的思考問題,因為軟件開發本身就是個創造性的過程。

責任編輯:張葉青 來源: eoe Android開發者社區
相關推薦

2022-05-23 08:09:42

物聯網IOT

2010-12-23 15:45:31

程序員編程

2013-04-22 11:13:06

程序員編程誤區

2011-06-09 13:26:27

編程程序員

2017-10-13 00:55:11

DevOps持續交付IT

2014-11-07 16:57:21

程序員

2016-08-23 09:58:59

2024-03-18 13:11:47

2012-07-13 09:10:46

云服務

2013-08-27 09:56:51

程序員

2009-05-31 19:13:44

2019-11-27 18:43:36

程序員編程語言軟件

2018-06-12 14:18:17

2022-01-17 10:28:36

ITIT領導IT管理

2011-06-07 10:28:51

程序員

2019-04-01 07:43:39

2024-01-24 15:06:28

2012-06-20 10:06:57

2023-11-09 13:21:56

2012-06-13 13:16:16

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产色片| 国产激情亚洲 | 日韩中文在线观看 | 久久亚洲一区二区三区四区 | 久久久久久久一区二区三区 | 一级一级毛片免费看 | 四虎成人在线播放 | 日韩一区精品 | 久久久久久国产精品 | www精品美女久久久tv | 天天射网站 | 国产乱码精品一区二区三区中文 | 国产亚洲精品久久午夜玫瑰园 | 欧美性另类| 精品国产乱码久久久 | 久久99精品久久久久久 | 久草精品视频 | 国产精品3区 | 欧美一区二区三区视频 | 综合婷婷| 一级片网址 | 国产精品久久在线 | 久久精品中文 | 中文av在线播放 | 欧美亚洲国产一区 | 日本成人综合 | 亚洲视频二区 | 久久久久久中文字幕 | 日韩视频一区在线观看 | 波多野结衣先锋影音 | 国产一区二区在线免费观看 | 日韩av免费在线观看 | 日韩色在线 | 精品亚洲一区二区三区四区五区高 | 久久亚洲一区二区 | 久久精品这里精品 | 国产成人一区在线 | 日本不卡一区二区三区 | 夜夜爽99久久国产综合精品女不卡 | 一二三四在线视频观看社区 | 久久久久久久久91 |