Результаты VCCC2024

 Объявление результатов немного задержалось, все работы загружены на scene.org, видео презентации(logiker любезно поделился). До публикации работ я думал, что посмотрю на код и опубликую минимальные этюды, но после просмотра исходников отказался от затеи.

Сначала я подумал, что неплохо бы применить RLE, но из-за незнания алгоритма я отказался. Нечто похожее использовал Uris(47 байт):

org $6008
start:
ld hl, archa
ld de, buf+1
l0:
ld b,(hl)
inc hl
push hl
ld l,(hl)
l1:
ld a,(hl)
ld (de),a
rst 16
inc hl
inc de
djnz l1
pop hl
inc hl
dec c
jr nz, l0
archa:
db  8, buf, 6, buf0, 7, buf+14
db 10, buf+13, 10, buf1, 10, buf+33
db 140, buf+32, 200, buf+12
buf0:
db 92, 79, 47, 13, 43, 45
buf1:
db 13, 33
buf:
db 32

Во время проведения я перепробовал несколько вариантов, но остановился на этом:

OpenConsole()
EnableGraphicalConsole(1)

For y=0 To 18
  For x=0 To 18
    ConsoleLocate(x, y)
    Print( Str(y%9) )
    
    ConsoleLocate(x+20, y)
    Print( Str(x%9) )
    
;     c$=" "
    If x%9=0
      If y%9=0
        c$="+"
      Else
        c$="!"
      EndIf
    Else
      If y%9=0
        c$="-"
      Else
        c$=" "
      EndIf
    EndIf

    ConsoleLocate(x+40, y)
    Print( c$ )
    
  Next x
Next y

Input()

Написал код на ассемблере, получил 66 байт:

org $6000
db "+!- "
start
; jr $
ld d,b
ld c,0
ylp:
ld b,0
xlp:
ld e,0
;x%9==0 y%9==0 +  00
;x%9==0 y%9!=0 !  01
;x%9!=0 y%9==0 -  10
;x%9!=0 y%9!=0    11
ld a,b
call mod9
jr z,set1
set 1,e
set1
ld a,c
call mod9
jr z,set2
inc e;set 0,e
set2
; push bc
; ld a,b
; add a,6
; ld b,a
; inc c
; inc c
inc c
  call $200a; B=x,C=y
  dec c
ld a,(de)
rst 16
; pop bc

inc b
ld a,b
cp 19
jr nz,xlp

;Next y
inc c
ld a,c
cp 19
jr nz,ylp

; ld de,msg_b
ld e,msg_b
ld bc,msg_e-msg_b
    call 8252           ; print our string,DE=adr,BC=len

mod9:
d9
sub 9
jr nc,d9
add a,9
ret
msg_b
 db 22,0,8,$5c,$4f,$2F
msg_e
end start

Торопиться было некуда, и код сократился до 54 байт. Какой способ использовать лучше? Наверное, отказаться от позиционирования печати(процедура $200A) и просто выводить последовательно символы? Через годик придется еще раз потренироваться.

Комментарии