LINUX.ORG.RU
ФорумTalks

саморешающиеся проблемы.


0

1

Всем известны задачки типа написать программу, выводящую свой собственный код на экран. Некий математик пошел дальше. Он придумал формулу, график которой есть сама эта формула :)

http://mathworld.wolfram.com/TuppersSelf-ReferentialFormula.html

Хоть и старый баян, а все равно весело.

★★☆☆☆
Ответ на: комментарий от Xenius

Ааа... К сожалению думать и распарсить я сейчас не могу.

drull ★☆☆☆
()

Вот что значит познать рекурсию

Siado ★★★★★
()

Баян, в теме про график сисек было.

elverion
()
Ответ на: комментарий от different_thing

>Запощу это на ЛОР ещё через 5 лет. Когда произойдет некая ротация публики.

Я тебе с радостью скажу, что баян.

Zhbert ★★★★★
()

Во-первых, это боян, и во-вторых, этот некий математик жёстко считерил: вот та длиннющая константа n - это по сути закодированный битмап, то есть двухцветная двухмерная картинка...

Deleted
()
Ответ на: комментарий от Deleted

Заменой значения n можно нарисовать что угодно: хоть смайлик, хоть логотип ЛОРа =).

Deleted
()
Ответ на: комментарий от Deleted

Разве аналогичный чит не используется в большинстве «квайнов»? Будь-то вывод собственного кода программой или что другое?

anarquista ★★★★★
()
Ответ на: комментарий от anarquista

> Разве аналогичный чит не используется

вывод собственного кода программой


Программе не нужно из командной строки кормить длинное магическое число, чтобы она себя распечатала.

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

>Программе не нужно из командной строки кормить длинное магическое число, чтобы она себя распечатала.

А как ты иначе график функции сделаешь?

dikiy ★★☆☆☆
() автор топика
Ответ на: комментарий от anarquista

Вот вам программа, печатающая собственный код:

ishtar> 06.06, 12:20 /tmp
cat > catme
#!/bin/sh
cat $0
ishtar> 06.06, 12:20 /tmp
chmod 755 catme
ishtar> 06.06, 12:20 /tmp
./catme 
#!/bin/sh
cat $0
никакого читерства :)

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

А насколько сложно поместить число на график, по идее, это не сложно, да? Небольшой патч, и нормальный график будет, да?

anarquista ★★★★★
()
Ответ на: комментарий от anarquista
#include <stdio.h>

char c[] = {35, 105, 110, 99, 108, 117, 100, 101, 32, 60, 115, 116, 100, 105, 111, 46, 104, 62, 10, 10, 99, 104, 97, 114, 32, 99, 91, 93, 32, 61, 32, 123, 48, 125, 59, 10, 10, 118, 111, 105, 100, 32, 102, 40, 99, 104, 97, 114, 32, 42, 112, 44, 32, 99, 104, 97, 114, 32, 42, 113, 44, 32, 105, 110, 116, 32, 110, 117, 109, 41, 10, 123, 10, 9, 102, 111, 114, 40, 59, 32, 112, 32, 33, 61, 32, 113, 59, 32, 43, 43, 112, 41, 10, 9, 9, 112, 114, 105, 110, 116, 102, 40, 110, 117, 109, 32, 63, 32, 34, 37, 100, 44, 32, 34, 32, 58, 32, 34, 37, 99, 34, 44, 32, 42, 112, 41, 59, 10, 125, 10, 10, 105, 110, 116, 32, 109, 97, 105, 110, 40, 41, 10, 123, 10, 9, 99, 104, 97, 114, 32, 42, 100, 32, 61, 32, 99, 32, 43, 32, 51, 50, 59, 10, 9, 99, 104, 97, 114, 32, 42, 101, 32, 61, 32, 99, 32, 43, 32, 115, 105, 122, 101, 111, 102, 40, 99, 41, 32, 45, 32, 49, 59, 10, 9, 102, 40, 99, 44, 32, 100, 44, 32, 48, 41, 59, 10, 9, 102, 40, 99, 44, 32, 101, 44, 32, 49, 41, 59, 10, 9, 102, 40, 100, 44, 32, 101, 44, 32, 48, 41, 59, 10, 9, 114, 101, 116, 117, 114, 110, 32, 48, 59, 10, 125, 10, 0};

void f(char *p, char *q, int num)
{
	for(; p != q; ++p)
		printf(num ? "%d, " : "%c", *p);
}

int main()
{
	char *d = c + 32;
	char *e = c + sizeof(c) - 1;
	f(c, d, 0);
	f(c, e, 1);
	f(d, e, 0);
	return 0;
}
Manhunt ★★★★★
()
Ответ на: комментарий от anarquista

Мы читаем только файл «нашей программы», так что - никакого читерства :)

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от dikiy

> А как ты иначе график функции сделаешь?

Магическое число должно распечатываться вместе с формулой. Тогда будет более честно.

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

я было подумал, что вам не нравится само использование волшебного числа как такового, а не отсутствие его на графике в явном виде.

anarquista ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.