TPI - program ktory sam się drukuje

0

Witam, mam ciekawy problem. W tym semestrze mam przedmiot Teoretyczne Podstawy Informatyki i dostaliśmy zadanie dla chętnych: napisać program który sam drukuje swoją treść (nie można użyć plików, ani nic z tych rzeczy). Jestem prawie pewien, że nie da się tego zrobić w skończonym czasie, ale moge sie mylić...

0

Jak drukuje swoją treść? W asmie, w tym w czym został napisany czy jak? Możesz trochę dokładniej?

0

Swój kod, przed kompilacją oczywiście.

0

da się

0

jedynie w .NET możesz odtworzyć kod ze skompilowanego pliku, w innym nie da rady - jedynie tak jak by wyglądał pisany w assemblerze

0

Jeszcze jedno pytanie: jaki to język? Jeżeli np. python to jak się uruchomi pusty plik na pythonie to nic się nie stanie - patrz wydrukuje sam siebie :-) . Jeżeli C to może jakiś cwany trik z preprocesorem chociaż wątpie - jak dla mnie to tak jakby rekurencja bez warunku końcowego.

0

Dzięki Qyon :)

@math_expr
Wszystko jedno - to uniwersalny przedmiot. W zadanku nie chodzi o cwane myki z pustymi execkami czy coś :P

0

http://pl.wikipedia.org/wiki/Quine

I tak najbardziej wymiatający jest kod, który wtedy (przy poprzedniej dyskusji na ten temat) podałem:
http://4programmers.net/Forum/188419#id188419 :P

I w C# też się da, chyba na Wiki znalazłem kiedyś:

using System;
namespace quine
{
  class Program
  {
    [STAThread]
    static void Main(string[] args)
    {
      string s = "using System;{0}namespace quine{0}{2}{0}{1}class Program{0}
{1}{2}{0}{1}{1}[STAThread]{0}{1}{1}static void Main(string[] args){0}{1}{1}{2}{0}{1}{1}{1}
string s = {4}{6}{4};{0}{1}{1}{1}Console.Write(s, Environment.NewLine, {4}{5}t{4}, {4}{2}
{4}, {4}{3}{4}, {4}{5}{4}{4}, {4}{5}{5}{4}, s);{0}{1}{1}{3}{0}{1}{3}{0}{3}";
      Console.Write(s, Environment.NewLine, "\t", "{", "}", "\"", "\\", s);
    }
  }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1