Подскажите как перевести эту формулу в псевдокод?
https://www.cs.princeton.edu/courses...her/sld024.htm
Подскажите как перевести эту формулу в псевдокод?
https://www.cs.princeton.edu/courses...her/sld024.htm
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Ты по PureBasic прикалываешься, погугли што ли..
Не нашел файлика, осталась выдранная текстовка
Спасибо. Но я все равно не понял:
откуда 4 и что такое D и U
У меня конечная цель не конвертировать картинки, а получить именно сам узор "чанок" в зависимости от произвольно заданного размера матрицы (чанка).
То есть на выходе псевдо кода хотелось бы получать массив типа:
0 8 2 10 12 4 14 6 3 11 1 9 15 7 13 5
Писал я код по статейке, но куда-то потерял( Вот код, который гоблин написал(для ужясм):
- - - Добавлено - - -Код:;69 bytes -2 device zxspectrum128 ORG #6000 begin matrix: db 0*8,8*8,2*8,10*8 db 12*8,4*8,14*8,6*8 db 3*8,11*8,1*8,9*8 db 15*8,7*8,13*8,5*8 gench: ; For y=0 To 128;;;;;+8 ; For x=0 To 7 ; i=x&3 ; j=y&3 ; II=y>>3 ; If II <= D(i,j) ; Plot(x,y,0) ; Else ; Plot(y,x,RGB(255,255,255)) ; EndIf ; Next x ; Next y ld hl,$4000 ld b,$80;bit weight ld e,0;y for_y: ld d,0;x push hl for_x: push hl ; i=x&3 ; j=y&3 ld a,e;y and 3 ld c,a add a,a add a,a;c ld c,a ld a,d;x and 3 add a,c ld l,a ld h,matrix/256 ld a,e;II=y>>3 ; and %11111000 ; rra:rra:rra cp (hl); If II <= D(i,j) pop hl ;; jr z,plot jr c,noplot plot: ld a,b:or (hl):ld (hl),a noplot: inc h inc d bit 3,d:jr z,for_x pop hl or a:rrc b:jr nc,nonextp inc l nonextp: inc e:bit 7,e:jr z,for_y jr $ end display /d,end-begin savesna "!gc.sna",gench;;begin
упс, нашол.
На выходе получаешь chunk.png
Спасибо. Но мне все таки нужен код именно для получения вот этого
Data.i 0,8,2,10
Data.i 12,4,14,6
Data.i 3,11,1,9
Data.i 15,7,13,5
остальное то отрисовать не сложно. )
Не особо заморачивался алгоритмом, брал готовые матрицы
здесь http://caca.zoy.org/wiki/libcaca/study/2 тожно не особо ясно.
В принципе вроде не сложно, но размерность чанок степени двойки(4х4,8х8,16х16...). Подходит? Если да могу в меру своего косноязычия описать что то типа алгоритма.
Побаловался немного на ассемблере Z80.
Начинается всё с матрицы 1х1 содержащий нолик.
Все промежуточные матрицы хранятся в углу массива 8х8. "Matrix" 8080H
Следующая матрица получается так: (матрица умножается на константу 4, потом 3 раза копируется: (по диагонали с добавлением единички, и по ортам с добавлением 2 и 3) )
Прилагаю ассемблер (sjasmplus) с небольшими комментариями, говорящими метками и нарочитыми подпрограммами, и снапшот.
Последний раз редактировалось Reobne; 21.03.2016 в 11:18. Причина: Смайлик незапланированный убрал
Вкратце
e(n,x,y) - элемент матрицы размерностью 2^n в строке y столбца x
рекурсивная формула
e(n,x,y)=e(n-1,x div 2,y div 2)+e(1,x mod 2,y mod 2)*2^n
матрица E(1)=[[3,1],[0,2]] определяет изначальный паттерн и соответственно элементы e(1,x,y) берутся из нее.
Разница с формулой в стартовом сообщении в использовании в качестве индекса степени, а не размерности.
исправления http://zx-pk.ru/showthread.php?t=263...l=1#post863984
add
Кстати переделать под другую размерность изначального паттерна проще простого, немного обобщаем и
e(n,x,y)=e(n-1,x div r,y div r)+e(1,x mod r,y mod r)*r^n
где r соответственно размерность
Последний раз редактировалось krt17; 21.03.2016 в 13:09.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)