Metaprogramming

Metaprogramming

設計一支程式來製造程式碼,令該程式碼充分運用程式語言自身擁有的能力,輕鬆地、更有效率地完成更多事情。

舉個例子。例如現在有一個四則運算式需要計算:

5 + 8 * (2 - 3) + 7 * -6 / (2 - 1) + 1

這是一個經典的問題,大家應該不陌生。身經百戰的演算法設計高手,必然不假思索說出:stack,把所有符號依序放入stack,依照運算符號的優先次序push和pop,一下子就算完了。聽來簡單,但實做起來還是頗麻煩。

這裡要介紹的是更輕鬆、更強悍的方法:寫程式製造一支會進行四則運算的程式。大家都知道C/C++的語法當中,就有四則運算的語法了。現在來設計一支程式,製作出四則運算的程式碼吧!

如果輸入方才的四則運算式,就會產生如下程式碼,檔名為temp.cpp。

然後編譯temp.cpp、執行一下,就有答案了。您甚至可以把編譯、執行的指令,統統寫進程式碼當中:

程式設計師藉由Metaprogramming能做更多事情!現在的資訊領域當中,應用到Metaprogramming的也相當多,各位可以再去蒐集相關資料來閱讀。:)

Quine

Quine

寫一支程式,其功能是輸出本身程式碼。

【待補文字】

給一題尚未有測試資料的題目,目前還不能送。

UVa 724