| Task: | Monikulmio |
| Sender: | rottis |
| Submission time: | 2025-10-27 00:28:17 +0200 |
| Language: | Ruby |
| Status: | READY |
| Result: | 94 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 94 |
| test | verdict | time | score | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.07 s | 10 | details |
| #2 | ACCEPTED | 0.08 s | 10 | details |
| #3 | ACCEPTED | 0.08 s | 10 | details |
| #4 | ACCEPTED | 0.08 s | 10 | details |
| #5 | ACCEPTED | 0.08 s | 10 | details |
| #6 | ACCEPTED | 0.07 s | 10 | details |
| #7 | ACCEPTED | 0.08 s | 10 | details |
| #8 | ACCEPTED | 0.08 s | 10 | details |
| #9 | ACCEPTED | 0.08 s | 7 | details |
| #10 | ACCEPTED | 0.09 s | 7 | details |
Code
def get_line_dir(vertex1, vertex2)
return [
vertex2[0] <=> vertex1[0],
vertex2[1] <=> vertex1[1]
]
end
def get_line_char(dir)
#* tarkoittaa monikulmion kärkipistettä.
#Merkit =, |, / ja \ ilmaisevat monikulmion janat.
#Merkki # tarkoittaa monikulmion sisäpuolista aluetta.
#Merkki . ulkona
if dir[1] == 0
return "="
elsif dir[0] == 0
return "|"
elsif dir[0] == dir[1]
return "\\"
else
return "/"
end
end
input = gets.chomp.split(" ").map(&:to_i)
n = input[0]
m = input[1]
k = input[2]
vertices = []
k.times do
input = gets.chomp.split(" ").map(&:to_i)
vertices.append([input[1], input[0]])
end
board = []
(n + 2).times do
board.append("#" * (m + 2))
end
idx = 0
vertices.each do |vertex1|
idx += 1
vertex2 = vertices[(idx) % vertices.length]
line_dir = get_line_dir(vertex1, vertex2)
line_char = get_line_char(line_dir)
board[vertex1[1]][vertex1[0]] = "*"
while vertex1 != vertex2
vertex1 = [vertex1[0] + line_dir[0], vertex1[1] + line_dir[1]]
board[vertex1[1]][vertex1[0]] = line_char
end
end
board[vertices[0][1]][vertices[0][0]] = "*"
deltas = [
[-1, 0],
[1, 0],
[0, -1],
[0, 1]
]
propagate_positions = [0, 0]
while propagate_positions.length > 0
pos = propagate_positions.pop()
if pos[0] < 0 || pos[1] < 0 || pos[0] >= (m + 2) || pos[1] >= (n + 2)
next
end
if board[pos[1]][pos[0]] != "#"
next
end
board[pos[1]][pos[0]] = "."
deltas.each do |delta|
propagate_positions.append([pos[0] + delta[0], pos[1] + delta[1]])
end
end
board[1...(-1)].each do |row|
puts row[1...(-1)]
end
Test details
Test 1 (public)
Verdict: ACCEPTED
| input |
|---|
| 8 9 5 5 2 2 5 5 8 7 8 ... |
| correct output |
|---|
| ......... ....*.... .../#\... ../###\.. .*#####*. ... |
| user output |
|---|
| ......... ....*.... .../#\... ../###\.. .*#####*. ... |
Test 2 (public)
Verdict: ACCEPTED
| input |
|---|
| 20 40 4 5 10 5 30 15 30 15 10 |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Test 3 (public)
Verdict: ACCEPTED
| input |
|---|
| 20 40 29 8 7 13 2 14 2 9 7 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Test 4 (public)
Verdict: ACCEPTED
| input |
|---|
| 20 40 14 5 12 5 25 8 28 13 28 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Test 5 (public)
Verdict: ACCEPTED
| input |
|---|
| 20 40 12 3 20 7 16 7 9 11 13 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Test 6 (public)
Verdict: ACCEPTED
| input |
|---|
| 9 35 33 2 3 2 8 4 8 4 5 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Test 7 (public)
Verdict: ACCEPTED
| input |
|---|
| 30 100 69 6 10 6 14 7 14 7 18 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Test 8 (public)
Verdict: ACCEPTED
| input |
|---|
| 40 60 192 11 3 11 5 10 6 11 7 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Test 9 (public)
Verdict: ACCEPTED
| input |
|---|
| 50 100 142 1 1 1 7 1 11 1 14 ... |
| correct output |
|---|
| *=====*===*==*................... |
| user output |
|---|
| *=====*===*==*................... |
Feedback: Lines are drawn correctly. Incorrect fill character on row 3, col 9: expected '.', got '#'
Test 10 (public)
Verdict: ACCEPTED
| input |
|---|
| 100 100 1000 10 1 4 7 1 4 1 9 ... |
| correct output |
|---|
| ...*====*........................ |
| user output |
|---|
| ...*====*........................ |
Feedback: Lines are drawn correctly. Incorrect fill character on row 4, col 29: expected '.', got '#'
