User Tag List

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 33

Тема: Исключить повторы из массива

  1. #21

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,867
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    где находится тот цикл который надо вызывать?
    С уважением,
    Jerri / Red Triangle.

  2. #22

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,081
    Спасибо Благодарностей отдано 
    88
    Спасибо Благодарностей получено 
    480
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от esl Посмотреть сообщение
    вопрос, а в каком соотношении чтения/записи
    и насколько важно быстродействие записи ?
    а то сделать вставку со сдвигом ??
    Я вообще склоняюсь к тому, что чем меньше чтений и записи, тем лучше.

    ---------- Post added at 19:29 ---------- Previous post was at 19:28 ----------

    Цитата Сообщение от jerri Посмотреть сообщение
    где находится тот цикл который надо вызывать?
    Цикл подразумевается под переходом по RESULT. Я думаю счётчики быстрее всего через половинки индксных регистров делать, всегда так быстрее.

    Код:
    ARRAY	DB 1,3,9,7,5,9,4,3
    
    TEST:	DI
    	LD SP,#BFFF
    
    	LD B,#08
    	LD A,#01
    	LD (CNT2+1),A
    	LD DE,ARRAY+1
    LOOP	LD A,(DE)
    	EXX
    	LD HL,ARRAY
    CNT2	LD BC,01
    	CPIR
    	EXX
    	CALL NZ,RESULT
    	INC DE	
    	LD HL,CNT2+1
    	INC (HL)
    	DJNZ LOOP
    
    	JR $
    
    RESULT	OUT (#FE),A
    	RET
    Последний раз редактировалось drbars; 12.08.2013 в 16:31.

  3. #23

    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от drbars Посмотреть сообщение
    Я вообще склоняюсь к тому, что чем меньше чтений и записи, тем лучше.[COLOR="Silver"]
    я про другое,
    допустим что чтений 10000 а записей всего 100, тогда всю эту хренотень запихиваем ближе к записи, а при чтении вообще про это не задумывемся.

  4. #24

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,081
    Спасибо Благодарностей отдано 
    88
    Спасибо Благодарностей получено 
    480
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от esl Посмотреть сообщение
    я про другое,
    допустим что чтений 10000 а записей всего 100, тогда всю эту хренотень запихиваем ближе к записи, а при чтении вообще про это не задумывемся.
    Исходный массив маленький... 9 или 12 байт всего за фрейм надо обработать.

  5. #25

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    просто убрать последовательные повторения
    вот она разгадка. Сравниваем два последовательных байта, если равны, то ldir на -1 до конца списка.

    ---------- Post added at 16:50 ---------- Previous post was at 16:49 ----------

    комбинация cpir и ldir

  6. #26

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,081
    Спасибо Благодарностей отдано 
    88
    Спасибо Благодарностей получено 
    480
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    вот она разгадка. Сравниваем два последовательных байта, если равны, то ldir на -1 до конца списка.

    ---------- Post added at 16:50 ---------- Previous post was at 16:49 ----------

    комбинация cpir и ldir
    Повторения могут быть не последовательные!

    ---------- Post added at 21:23 ---------- Previous post was at 20:11 ----------

    Продолжаю эксперименты:

    Код:
    CNT1	LD IY,ARRAY
    	LD IX,#0901
    LOOP	LD A,(IY+1)
    	OR A
    	JR Z,NO_CHK
    	LD HL,ARRAY
    CNT2	LD B,#00
    	LD C,LX
    	CPIR
    	CALL NZ,RESULT
    NO_CHK	INC IY
    	INC LX
    	DEC HX
    	JP NZ,LOOP
    
    	JR $
    
    RESULT	OUT (#FE),A
    	RET
    
    
    ARRAY	DB 1,2,3,1,0,3,4,5,6
    Замечания?

    П/П RESULT использует все регистры, в т.ч. альтернативные, всё кроме SP,IX,IY.
    Последний раз редактировалось drbars; 12.08.2013 в 18:49.

  7. #27

    Регистрация
    19.04.2005
    Адрес
    SPb
    Сообщений
    313
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    сортИровать пузырьком. повторы тут и всплывут
    Куплю в СПб 5.25" Robotron или Teac

  8. #28

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,867
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    так сохранять надо регистры и не парить мосх
    Код:
    	ld de,array1
    	ld c,1
    	ld a,(de)
    	inc de
    loop0
            ld b,c
    	ld a,(de)
    	ld hl,array1
    loop2
    	cp (hl)
    	inc hl
    	jr z,loop1
    	djnz loop2
    
    	  push de,bc
    	  call result
              pop bc,de
    loop1	
    	inc de
    	inc c
    	ld a,c
    	cp 8
    	jr nz,loop0
    	ret
    array1	db 1,2,1,3,1,4,1,5


    ---------- Post added at 17:48 ---------- Previous post was at 17:44 ----------

    кстати это чо такое будет?
    Последний раз редактировалось jerri; 12.08.2013 в 18:47.
    С уважением,
    Jerri / Red Triangle.

  9. #29

    Регистрация
    01.03.2005
    Адрес
    Новосибирск
    Сообщений
    2,081
    Спасибо Благодарностей отдано 
    88
    Спасибо Благодарностей получено 
    480
    Поблагодарили
    145 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    так сохранять надо регистры и не парить мосх
    кстати это чо такое будет?
    Я стараюсь не использовать стековые команды PUSH/POP, если есть возможность всё через регистры пустить. Получается быстрее. ну и CPIR это же, а что это за команда?))))))

    Процедура отрисовывает найденый тайл поверх спрайта 1 раз. Нашла 4 тайла в области координат спрайта, нарисовала 4.

  10. #30

    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,089
    Спасибо Благодарностей отдано 
    281
    Спасибо Благодарностей получено 
    70
    Поблагодарили
    49 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если уж сортировать - то не пузырьком, а более эффективным методом.

    Еще есть варианты - хранить исходные числа в таком контейнере, который автоматически сортируется по мере добавления в него элементов. Например, в двоичном дереве. Ну и битовая карта, предложенная выше, тоже хороша.

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 454
    Последнее: 04.01.2017, 00:50

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •