Квайны

Вопросы по языкам программирования Си и С++.
alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Квайны

Сообщение alibek » 05.04.2005 (Вт) 16:52

Случайно наткнулся на этот термин и ссылку. Сходил. Поразился :)

Квайн -- это программа, которая распечатывает сама себя (свой код). Естественно, никаких файловых операций не допускается (т.е. нельзя отправить на печать bas-файл; по определению, исходники недоступны).

Одна из ссылок тут: http://www.nyx.net/~gthompso/quine.htm

Примеры:
Код: Выделить всё
Author: Daniel Martin

#include<stdio.h>
char *a[] = {"\"};\n\n",
   "main() {\n",
   "  int i=0; char *b;\n",
   "  printf(\"#include<stdio.h>\\nchar *a[] = {\\\"\");\n",
   "  while(*a[i]) {\n",
   "    for(b=a[i];*b;b++)\n",
   "      switch(*b) {\n",
   "         case '\\n': printf(\"\\\\n\"); break;\n",
   "         case '\\\\': case '\\\"': putchar('\\\\'); \n",
   "         default: putchar(*b);\n",
   "      } \n",
   "    printf(\"\\\",\\n\\t\\\"\"); \n",
   "    i++;\n",
   "  }\n",
   "  i=0;\n",
   "  while(*a[i]) {printf(a[i]);i++;}\n",
   "}\n",
   ""};

main() {
  int i=0; char *b;
  printf("#include<stdio.h>\nchar *a[] = {\"");
  while(*a[i]) {
    for(b=a[i];*b;b++)
      switch(*b) {
         case '\n': printf("\\n"); break;
         case '\\': case '\"': putchar('\\');
         default: putchar(*b);
      }
    printf("\",\n\t\"");
    i++;
  }
  i=0;
  while(*a[i]) {printf(a[i]);i++;}
}


Код: Выделить всё
Author: Joseph Miller

a$[1]="a$[":a$[2]="]=":a$[3]="q$=chr$(34):for i=1 to 3:?a$[1]str$(i)a
$[2]q$ a$[i]q$ chr$(58);:next i:?a$[3]":q$=chr$(34):for i=1 to 3:?a$[
1]str$(i)a$[2]q$ a$[i]q$ chr$(58);:next i:?a$[3]
Lasciate ogni speranza, voi ch'entrate.

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 05.04.2005 (Вт) 17:19

alibek
Таки несколько раз около года-двух назад конкурсы на программу, выводящую саму себя проскакивали в разных источниках. Лично видел в Xaker'е, Developer.ru...
Самая маленькая вроде около 60(!) байт. Помоему на C, в один оператор printf.

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 06.04.2005 (Ср) 17:56

:shock:
"Прочитал, поразился, проникся" (с)alibek


Вернуться в С/С++

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

    TopList