AtCoder Regular Contest D - Grid Coloring Difficulty: 855
Ce thème, la simulation
Je ne pense pas que le contenu soit difficile, mais c'est un problème qui semble prendre du temps à mettre en œuvre.
1 2 2 3 3
4 4 4 4 3
5 5 5 5 5
C'est OK si vous remplissez à gauche et à droite dans l'ordre du haut avec la valeur numérique donnée. Ruby Array
ruby.rb
h, w = gets.split.map(&:to_i)
_ = gets.to_i
a = gets.split.map(&:to_i)
m = Array.new(h){Array.new(w, 0)}
y, x, lr = 0, 0, 1
a.each_with_index do |n, v|
n.times do
m[y][x] = v + 1
x += lr
if x == w
y += 1
x = w - 1
lr = -1
elsif x < 0
y += 1
x = 0
lr = 1
end
end
end
h.times do |i|
puts m[i].join(' ')
end
join.rb
puts m[i].join(' ')
puts m[i] * ' '
Comme je l'ai appris récemment, join
peut également être écrit comme ci-dessus.
Ruby Class
ruby.rb
class MASS
def initialize(h, w)
@h = h
@w = w
@m = Array.new(@h){Array.new(@w, 0)}
@x = 0
@y = 0
@LR = 1
end
def draw(v, n)
n.times do
@m[@y][@x] = v + 1
@x += @LR
if @x == @w
@y += 1
@x = @w - 1
@LR = -1
elsif @x < 0
@y += 1
@x = 0
@LR = 1
end
end
end
def out
@h.times do |i|
puts @m[i].join(' ')
end
end
end
h, w = gets.split.map(&:to_i)
_ = gets.to_i
a = gets.split.map(&:to_i)
m = MASS.new(h, w)
a.each_with_index do |v, i|
m.draw(i, v)
end
m.out
Dans ce problème, ce n'est pas très efficace, mais j'ai essayé d'utiliser class
pour apprendre.
La longueur du code a presque doublé, mais le temps d'exécution ne semble pas changer.
Python
python.py
from sys import stdin
def main():
input = stdin.readline
h, w = map(int, input().split())
_ = int(input())
a = list(map(int, input().split()))
m = [[0] * w for _ in range(h)]
x, y, LR, v = 0, 0, 1, 0
for n in a:
v += 1
for _ in range(n):
m[y][x] = str(v)
x += LR
if x == w:
y += 1
x = w - 1
LR = -1
elif x < 0:
y += 1
x = 0
LR = 1
for i in range(h):
print(" ".join(m[i]))
main()
Est-ce que la raison pour laquelle *** Python *** a une longue longueur de code est qu'il compte également les espaces demi-largeur?
Ruby Array | Ruby Class | Python | |
---|---|---|---|
Longueur du code(Byte) | 392 | 631 | 603 |
Temps d'exécution(ms) | 17 | 18 | 25 |
Mémoire(KB) | 2428 | 3836 | 3828 |
Recommended Posts