CSES - Datatähti 2018 alku - Results
Submission details
Task:Fraktaali
Sender:yhyy
Submission time:2017-10-06 18:49:32 +0300
Language:Assembly
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED10
#2ACCEPTED10
#3ACCEPTED10
#4ACCEPTED10
#5ACCEPTED10
#6ACCEPTED10
#7ACCEPTED10
#8ACCEPTED10
#9ACCEPTED10
#10ACCEPTED10
Test results
testverdicttimegroup
#1ACCEPTED0.06 s1details
#2ACCEPTED0.06 s2details
#3ACCEPTED0.05 s3details
#4ACCEPTED0.04 s4details
#5ACCEPTED0.05 s5details
#6ACCEPTED0.06 s6details
#7ACCEPTED0.06 s7details
#8ACCEPTED0.04 s8details
#9ACCEPTED0.05 s9details
#10ACCEPTED0.05 s10details

Code

section	.data
section	.bss
	syote resb 30000000	; syöte
	buf resb 90090000	; tuloste
	asd resb 1
section	.text
	global _start
_start:
	mov	eax, 3
	mov	ebx, 0
	mov	ecx, syote
	mov	edx, 30000000
	int	0x80		; lue syöte
	
	mov	rsi, syote
	mov	rdi, buf
	
	call	read
	mov	rcx, rax	; n
	dec	rcx
	
	mov	al, '#'
	
	mov	r8, 1
	mov	r9, 1025
	stosb
	cmp	rcx, 0
	je	._2
._0:
	mov	rsi, buf
	mov	rdi, buf
	add	rdi, r8
	mov	rdx, buf
	add	rdx, r8
	mov	rbx, buf
	add	rbx, r9
.__0:	
	lodsb
	stosb
	cmp	rsi, rdx
	jl	.__0
	sub	rsi, r8
	sub	rdi, r8
	add	rsi, 1025
	add	rdi, 1025
	add	rdx, 1025
	cmp	rsi, rbx
	jl	.__0
	
	mov	rsi, buf
	mov	rdi, buf
	add	rdi, r9
	mov	rdx, buf
	add	rdx, r8
	mov	rbx, buf
	add	rbx, r9
.__1:	
	lodsb
	stosb
	cmp	rsi, rdx
	jl	.__1
	sub	rsi, r8
	sub	rdi, r8
	add	rsi, 1025
	add	rdi, 1025
	add	rdx, 1025
	cmp	rsi, rbx
	jl	.__1
			
	mov	rsi, buf
	mov	rdi, buf
	add	rdi, r8
	add	rdi, r9
	mov	rdx, buf
	add	rdx, r8
	mov	rbx, buf
	add	rbx, r9
.__2:	
	lodsb
	cmp	al, '.'
	je	.___0
	mov	al, '.'
	jmp	.___1
.___0:	mov	al, '#'
.___1:	stosb
	cmp	rsi, rdx
	jl	.__2
	sub	rsi, r8
	sub	rdi, r8
	add	rsi, 1025
	add	rdi, 1025
	add	rdx, 1025
	cmp	rsi, rbx
	jl	.__2

._1:	
	sal	r8, 1
	sal	r9, 1
	dec	rcx
	cmp	rcx, 0
	jg	._0
._2:
	mov	rdi, buf
	mov	rsi, buf
	mov	rbx, buf
	add	rbx, r9
._3:
	lodsb
	cmp	eax, 0
	je	._4
	stosb
	jmp	._3
._4:	dec	rsi
	mov	al, 10
	stosb
	sub	rsi, r8
	add	rsi, 1025
	
	cmp	rsi, rbx
	jl	._3	
.lopeta:
	call	flush
	mov	rax, 1
	mov	rbx, 0
	int	0x80


;) ******************   flush   ********************* (;
; suoritetaan lopussa niin buf tulostuu
flush:	;! huom sotkee lähes KAIKEN
	mov	rdx, rdi
	sub	rdx, buf
	mov	rax, 4
	mov	rbx, 1
	mov	rcx, buf
	int	0x80
	ret
	
	
;) ******************   read    ********************* (;
;! rsi nykyinen kohta syötteessä
;) laittaa syötteestä yhden luvun rax <- x, rdx <- |x|, rbx <- sign(x)
;! 64-bit
;( sotkee rbx, rdx ja rax)
read:
	mov	rbx, 1
	xor	rdx, rdx
	xor	rax, rax
._:	lodsb
	cmp	al, 0x2d
	je	._1
	cmp	al, 0x30
	jl	._2
	cmp	al, 0x39
	jg	._2
	sub	al, 0x30
	imul	rdx, 10
	add	rdx, rax
	cmp	rdx, 0
	jne	._
	jmp	._3
._1:	mov	rbx, -1
._2:	cmp	rdx, 0
	je	._
._3:	mov	rax, rdx
	imul	rax, rbx
	ret
	
;) ***************** debug_print ******************** (;
;) säilyttää rekisterit
;( aika häviö että 0x80 nollaa r8-r11 =/  )
debug_print:
	push	r8
	push	r9
	push	r10
	push	r11
	push	rdi
	push	rdx
	push	rbx
	push	rax
	push	rcx
	call	print
	call	flush
	pop	rcx
	pop	rax
	pop	rbx
	pop	rdx
	pop	rdi
	pop	r11
	pop	r10
	pop	r9
	pop	r8
	ret
;) ******************  print  ********************* (;
;! rdi tärkeä
;( sotkee rax, rdx, rbx)
print:
	cmp	rax, 0
	jnl	._
	mov	rdx, rax
	mov	al, 0x2d	;-
	stosb
	mov	rax, rdx
	imul	rax, -1
._:	mov	rbx, 0xa
	push	rdi
	mov	rdi, asd
	std
._1:	xor	rdx, rdx
	div	rbx
	xchg	rax, rdx
	add	al, 0x30
	stosb
	xchg	rax, rdx
	cmp	rax, 0
	jne	._1
	cld
	mov	rdx, rsi
	mov	rsi, rdi
	inc	rsi
	pop	rdi
._2:	lodsb
	stosb
	cmp	rsi, asd
	jng	._2
	mov	al, 0x20
	stosb
	mov	rsi, rdx
	ret

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
1

correct output
#

user output
#

Test 2

Group: 2

Verdict: ACCEPTED

input
2

correct output
##
#.

user output
##
#.

Test 3

Group: 3

Verdict: ACCEPTED

input
3

correct output
####
#.#.
##..
#..#

user output
####
#.#.
##..
#..#

Test 4

Group: 4

Verdict: ACCEPTED

input
4

correct output
########
#.#.#.#.
##..##..
#..##..#
####....
...

user output
########
#.#.#.#.
##..##..
#..##..#
####....
...

Test 5

Group: 5

Verdict: ACCEPTED

input
5

correct output
################
#.#.#.#.#.#.#.#.
##..##..##..##..
#..##..##..##..#
####....####....
...

user output
################
#.#.#.#.#.#.#.#.
##..##..##..##..
#..##..##..##..#
####....####....
...

Test 6

Group: 6

Verdict: ACCEPTED

input
6

correct output
##############################...

user output
##############################...

Test 7

Group: 7

Verdict: ACCEPTED

input
7

correct output
##############################...

user output
##############################...

Test 8

Group: 8

Verdict: ACCEPTED

input
8

correct output
##############################...

user output
##############################...

Test 9

Group: 9

Verdict: ACCEPTED

input
9

correct output
##############################...

user output
##############################...

Test 10

Group: 10

Verdict: ACCEPTED

input
10

correct output
##############################...

user output
##############################...