powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Ну что... с пятницей чтоли
19 сообщений из 94, страница 4 из 4
Ну что... с пятницей чтоли
    #39873169
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант проще, без экзотики.
Исходник
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
%% по спирали, начиная с А(1,1), по часовой стрелке, 
%% по принципу левой руки в лабиринте: Ползти червяком прямо,
%% пока ползётся, затем повернуть направо и снова прямо.
clear all; n= 7; m= 5; ...
A= zeros(n,m); t=1; x2= 1; y2= 1; A(1,1)= t; x0=x2; y0=y2; ...
while t<n*m
      x0= x2; y0= y2;
      for x= x0+1:m 
        if A(y0,x)==0 t= t+1; A(y0,x)= t; x2= x; else  break,  end; 
      end; ...   
  
      x0= x2; y0= y2;
      for y= y0+1:n 
        if A(y,x0)==0 t= t+1; A(y,x0)= t; y2= y; else  break,  end;
      end; ...   
        
      x0= x2; y0= y2;
      for x= x0-1:-1:1 
        if A(y0,x)==0 t= t+1; A(y0,x)= t; x2= x; else  break, end;
      end; ...   
         
      x0= x2; y0= y2;
      for y= y0-1:-1:1
        if A(y,x0)==0 t= t+1; A(y,x0)= t; y2= y; else  break, end;
      end; ...   
end; [n, m], A, t

Данные
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
[n, m] =
     7     5
A =
     1     2     3     4     5
    20    21    22    23     6
    19    32    33    24     7
    18    31    34    25     8
    17    30    35    26     9
    16    29    28    27    10
    15    14    13    12    11
t =   35

...
Рейтинг: 0 / 0
Ну что... с пятницей чтоли
    #39873349
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПочему? Вместо 1,2,...,9 сделай 9,8,...,1.
Потому что в такой матрице невозможно раскрутить спираль от центра без разрывов.
...
Рейтинг: 0 / 0
Ну что... с пятницей чтоли
    #39873359
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonполудухпереформатировал
как лучше?
Код: plaintext
1.
2.
    else if     (x == k + q - 1)        {r = y - k + q;}
    else if     (y == k + q - 1)        {r = k - x + q * 3 - 2;}



Это ужасно. Оставь как было.
это ты щас выступил против главного фундамента баз данных - табличной структуры
ни много, ни мало
смело
...
Рейтинг: 0 / 0
Ну что... с пятницей чтоли
    #39873363
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovDima TПочему? Вместо 1,2,...,9 сделай 9,8,...,1.
Потому что в такой матрице невозможно раскрутить спираль от центра без разрывов.
Почему? Например сторона 7.
Было
Код: plaintext
1.
2.
3.
4.
5.
6.
  1  2  3  4  5  6  7
 24 25 26 27 28 29  8
 23 40 41 42 43 30  9
 22 39 48 49 44 31 10
 21 38 47 46 45 32 11
 20 37 36 35 34 33 12
 19 18 17 16 15 14 13
стало
Код: plaintext
1.
2.
3.
4.
5.
6.
 49 48 47 46 45 44 43
 26 25 24 23 22 21 42
 27 10  9  8  7 20 41
 28 11  2  1  6 19 40
 29 12  3  4  5 18 39
 30 13 14 15 16 17 38
 31 32 33 34 35 36 37

Или разговор о чем-то другом?
ИсходникИсходник тут 21987886 , для обратной выдачи сменить вывод на
Код: plaintext
1.
printf("%3d", n*n+1 - spiral(n, x, y));

...
Рейтинг: 0 / 0
Ну что... с пятницей чтоли
    #39873367
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
полудухmaytonпропущено...

Это ужасно. Оставь как было.
это ты щас выступил против главного фундамента баз данных - табличной структуры
ни много, ни мало
смело

Нет. Я следовал конвенциям от Google/Oracle.
...
Рейтинг: 0 / 0
Ну что... с пятницей чтоли
    #39873991
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПочему? Например сторона 7.
В оригинальном топике речь шла о неквадратных матрицах.
В твоём примере было
Код: plaintext
1.
2.
3.
 1  2  3  4  5  6  7
16 17 18 19 20 21  8
15 14 13 12 11 10  9
 
стало
Код: plaintext
1.
2.
21 20 19 18 17 16 15
 6  5  4  3  2  1 14
 7  8  9 10 11 12 13
...
Рейтинг: 0 / 0
Ну что... с пятницей чтоли
    #39874904
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мож уже и было.
То же самое в браузере, с выводом на экран, просто побаловаться. Я не умею в динамике управлять шириной кнопок в браузере, это надо наверное через стили.

charset="windows-1251"

жать в след-щем порядке:
[N,M] - много не переварит
*new
[start]
*F5

P.S поля отмеченные * обязательны,
остальные необязательны - если, конечно, не интересно.
Дважды *new можно только, если клетки не вывелись на экран.
...
Рейтинг: 0 / 0
Ну что... с пятницей чтоли
    #39875580
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересный видос про кривые Гилберта-Пеано.

[spoiler]
YouTube Video
...
Рейтинг: 0 / 0
Ну что... с пятницей чтоли
    #39875581
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мысли.

1. Универсальная формула перехода от многомерных координат одномерным. С сохранением
относительной стационарности точек.

2. Связь с частотным пространством (Frequency Space) я не очень понял. Но интересно было-бы понять.


3.

Прочее. Практические смыслы которые я знал до этого видоса. Кривая гилберта может быть использована
для архивации картинок. Есть интересное свойство. Любые две соседние точки отличаются не более чем на 1
в на растянутой кривой и в разложении ее на 2 -3 -4 и более мерные пространства. Грубо говоря расстояние
Манхеттена между двумя соседями - всегда равно единице.

Еще один смысл - аллокация диапазонов IP адресов и даже IPv6 которые трудно визуально нарисовать зигзагом
или спиралью. Но в Гилберт укладывается хорошо. Это практический смысл из топика Географии линк на который
я приводил.

Есть какая-то связь с кодом Грея. По крайней мере в разности соседних точек гилбертова пространства.
...
Рейтинг: 0 / 0
Ну что... с пятницей чтоли
    #39875589
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот печально известная мадам Лизавета оцифрована мной и обрезана где-то на квадрат 256 на 256 пикселов.
Здесь кратность степени двойки нужна для Гильберта.
...
Рейтинг: 0 / 0
Ну что... с пятницей чтоли
    #39875590
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Некий концептуальный код для перехода от растра к одной длинной линии.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
        BufferedImage src = ImageIO.read(new FileInputStream("Mona-Lisa-crop-256x256.png"));

        BufferedImage dest = new BufferedImage(src.getWidth(), src.getHeight(), src.getType());

        IPixIterator iPixIterator = new GilbertPixelIterator(256);

        IPixIterator destIterator = new LinearPixIterator(256, 256);

        while(iPixIterator.next()) {
            destIterator.next();
            int x = iPixIterator.getX();
            int y = iPixIterator.getY();
            int pixel = src.getRGB(x,y);
            dest.setRGB(destIterator.getX(), destIterator.getY(), pixel);
        }


Линия завёрнута в обычный обход слева направо сверху вниз чтоб опять-же иметь возможность ее видеть.
...
Рейтинг: 0 / 0
Ну что... с пятницей чтоли
    #39875633
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonГрубо говоря расстояние Манхеттена между двумя соседями - всегда равно единице.

точнее так: между последовательными соседями
...
Рейтинг: 0 / 0
Ну что... с пятницей чтоли
    #39875644
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мысли лучше выражать не так вяло. Я всё ждал, когда мэйтон после намеков перейдёт к жипегу. От себя могу сказать. В инете написано (можно поискать), что жипеговские квадратики они (ж-эксперты) линеаризовали диагональным зиг-загом, ожидая, возможно справведливо, что так близкие на плоскости точки чаще будут рядом на прямой, чем когда построчно. И значит будут более коррелированы (стоит читать как более плавные), значит будет меньше скачков, меньше ультракоротких волн в разложении Ф., будет выше сжатие блока при том же качестве.
Но у меня есть сомнения в районе диагонали блоков. Ещё есть "блочный эффект" на границах и маленький размер блока (возможно не только по этим 2-м причинам).
Возможно (судя только по "мыслям"), в ролике имелось ввиду это. Теперь скорости позволяют.
...
Рейтинг: 0 / 0
Ну что... с пятницей чтоли
    #39875648
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не планировал обсуждать JPEG в этом топике. Да и что в нем обсуждать. Это старая лошадь и мне
было-бы интереснее обсуждать его замены.
...
Рейтинг: 0 / 0
Ну что... с пятницей чтоли
    #39875651
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тем не менее, связь с волнами для сжатия имхо такая. И, кстати, м.б. одинаково применима для 1-мерного Ф (например, как в жипеге) и для 2-мерного Ф. А то что-то 2-мерное до сих пор в загоне у всех.
...
Рейтинг: 0 / 0
Ну что... с пятницей чтоли
    #39875714
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JPEG - это lossy.

Я на хабре где-то видел статью где с помощью нейрос-сети прогнозируется цвет пиксела
на основе его соседей сверху и слева. При этом ошибка прогноза кодируется отдельно как слой
и сжимается. Интересный подход. Я не помню его эффективность и вряд-ли он превышает
PNG. Но сами идея интересна.

На заре изучения этих методов когда я еще учился в универе у меня была идея - рассматривать
lossy сжатие так. Берем картинку и гоним по ней очень грубый ФНЧ с периодом типа половина
размера картинки. Детектируем локальный всплеск. Создаем гладкую функцию типа Гаусса
(колокольчик) которая должна дать компенсацию для этого всплеска. Накладываем на оригинал.
Далее гоним ФНЧ с более высокой частотой. И так далее.

Картинка раскладывается на суперпозицию "колокольчиков". Сжатие останавливаем тогда, когда
сами решим что детальность изображения достаточна для восприятия или мы не превысили некий
коэффциниент полезного соотношения размеров оригинала и вектора колокольчиков.
...
Рейтинг: 0 / 0
Ну что... с пятницей чтоли
    #39875732
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ни чуть не лучше прогнозирует, чем Байесовы вероятности. Конечно, если сетка не вычисляет что-нить типа "градиентов освещённости". Зато 100пудов тормозиловей. А если градиенты, то и область применимости ограничена естественными сценами.

А пока ты Гауссов мучал, перешли на вейвлеты - в принципе, те же "пачки" Ф. или гладкий Хаар. Всё уже давно придумано за нас. К тому же у Ф. одна из самых быстрых скорость сходимости.

Автоматические показатели качества изображения - отдельная и нелёгкая задача. Хорошо, когда есть оригинал.
...
Рейтинг: 0 / 0
Ну что... с пятницей чтоли
    #39875734
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я когда думал о колокольчиках - про вейвлеты и слыхом ни слыхал. Да и был это кажется 1996 год.
А первый работающий кодек от LuraWave был анонсирован где-то в 2000х.
...
Рейтинг: 0 / 0
Ну что... с пятницей чтоли
    #39884569
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот. Чисто случайно нашел пример из книги

THE FIRST 10
PROLOG PROGRAMMING
CONTESTS


По заданию - рисует спираль. Сорян за плохое форматирование. Из PDF не удается грамотно скопировать
в clipboard.

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
:- use_module(contestlib, [writeN/2, for/3, int_width/2, write_int/2]).
spiral(N,M) :-
NM is N*M,
int_width(NM,Width),
Width1 is Width + 1,
for(I,1,N),
nl,
for(J,1,M),
distance(N,M,I,J,Distance),
write_int(Distance,Width1),
fail.
spiral(_,_).
distance(_,_,1,J,D) :- !, D is J -
distance(_,M,I,M,D) :- !, D is M +
distance(N,M,N,J,D) :- !, D is N +
distance(N,M,I,1,D) :- !, D is 2*N
distance(N,M,I,J,D) :-
N1 is N - 2,
M1 is M - 2,
I1 is I - 1,
J1 is J - 1,
distance(N1,M1,I1,J1,D1),
D is 2*N + 2*M + D1 - 4.
1 + 1.
I - 2 + 1.
2*M - J - 2 + 1.
+ 2*M - I - 3 + 1.
...
Рейтинг: 0 / 0
19 сообщений из 94, страница 4 из 4
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Ну что... с пятницей чтоли
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]