查看完整版本 : C++ 抄自己請教

just_discuss 2017-2-25 02:01

我想問下呢


可唔可以寫個c++ program,佢會抄起自己cpp內容,然後copy入另一個cpp

例如: (呢段code就係waitTocopy.cpp自身 )
{

ifstream helper("waitTocopy.cpp");

        ofstream f("被改的.cpp");

       f<<helper.rdbuf();
       f.close();
}
上邊呢個係唔work , 不過我個idea類似係咁.

煙民母親生賤種

*** 作者被禁止或刪除 內容自動屏蔽 ***

有諗辦法 2017-2-25 06:41

其實有時啲問題係唔明想做乜目的係冇得答 :smile_27:

darigold 2017-2-25 06:54

這個叫做 Recursion Theorem
[url]https://en.wikipedia.org/wiki/Kleene%27s_recursion_theorem[/url]
一個程式可以 output 自己的 description 。

Susan﹏汪汪 2017-2-25 08:42

https://en.wikipedia.org/wiki/Quine_%28computing%29

just_discuss 2017-2-25 16:50

[quote]原帖由 [i]煙民母親生賤種[/i] 於 2017-2-25 02:51 AM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=456973724&ptid=26470927][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
點解要咁做?如果你係要完成幾次,用 for loop。如果要等完成某件工作後才執行,可以用 event。如果想將你段code的功能帶入其他function內,可以用function pointer [/quote]

sorry , 講漏左原因, 咁做係想試下做self -replicated program.
而家想做既效果就係 同一個folder入面, 當我click 左exe file, 咁佢就會改左同一個folder入面 一個.cpp file 既內容為自己既內容
(當exe 就係叫virus)

我係用input /output concept 去諗, 但係諗諗下, 同一個folder 入面, compile 出virus.exe 果個file 唔應該會係到, 所以open virus.cpp呢句根本唔會work.

不過我唔知應該用咩implementation

[[i] 本帖最後由 just_discuss 於 2017-2-25 04:53 PM 編輯 [/i]]

just_discuss 2017-2-25 16:52

[quote]原帖由 [i]darigold[/i] 於 2017-2-25 06:54 AM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=456975909&ptid=26470927][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
這個叫做 Recursion Theorem
[url=https://en.wikipedia.org/wiki/Kleene%27s_recursion_theorem]https://en.wikipedia.org/wiki/Kleene%27s_recursion_theorem[/url]
一個程式可以 output 自己的 description 。 [/quote]
thanks, 呢個我未聽過,反而quins  就係research 過程入邊見過好多次, 但係好似太deep, 我果個問題應該簡單D?

just_discuss 2017-2-25 17:03

[quote]原帖由 [i]煙民母親生賤種[/i] 於 2017-2-25 02:51 AM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=456973724&ptid=26470927][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
點解要咁做?如果你係要完成幾次,用 for loop。如果要等完成某件工作後才執行,可以用 event。如果想將你段code的功能帶入其他function內,可以用function pointer [/quote]

咁講, 我一按 abc.exe
佢就會將 同一個folder 下的 haha.cpp == abc.cpp , 但同一個folder下的只可以有 abc.exe 及haha.cpp

just_discuss 2017-2-25 22:23

#include <cstdio>#include <fstream>

using namespace std;
int main(){char pyc[]=
                "#include <cstdio>#include <fstream>%cusing namespace std;int main(){char pyc[]=%c%s%c;printf(pyc,10,34,pyc,34);ofstream  f("victim.cpp");f.close();}";
                ofstream  f("victim.cpp");
                f<<printf(pyc,10,34,pyc,34);
                f.close();
}


試左咁寫雖然唔明,但做到output自己, 但如果用ofstream 放入main 就出error

[[i] 本帖最後由 just_discuss 於 2017-2-25 11:16 PM 編輯 [/i]]

just_discuss 2017-2-25 23:49

[quote]原帖由 [i]有諗辦法[/i] 於 2017-2-25 06:41 AM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=456975811&ptid=26470927][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
其實有時啲問題係唔明想做乜目的係冇得答 :smile_27: [/quote]
sorry未講清楚, 我諗個問題係寫一個[url=http://en.wikipedia.org/wiki/Quine_(computing)]Quine[/url] (output 自己source code, 之後寫入另一個 .cpp(同folder))
我search 有source code做[url=http://en.wikipedia.org/wiki/Quine_(computing)]Quine[/url]  , 但係當加入 ofstream 就error

煙民母親生賤種

*** 作者被禁止或刪除 內容自動屏蔽 ***

darigold 2017-2-26 09:16

這個是 C# 版,它可以 WriteLine 自己的 source code︰[code]class Program
{
    static void Main()
    {
        string tape = @"        string a = @""class Program
{
    static void Main()
    {
        string tape = @"""""" + tape.Replace(""\"""", ""\""\"""") + @"""""";
"";
        System.Console.WriteLine(a + tape);
    }
}";
        string a = @"class Program
{
    static void Main()
    {
        string tape = @""" + tape.Replace("\"", "\"\"") + @""";
";
        System.Console.WriteLine(a + tape);
    }
}[/code]https://github.com/cshung/MiscLab/blob/master/Recursion/Program.cs

有諗辦法 2017-2-26 09:57

[quote]原帖由 [i]just_discuss[/i] 於 2017-2-25 11:49 PM 發表 [url=http://www.discuss.com.hk/redirect.php?goto=findpost&pid=457015677&ptid=26470927][img]http://www.discuss.com.hk/images/common/back.gif[/img][/url]

sorry未講清楚, 我諗個問題係寫一個Quine (output 自己source code, 之後寫入另一個 .cpp(同folder))
我search 有source code做Quine  , 但係當加入 ofstream 就error [/quote]


可能我好膚淺 ,我唔明嘅係 你要抄個 source code 做咩 ,有乜情況會 執行碼 會同 source code 一齊 ;又要做 copy 。我係唔明有乜用 :smile_27:

bluenemo 2017-2-26 21:29

:smile_o12::smile_o12::smile_o12:

Susan﹏汪汪 2017-2-26 21:55

其實樓主只係想做到Quine的效果

而唔係寫個program 來copy program 再run

darigold 2017-2-27 02:06

其實 Quine 本身冇咩用,主要係驗證 Recursion Theorem。

Recursion Theorem 可以用來證明某些關於 program 既問題,例如呢個!

你不可能有一個程序可以決定任何一個程序是否用了最少的 bytes。

證明在這裏,MIN TM is not Turing Recognizable。
[url]http://web.cecs.pdx.edu/~sheard/course/CS581/notes/RecursionTheorem.pdf[/url]

煙民母親生賤種

*** 作者被禁止或刪除 內容自動屏蔽 ***

darigold 2017-2-27 09:47

[quote]原帖由 [i]煙民母親生賤種[/i] 於 2017-2-27 03:43 AM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=457077755&ptid=26470927][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]

我 google 過, 真係睇左幾篇都唔知 quine 有乜用! :fst_008:
[/quote]


我咪話左你知冇用囉,仲問 ……
[quote]
其實 Quine 本身冇咩用,主要係驗證 Recursion Theorem。
[/quote]

darigold 2017-2-28 00:26

解釋 C# Quine 既創建過程。

[url=http://andrew-complexity.blogspot.com/2017/02/recursion-theorem-in-practice-building.html]http://andrew-complexity.blogspot.com/2017/02/recursion-theorem-in-practice-building.html[/url]

tom.care

*** 作者被禁止或刪除 內容自動屏蔽 ***

有諗辦法 2017-2-28 08:51

睇咗 wiki , 明明哋 … 不過有冇人實作過哩 ?

darigold 2017-3-2 07:39

[quote]原帖由 [i]有諗辦法[/i] 於 2017-2-28 08:51 AM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=457135613&ptid=26470927][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
睇咗 wiki , 明明哋 … 不過有冇人實作過哩 ?
[/quote]

呢個係Quine既實作連解釋如何實作既過程!
[url=http://andrew-complexity.blogspot.com/2017/02/recursion-theorem-in-practice-building.html]http://andrew-complexity.blogspot.com/2017/02/recursion-theorem-in-practice-building.html[/url]

有諗辦法 2017-3-2 07:43

[quote]原帖由 [i]darigold[/i] 於 2017-3-2 07:39 AM 發表 [url=http://www.discuss.com.hk/redirect.php?goto=findpost&pid=457249359&ptid=26470927][img]http://www.discuss.com.hk/images/common/back.gif[/img][/url]


呢個係Quine既實作連解釋如何實作既過程!
http://andrew-complexity.blogspot.com/2017/02/recursion-theorem-in-practice-building.html [/quote]


噢 sorry , 我應該講 有冇實際應用嘅例子 ,自我產生程式用喺咩地方 …

darigold 2017-3-3 01:21

[quote]原帖由 [i]有諗辦法[/i] 於 2017-3-2 07:43 AM 發表 [url=http://computer.discuss.com.hk/redirect.php?goto=findpost&pid=457249451&ptid=26470927][img]http://computer.discuss.com.hk/images/common/back.gif[/img][/url]
噢 sorry , 我應該講 有冇實際應用嘅例子 ,自我產生程式用喺咩地方 … [/quote]

其實呢個問題我一樣回應左︰

[quote]
[b]其實 Quine 本身冇咩用,主要係驗證 Recursion Theorem。[/b]
[/quote]


Quine 真係冇用架。就好似有人同你講直角三角形係會遵守畢氏定理,你畫一個試試,果然係喎。
個三角形畫完後有咩用?冇用。
頁: [1]
查看完整版本: C++ 抄自己請教