2009年6月2日 星期二

值得玩味的程式作業

Standard
昨日,有人在 MSN 敲我,請我幫助她解一題程式作業,她說班上沒人會寫,只好向外求助。該作業是從某間大學(忘記是哪一所了)資工系的某堂課所出的,個人覺得題目出的很好且很有趣,值得細細品味。 :-)

題目大致如下:
  • 寫出一個多項式相乘的程式
  • 使用串列的方法
  • 可自定任意多項式
  • 舉例:(2X+3Y+4Z)(XY2+X2Y+Z2) = 2XY3+2X2Y2+2Z2X+3XY3+3X2Y2+3Z2Y+4XY2Z+4X2YZ+4Z3
    <註>未知數後的數值代表『指數』,如:X2 代表 X 的平方
對一般學生來說,這作業的困難點是會用到多種技巧,該程式將運用到串列的基本結構、字串解析的技巧以及指標的應用,最重要的需要充分的邏輯思考,以細心慢慢刻出這支小程式。不但如此,該程式寫出來後,還有很多最佳化的改進空間和擴充性,能讓人想改了又改,欲罷不能呀!

筆者在這邊提供一份自己的解答,供有興趣的人參考:
http://people.linux.org.tw/~fred/homework/mathor.c

後記
比起機械,資工系的作業好有趣!早知道當初填志願就填它了!(摔杯子)