А вот видео - 2019
- Пойманый_маньяк
- Благодарил (а): 407 раз
- Поблагодарили: 695 раз
- Связаться:
Вот эти 4 кб в своё время поразили крепко.Lector.G писал(а) ↑ 04 дек 2019 18:44: Cтарый добрый ассемблерный mars.exe под dos размером в 4кб
Четыре килобайта — это две плотно заполненные машинописные страницы.
И это ещё там заголовок на полкило (поскольку файл EXE), итого чистыми 3,5 килобайта.
Как так-то??
№ 813: BadBlock, а свободный космический симулятор Elite в размере 48к тебя не удивляет?))
№ 813: BadBlock, да, умели кодить тогда. А резиденты комовские в несколько десятков или пару сотен байт? )
Вся фича в виртуозном знании архитектуры ПК, кодов проца и ассемблера. Помнится даже соревнования были по ассму, кто больше функциональности запихнет в меньшее количество байт.
ЗЫ В mars.exe прикол даже не в размере проги. Там, если посмотреть видео до конца, оно не чисто циклическое, а с остановками и поперечным перемещением. А это еще довесок.
Нужно смотреть содержимое в кодах, там сразу видно .ком или .ехе.
Вся фича в виртуозном знании архитектуры ПК, кодов проца и ассемблера. Помнится даже соревнования были по ассму, кто больше функциональности запихнет в меньшее количество байт.
ЗЫ В mars.exe прикол даже не в размере проги. Там, если посмотреть видео до конца, оно не чисто циклическое, а с остановками и поперечным перемещением. А это еще довесок.
Некоторые умельцы .комы после сборки просто переименовывали в .ехе . ))BadBlock писал(а) ↑ 06 дек 2019 02:51: И это ещё там заголовок на полкило (поскольку файл EXE), итого чистыми 3,5 килобайта.
Нужно смотреть содержимое в кодах, там сразу видно .ком или .ехе.
кто-то открыл для себя мир автоблогеров?
оффтоп:Lector.G писал(а) ↑ 06 дек 2019 12:58: Некоторые умельцы .комы после сборки просто переименовывали в .ехе . ))
Нужно смотреть содержимое в кодах, там сразу видно .ком или .ехе.
Припомнился случай произошедший с отцом в 2002м.
на форуме IXBt зашла речь про сжатие данных и отец, поиздевавшийся всласть над всеми критиками, предложил любому спор:
Ажиотаж был создан и вызов был принят неким Vladimir RybinkinГотов с любым желающим заключить пари на следующих условиях:
1. Я творю файл размером до 10Mb.
2. Я утверждаю, что в течении месяца невозможно сделать self-экстрактор (исполняемый файл), генерирующий мой файл и размером меньший, чем оный.
3. Я плачу $1000 любому, кто заплатит мне $10 и опровергнет моё утверждение (заплатившему я в течении недели пересылаю свой файл и в течении следующего месяца жду опровержение в виде self-экстрактора).
В итоге месяц спустя результат не выдал ни он, ни кто-либо еще.
А отец выдал результат со сжатием не на 1%, а до 1%.
Вместо 10$ проигравший отвез букет цветов старшей сестре на ДР, она была сильно удивлена.
Сама программка (на Delphi):
Показать
program Rybinkin;
{$APPTYPE CONSOLE}
const
// prime index 127=0,12,17,21,x,23,x,x; 257=24
mask:array[0..7] of byte=(127,191,223,239,13*19{247},251,11*23{253},2*127{254});
prim:integer=30103623; //$01cb5847
curr:integer=773497; //$000bcd79
type
pmap=array[0..$000fffff] of byte;
pm=^pmap;
var
map: pm;
f: file of pmap;
i,j: integer;
begin
getmem(map,$00100000);
FillChar(map^,$00100000,255);
for i:=1 to $00800000 do
begin
if curr>$007fffff then
begin
j:=(curr and $007fffff) shr 3;
map^[j]:=map^[j] and mask[curr and 7];
end;
curr:=curr shl 1;
if curr>$00ffffff then
curr:=curr xor prim;
end;
Assign(f,'1');
Rewrite(f);
Write(f,map^);
Close(f);
end.
Показать
Итак, некоторые пояснения.
Возможность сжать данные напрямую зависит от наличия в этих данных каких-либо закономерностей. Надеюсь, в результате месячных экспериментов, в этом убедился даже мой оппонент.
Без априорной информации о природе данных, обнаружить какие-либо закономерности в них можно (в разумное время) только путем статистического анализа их. Попытки найти алгоритм, генерирующий входные данные заведомо обречены, просто по причине слишком большого числа возможных вариантов. Даже, если есть некая информация о природе данных (используемых алгоритмах генерации), часто невозможно найти конкретные способы генерации из-за очень больших проблем с числом вариантов.
Вот на этом и был построен мой вариант.
Преамбула.
Есть такое понятие, как линейные реккурентные последовательности. В данном случае - двоичные. Это просто последовательности битов, образованные следующим образом: берется произвольные (не все равные 0) n битов, а каждый следующий определяется суммой (по модулю 2, есстно) некоторых (фиксированных) из n предыдущих. Простейшая конструкция, имеющая богатую теорию и массу применений.
Конечно, такая последовательность будет циклической. Но размер цикла зависит от того, какие именно из "предыдущих" n битов складываются. Если эти биты соответствуют коэффициентам двоичного многочлена над полем P2, неприводимого и содержащим среди своих корней первообразный корень n-й степени, то длина цикла будет ровно 2^n-1. Такие многочлены принято называть примитивными, а соответствующие последовательности - линейными реккурентными последоватедьностями максимальной длины(LRSM).
C LRSM связана, так называемая "функция расстояния" - по начальной комбинации n битов и заданной комбинации n битов, определяющая номер "места" заданной комбинации в LRSM с заданным началом. Именно эта функция претендует на роль функции максимальной Шенноновской сложности.
Еще 30 лет назад я это узнал от одного из самых крупных в мире специалистов по криптографии, доктора ф-м наук М.М.Глухова, обучаясь на факультете криптографии тогдашней Высшей Школы КГБ.
Ну а функции максимальной по Шеннону сложности, априори не имеют в своем представлении каких-либо закономерностей...
Функцию расстояния можно задать просто приписав первой половине n-мерных битовых векторов LRSM n-го порядка 0, а второй - 1. Что и было сделано.
Получение супер-пупер последовательности.
Взят двоичный примитивный многочлен 24-й степени, коэффициенты которого представлены константой prim. Взят начальный 24-х битовый вектор, представленный константой curr. Далее генерируется LRSM последовательность и первым 2^23 векторам этой последовательности присваивается значение 0. При генерации используется алгоритм, описанный Д.Кнутом во 2-м томе "Искусства программирования на ЭВМ" (стр. 44-46). Он генерирует LRSM в "обратном" порядке, поэтому "функция расстояния" получается инвертированной. Вторую половину полученной функции расстояния, заданной таблично, я и выдал.
Ввиду уверенности в её сложности, я был спокоен отностительно отсутствия статистических закономерностей в её представлении, а подобрать константы curr (их могёт быть 2^24-1) и prim (а их ровно Fi(2^24-1)/24, где Fi - функция Эйлера) за месяц весьма затруднительно. Вот и вся премудрость...
Именно кой-какие знания теории дали мне возможность безбоязненно ставить $1000 супротив $10.
Практика, практикой, а знать теорию тоже невредно!
Возможность сжать данные напрямую зависит от наличия в этих данных каких-либо закономерностей. Надеюсь, в результате месячных экспериментов, в этом убедился даже мой оппонент.
Без априорной информации о природе данных, обнаружить какие-либо закономерности в них можно (в разумное время) только путем статистического анализа их. Попытки найти алгоритм, генерирующий входные данные заведомо обречены, просто по причине слишком большого числа возможных вариантов. Даже, если есть некая информация о природе данных (используемых алгоритмах генерации), часто невозможно найти конкретные способы генерации из-за очень больших проблем с числом вариантов.
Вот на этом и был построен мой вариант.
Преамбула.
Есть такое понятие, как линейные реккурентные последовательности. В данном случае - двоичные. Это просто последовательности битов, образованные следующим образом: берется произвольные (не все равные 0) n битов, а каждый следующий определяется суммой (по модулю 2, есстно) некоторых (фиксированных) из n предыдущих. Простейшая конструкция, имеющая богатую теорию и массу применений.
Конечно, такая последовательность будет циклической. Но размер цикла зависит от того, какие именно из "предыдущих" n битов складываются. Если эти биты соответствуют коэффициентам двоичного многочлена над полем P2, неприводимого и содержащим среди своих корней первообразный корень n-й степени, то длина цикла будет ровно 2^n-1. Такие многочлены принято называть примитивными, а соответствующие последовательности - линейными реккурентными последоватедьностями максимальной длины(LRSM).
C LRSM связана, так называемая "функция расстояния" - по начальной комбинации n битов и заданной комбинации n битов, определяющая номер "места" заданной комбинации в LRSM с заданным началом. Именно эта функция претендует на роль функции максимальной Шенноновской сложности.
Еще 30 лет назад я это узнал от одного из самых крупных в мире специалистов по криптографии, доктора ф-м наук М.М.Глухова, обучаясь на факультете криптографии тогдашней Высшей Школы КГБ.
Ну а функции максимальной по Шеннону сложности, априори не имеют в своем представлении каких-либо закономерностей...
Функцию расстояния можно задать просто приписав первой половине n-мерных битовых векторов LRSM n-го порядка 0, а второй - 1. Что и было сделано.
Получение супер-пупер последовательности.
Взят двоичный примитивный многочлен 24-й степени, коэффициенты которого представлены константой prim. Взят начальный 24-х битовый вектор, представленный константой curr. Далее генерируется LRSM последовательность и первым 2^23 векторам этой последовательности присваивается значение 0. При генерации используется алгоритм, описанный Д.Кнутом во 2-м томе "Искусства программирования на ЭВМ" (стр. 44-46). Он генерирует LRSM в "обратном" порядке, поэтому "функция расстояния" получается инвертированной. Вторую половину полученной функции расстояния, заданной таблично, я и выдал.
Ввиду уверенности в её сложности, я был спокоен отностительно отсутствия статистических закономерностей в её представлении, а подобрать константы curr (их могёт быть 2^24-1) и prim (а их ровно Fi(2^24-1)/24, где Fi - функция Эйлера) за месяц весьма затруднительно. Вот и вся премудрость...
Именно кой-какие знания теории дали мне возможность безбоязненно ставить $1000 супротив $10.
Практика, практикой, а знать теорию тоже невредно!
№ 819: bubuka, меня всегда передергивало от указателей и ссылочных переменных на Паскале. Сишные как-то органичнее.
задача минимизации кода была в данном случае важнее, я думаю ))Lector.G писал(а) ↑ 06 дек 2019 19:25: № 819: bubuka, меня всегда передергивало от указателей и ссылочных переменных на Паскале. Сишные как-то органичнее.
№ 822: bubuka, без сомнений.
- Пойманый_маньяк
- Благодарил (а): 407 раз
- Поблагодарили: 695 раз
- Связаться:
Аналогично после Паскаля какое-то время передергивает от сишного синтаксиса с амперсандом, который еще и логическое И, и звездочкой, которая еще и умножениеLector.G писал(а) ↑ 06 дек 2019 19:25: № 819: bubuka, меня всегда передергивало от указателей и ссылочных переменных на Паскале. Сишные как-то органичнее.
Потом привыкаешь.
"Эти кляти паскали наш nil null'ом называют!" (с)
нежные какие.. особенности языка заставляют их нервничать
№ 824: Пойманый_маньяк, одна звездочка это еще что, вот две или даже три подряд... А если еще и скобки вклинились между...ммм...кайф
№ 825: Manfred, наоборот, много * в языке так феерично, некая недосказанность и загадка. Тем более, когда без стрингов.
ЗЫ
№ 825: Manfred, наоборот, много * в языке так феерично, некая недосказанность и загадка. Тем более, когда без стрингов.
ЗЫ
- Cpt.Heidegger
- Благодарил (а): 54 раза
- Поблагодарили: 244 раза
- Пойманый_маньяк
- Благодарил (а): 407 раз
- Поблагодарили: 695 раз
- Связаться:
Видео дня! В Англии уничтожили 100-метровые башни! Рухнули за 4 секунды
https://youtu.be/udR7nUiiJn0
https://youtu.be/udR7nUiiJn0
Чето там нихрена не 4 секунды на видео. Не меньше 10.Пойманый_маньяк писал(а) ↑ 07 дек 2019 19:47: Рухнули за 4 секунды
- Пойманый_маньяк
- Благодарил (а): 407 раз
- Поблагодарили: 695 раз
- Связаться:
Ну извиниcomm писал(а) ↑ 07 дек 2019 21:52:Чето там нихрена не 4 секунды на видео. Не меньше 10.Пойманый_маньяк писал(а) ↑ 07 дек 2019 19:47: Рухнули за 4 секунды
Название не мое - скопировано из Youtube.
Припоминаю сейчас апелляцию на 4,5 балла за мою работу на экзамене при поступлении на ЭМФ САРФТИ в 98-м, когда все, кому я помогал на экзамене получили 5. Полбалла вы мне сняли за излишнее объявление переменной в бейсике.Lector.G писал(а) ↑ 06 дек 2019 19:25: № 819: bubuka, меня всегда передергивало от указателей и ссылочных переменных на Паскале. Сишные как-то органичнее.
Мне кажется, мое согласие с вами, и фраза: "курица - не птица, бейсик - не язык, но нас в школе ничему другому не учили", вас удовлетворила и оценка была исправлена на 5 )
"Океанариум в Чаттануге, штат Теннесси, подключил рождественскую елку к аквариуму, в котором обитает электрический угорь. Яркость иллюминации на елке зависит от количества электричества, которое угорь по кличке Мигель Уотсон вырабатывает во время стресса или для поиска добычи."
сам ты башня? для тебя все что из кирпича и высокое все башни?Пойманый_маньяк писал(а) ↑ 07 дек 2019 19:47: Видео дня! В Англии уничтожили 100-метровые башни! Рухнули за 4 секунды
https://youtu.be/udR7nUiiJn0
- Cpt.Heidegger
- Благодарил (а): 54 раза
- Поблагодарили: 244 раза
Из кирпича?
Градирни из железобетона всегда - разве нет?
Градирни из железобетона всегда - разве нет?
Барсука-медоеда почти задушил питон, но тут питона отвлекли шакалы, и медоед вырвался.
В свою очередь, медоед прогнал шакалов и решил сам съесть питона.
https://cdn.trinixy.ru/uploads/files/20 ... _piton.mp4
В свою очередь, медоед прогнал шакалов и решил сам съесть питона.
https://cdn.trinixy.ru/uploads/files/20 ... _piton.mp4
Вот это поворот!BadBlock писал(а) ↑ 11 дек 2019 05:05: Барсука-медоеда почти задушил питон, но тут питона отвлекли шакалы, и медоед вырвался.
В свою очередь, медоед прогнал шакалов и решил сам съесть питона.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 14 гостей