60 lines
1.4 KiB
Plaintext
60 lines
1.4 KiB
Plaintext
SUB setrightbits (bits(),e,n)
|
|
IF e = 0 OR n <= 0 THEN EXIT SUB
|
|
DIM bits2(0)
|
|
MAT REDIM bits2(1 TO e)
|
|
FOR i = 1 TO e
|
|
LET bits2(i) = bits(i)
|
|
NEXT i
|
|
FOR i = 1 TO e-1
|
|
IF bits(i) = 1 THEN
|
|
LET j = i+1
|
|
DO WHILE j <= i+n AND j <= e
|
|
LET bits2(j) = 1
|
|
LET j = j+1
|
|
LOOP
|
|
END IF
|
|
NEXT i
|
|
FOR i = 1 TO e
|
|
LET bits(i) = bits2(i)
|
|
NEXT i
|
|
END SUB
|
|
|
|
|
|
LET b$ = "010000000000100000000010000000010000000100000010000010000100010010"
|
|
DIM tests$(8, 2)
|
|
LET tests$(1, 1) = "1000"
|
|
LET tests$(1, 2) = "2"
|
|
LET tests$(2, 1) = "0100"
|
|
LET tests$(2, 2) = "2"
|
|
LET tests$(3, 1) = "0010"
|
|
LET tests$(3, 2) = "2"
|
|
LET tests$(4, 1) = "0000"
|
|
LET tests$(4, 2) = "2"
|
|
LET tests$(5, 1) = b$
|
|
LET tests$(5, 2) = "0"
|
|
LET tests$(6, 1) = b$
|
|
LET tests$(6, 2) = "1"
|
|
LET tests$(7, 1) = b$
|
|
LET tests$(7, 2) = "2"
|
|
LET tests$(8, 1) = b$
|
|
LET tests$(8, 2) = "3"
|
|
FOR k = 1 TO 8
|
|
DIM bits(1)
|
|
MAT REDIM bits(1 TO LEN(tests$(k, 1)))
|
|
FOR i = 1 TO LEN(tests$(k, 1))
|
|
LET bits(i) = VAL((tests$(k, 1))[i:i+1-1])
|
|
NEXT i
|
|
LET ub = UBOUND(bits)
|
|
LET n = VAL(tests$(k, 2))
|
|
PRINT USING "n = #; Width e = ##:": n, ub
|
|
PRINT " Input b: "; tests$(k, 1)
|
|
CALL setrightbits (bits(), ub, n)
|
|
PRINT " Result: ";
|
|
FOR i = 1 TO ub
|
|
PRINT STR$(bits(i));
|
|
NEXT i
|
|
PRINT
|
|
PRINT
|
|
NEXT k
|
|
END
|