vak: (Бодхидхарма)
[personal profile] vak
Вот вам файл quine.gz, ужатый с помощью известной утилиты gzip. Попробуйте его распаковать.

Глянем, что у него внутри. Запомним контрольную сумму.
$ hd quine.gz 
000000  1f 8b 08 08 00 00 00 00 00 00 72 65 63 75 72 73  ..........recurs
000010  69 76 65 00 92 ef e6 e0 60 00 83 a2 d4 e4 d2 a2  ive.....`.......
000020  e2 cc b2 54 06 00 00 17 00 e8 ff 92 ef e6 e0 60  ...T...........`
000030  00 83 a2 d4 e4 d2 a2 e2 cc b2 54 06 00 00 17 00  ..........T.....
000040  e8 ff 42 12 46 16 06 00 05 00 fa ff 42 12 46 16  ..B.F.......B.F.
000050  06 00 05 00 fa ff 00 05 00 fa ff 00 14 00 eb ff  ................
000060  42 12 46 16 06 00 05 00 fa ff 00 05 00 fa ff 00  B.F.............
000070  14 00 eb ff 42 88 21 c4 00 00 14 00 eb ff 42 88  ....B.!.......B.
000080  21 c4 00 00 14 00 eb ff 42 88 21 c4 00 00 14 00  !.......B.!.....
000090  eb ff 42 88 21 c4 00 00 14 00 eb ff 42 88 21 c4  ..B.!.......B.!.
0000a0  00 00 00 00 ff ff 00 00 00 ff ff 00 17 00 e8 ff  ................
0000b0  42 88 21 c4 00 00 00 00 ff ff 00 00 00 ff ff 00  B.!.............
0000c0  17 00 e8 ff 42 12 46 16 06 00 00 00 ff ff 01 08  ....B.F.........
0000d0  00 f7 ff 3d b1 20 85 fa 00 00 00 42 12 46 16 06  ...=. .....B.F..
0000e0  00 00 00 ff ff 01 08 00 f7 ff 3d b1 20 85 fa 00  ..........=. ...
0000f0  00 00 3d b1 20 85 fa 00 00 00                    ..=. .....

$ cksum quine.gz
1746970587 250 quine.gz
Распакуем. Посмотрим, что получилось.
$ gunzip -v quine.gz 
quine.gz:	    0.0% -- replaced with quine

$ hd quine
000000  1f 8b 08 08 00 00 00 00 00 00 72 65 63 75 72 73  ..........recurs
000010  69 76 65 00 92 ef e6 e0 60 00 83 a2 d4 e4 d2 a2  ive.....`.......
000020  e2 cc b2 54 06 00 00 17 00 e8 ff 92 ef e6 e0 60  ...T...........`
000030  00 83 a2 d4 e4 d2 a2 e2 cc b2 54 06 00 00 17 00  ..........T.....
000040  e8 ff 42 12 46 16 06 00 05 00 fa ff 42 12 46 16  ..B.F.......B.F.
000050  06 00 05 00 fa ff 00 05 00 fa ff 00 14 00 eb ff  ................
000060  42 12 46 16 06 00 05 00 fa ff 00 05 00 fa ff 00  B.F.............
000070  14 00 eb ff 42 88 21 c4 00 00 14 00 eb ff 42 88  ....B.!.......B.
000080  21 c4 00 00 14 00 eb ff 42 88 21 c4 00 00 14 00  !.......B.!.....
000090  eb ff 42 88 21 c4 00 00 14 00 eb ff 42 88 21 c4  ..B.!.......B.!.
0000a0  00 00 00 00 ff ff 00 00 00 ff ff 00 17 00 e8 ff  ................
0000b0  42 88 21 c4 00 00 00 00 ff ff 00 00 00 ff ff 00  B.!.............
0000c0  17 00 e8 ff 42 12 46 16 06 00 00 00 ff ff 01 08  ....B.F.........
0000d0  00 f7 ff 3d b1 20 85 fa 00 00 00 42 12 46 16 06  ...=. .....B.F..
0000e0  00 00 00 ff ff 01 08 00 f7 ff 3d b1 20 85 fa 00  ..........=. ...
0000f0  00 00 3d b1 20 85 fa 00 00 00                    ..=. .....

$ cksum quine
1746970587 250 quine
Внутри лежит то же самое, что было изначально! Контрольная сумма совпадает.

Как может быть, чтобы внутри матрёшки лежала опять ровно такая же матрёшка? Объяснение в статье: research.swtch.com/zip

Date: 2026-03-17 07:33 (UTC)
green_fr: (Default)
From: [personal profile] green_fr
Красота какая! Я тоже сразу вспомнил программы, печатающие свой исходник, но это всё равно как-то даже слишком красиво.

Date: 2026-03-17 11:21 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Какая прелесть.

Date: 2026-03-17 13:16 (UTC)
kondybas: (Default)
From: [personal profile] kondybas
Сама идея аттрактора для алгоритма - уже жир, а найти реализацию и подавно.