Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time
- import re
- import colorsys
- import numpy as np
- #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]])
- #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
- #reshaping
- arr_new = np.reshape(arr,(height,width,3))
- #creating image
- arr_new = np.array(arr_new, dtype="uint8")
- #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])
- print(arr_new.tolist(), arr_comments)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement