Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import time
- import re
- import colorsys
- #reading
- lines = eval(input())
- #f = open("input.txt", "r")
- #lines = eval(f.readlines()[0])
- #getting head
- b = b''
- for i in range(0,len(lines)-1):
- b+=lines[i:i+1]
- if lines[i-3:i] == b'255' or lines[i-3:i] == "255":
- break
- b = b.decode()
- b = re.sub(' +', ' ', b).strip().rstrip().splitlines()
- while ' ' in b:
- b.remove(' ')
- #getting map
- d = lines[i+1:]
- #decoding
- arr = []
- for i in range(0,len(d),3):
- arr.append([d[i], d[i+1], d[i+2]])
- #reshaping
- arr_new = np.reshape(arr,(91,85,3))
- #creating image
- arr_new = np.array(arr_new, dtype="uint8")
- #getting maxval, width and height
- maxval = b[-1]
- first = 0
- for i in range(len(b)):
- if b[i].split()[0].isdigit() and first == 0:
- width = int(b[i].split()[0])
- first = 1
- elif b[i].split()[0].isdigit() and first != 0:
- height = int(b[i].split()[0])
- break
- header = "P6 {} {} {}\n".format(width, height, maxval).encode()
- #getting comments
- arr_comments = []
- for i in range(len(b)):
- if b[i].find('#') != -1:
- if b[i].find('!') != -1 and (b[i][1]=='!' or b[i][2] == '!'):
- arr_comments.append(b[i].replace('#', '').replace('!', '').split())
- def hsv2rgb(h,s,v):
- h = h/360
- s = s/100
- v = v/100
- return tuple(round(i * 255) for i in colorsys.hsv_to_rgb(h,s,v))
- #hsv2rgb
- for i in range(len(arr_comments)):
- arr_comments[i][0] = int(arr_comments[i][0])
- arr_comments[i][1] = float(arr_comments[i][1][:len(arr_comments[i][1])-1])
- if "%" in arr_comments[i][2]:
- arr_comments[i][2] = float(arr_comments[i][2][:len(arr_comments[i][2])-1])
- else:
- arr_comments[i][2] = float(arr_comments[i][2])*100
- if "%" in arr_comments[i][3]:
- arr_comments[i][3] = float(arr_comments[i][3][:len(arr_comments[i][3])-1])
- else:
- arr_comments[i][3] = float(arr_comments[i][3])*100
- arr_comments[i][1], arr_comments[i][2], arr_comments[i][3] = hsv2rgb(arr_comments[i][1], arr_comments[i][2], arr_comments[i][3])
- def rass(rgb,rgb1):
- r, g, b = rgb
- r1, g1, b1 = rgb1
- return ((r1-r)**2 + (g1-g)**2 + (b1-b)**2)**0.5
- for i in range(len(arr_new)):
- for j in range(len(arr_new[i])):
- temp = []
- for k in range(len(arr_comments)):
- temp.append(rass(arr_new[i][j], arr_comments[k][1:]))
- indices = [y for y, x in enumerate(temp) if x == min(temp)]
- # print(arr_comments[temp.index(min(temp))])
- temp = []
- for y in range(len(indices)):
- temp.append(arr_comments[indices[y]])
- m = 100000000
- m_v = []
- for y in range(len(temp)):
- if temp[y][0] < m:
- m_v = temp[y][1:]
- arr_new[i][j] = m_v
- print(header+bytes(np.array(arr_new).ravel()))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement