Ровно 3 нулевых бита или не менее 3х нулевых бит?
Вид для печати
Комбинаторику не изучал, но выше приведённое будет работать только для отличающихся друг от друга объектов (букв, фруктов, и т.п.).
Три нулевых бита одинаковы. Значит, количество комбинаций всё-таки меньше.
Доказательство "в лоб".
Посчитаем количество возможных перестановок для девяти бит. :)
Первый нулевой бит может занять любое из девяти положений, второй любое из восьми оставшихся, третий - из семи, .....
9*8*7*6*5*4*3*2*1 = 362880
Но все мы знаем, что в девять бит влазит только 256*2 = 512 возможных комбинаций вообще. :)
Нужно посчитать число слов 9-битного двоичного кода с весом 6. Но посчитаем все
Вес - Число слов
0 - 1
1 - 9
2 - 36
3 - 84
4 - 126
5 - 126
6 - 84
7 - 36
8 - 9
9 - 1
т.е. 9-битных комбинаций ровно с тремя нулями 84.
Строка треугольника Паскаля при n=9
Все верно это комбинаторика, простейшая задача на сочетание 3 из 9.
C(3 9)=9!/(3!(9-3)!)=84
Вроде в школе походят.
Не зная матана, я бы засомневался, получив такой результат
решил побоянить (вместо HL юзаю BC чтоб точки рисовать)
Выглядит кстати симпатично.Код:ORG #8000
START
IN A,(#FE)
AND #1F
CP #1F
RET NZ
XRND
LD BC,#0001
LD A,B
RRA
LD A,C
RRA
XOR B
LD B,A
LD A,C
RRA
LD A,B
RRA
XOR C
LD C,A
XOR B
LD B,A
LD (XRND+1),BC
LD A,#AF
CP B
CALL NC,#22E5
JR START
Лучше чем "стандартный" (х*5+1) у которого прямо вертикальные линии ползут по экрану
(HL сохраняется для красоты, в этом коде не нужно)Код:PUSH HL
LD HL,(RND+1)
ADD HL,HL
ADD HL,HL
RND LD BC,#0000
ADD HL,BC
INC HL
LD (RND+1),HL
POP HL
Однако этот и короче и тоже выглядит норм (в данном разрезе)
Код:LFSR16 LD BC,#0001
SRL B
RR C
JR NC,_SKIP
LD A,#B4
XOR B
LD B,A
_SKIP
LD (LFSR16+1),BC
я уже побоянил:
http://www.pouet.net/prod.php?which=77233
(:
- - - Добавлено - - -
И, кстати, процедурку можно обойти с лимитом Y=176:
http://www.pouet.net/prod.php?which=79773