ในบางกรณีบ่อยครั้งในวิชาฟิสิกส์คุณต้องรวมกราฟ ความท้าทายของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ใช้กราฟหลาย ๆ รูปเป็นภาพคำนวณผลรวมที่เป็นไปได้ทั้งหมดและแสดงผลลัพธ์
กราฟ
กราฟเป็นภาพที่มีrgb(255, 255, 255)
พื้นหลังสีขาว ( ) พร้อมพิกเซลที่ไม่ใช่สีขาวในแต่ละคอลัมน์ ตัวอย่าง:
ค่าของสคริปต์จะแสดงเป็นตำแหน่ง Y ของพิกเซลสี ค่าที่พิกัด X หนึ่งเท่ากับตำแหน่ง Y ของพิกเซลสีบนสุดในคอลัมน์นั้นโดยพิกัดเริ่มต้นที่ 0 ที่ด้านล่างซ้าย อาจมีหรือไม่มีพิกเซลสีเพิ่มเติมด้านล่างพิกเซลเหล่านั้นด้วยเหตุผลที่สวยงาม
งาน
งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ใช้กราฟหลาย ๆ รูปเป็นภาพคำนวณ2^n - 1
ผลรวมทั้งหมดที่เป็นไปได้และผลลัพธ์ผลลัพธ์
ผลรวมของกราฟคือกราฟที่ค่าของแต่ละคอลัมน์มีค่าเท่ากับผลรวมของค่าของคอลัมน์ที่เกี่ยวข้องในแต่ละกราฟอินพุต
กราฟจะมีหลายสี ภาพผลลัพธ์ต้องมีผลรวมของกราฟที่เป็นไปได้ทั้งหมดเช่นเดียวกับกราฟอื่นรวมถึงกราฟต้นฉบับ แต่ไม่รวมผลรวมเป็นศูนย์
สีของผลรวมแต่ละครั้งจะถูกกำหนดโดยค่าเฉลี่ยของสีของกราฟที่รวมอยู่เช่นกราฟของสีrgb(255, 0, 255)
และrgb(0, 255, 255)
จะสร้างกราฟของrgb(128, 128, 255)
(อาจถูกปัดเศษลง)
ภาพที่ได้ควรมีความสูงตามความเหมาะสมเพื่อให้พอดีกับกราฟทั้งหมด ซึ่งหมายความว่าคุณอาจต้องส่งภาพที่มีขนาดใหญ่กว่าอินพุตใด ๆ
ลำดับที่กราฟผลลัพธ์ถูกดึงไปยังรูปภาพผลลัพธ์ไม่สำคัญเช่นหากกราฟผลลัพธ์ซ้อนกันคุณอาจเลือกกราฟที่อยู่ด้านบน แต่จะต้องเป็นหนึ่งในกราฟไม่ใช่สีผสมกัน
คุณอาจคิดว่าภาพอินพุตมีความกว้างเท่ากันคอลัมน์ทั้งหมดของภาพมีพิกเซลที่ไม่ใช่สีขาวอย่างน้อยหนึ่งพิกเซลและความสูงของภาพ (รวมถึงเอาต์พุต) ต่ำกว่า 4096 พิกเซล
ตัวอย่าง
อินพุต A:
อินพุต B:
ตัวอย่างผลลัพธ์:
(ในกรณีที่มีคนสนใจฉันคัดลอกข้อมูลสำหรับสิ่งเหล่านี้จากแผนภูมิหุ้นของ บริษัท สุ่มนั่นเป็นวิธีแรกที่ฉันพบว่าได้รับข้อมูลจริงในรูปแบบ CSV)
กฎระเบียบ
- คุณสามารถเลือกรูปแบบไฟล์บิตแมปไฟล์ใดก็ได้
- คุณสามารถเลือกรูปแบบไฟล์เอาต์พุตภาพบิตแมปใด ๆ ก็ได้ซึ่งไม่จำเป็นต้องตรงกับอินพุต
- คุณอาจใช้ไลบรารีการประมวลผลรูปภาพอย่างไรก็ตามฟังก์ชันใด ๆ เพื่อให้งานนี้ถูกแบนโดยตรง
- ช่องโหว่มาตรฐานใช้
- นี่คือ รหัสกอล์ฟดังนั้นรหัสที่สั้นที่สุดในหน่วยไบต์จะชนะ
สคริปต์ตัวสร้างกราฟ
นี่คือสคริปต์ Python 2 ที่สร้างกราฟ อินพุตถูกกำหนดเป็นบรรทัดโดยสามบรรทัดแรกเป็นสี RGB และส่วนที่เหลือเป็นข้อมูลถูกยกเลิกโดย EOF
import PIL.Image as image
import sys
if len(sys.argv) < 2:
sys.stderr.write("Usage: graphgen.py <outfile> [infile]")
exit(1)
outfile = sys.argv[1]
if len(sys.argv) > 2:
try:
stream = open(sys.argv[2], "r")
data = stream.read()
stream.close()
except IOError as err:
if err.errno == 2:
sys.stderr.write("File \"{0}\" not found".format(sys.argv[2]))
else:
sys.stderr.write("IO error {0}: {1}".format(err.errno, err.strerror))
exit(1)
else:
data = sys.stdin.read()
try:
items = map(int, data.strip().split("\n"))
red, green, blue = items[:3]
items = items[3:]
highest = max(items)
except (ValueError, TypeError, IndexError):
sys.stderr.write("Invalid value(s) in input")
img = image.new("RGB", (len(items), highest + 1), (255, 255, 255))
prev = items[0]
img.putpixel((0, highest - items[0]), (red, green, blue))
for x, item in enumerate(items[1:]):
img.putpixel((x + 1, highest - item), (red, green, blue))
if item < prev:
for i in range(item + 1, prev):
img.putpixel((x, highest - i), (red, green, blue))
else:
for i in range(prev + 1, item):
img.putpixel((x + 1, highest - i), (red, green, blue))
prev = item
img.save(outfile, "png")
n
กราฟอินพุตจะมี2^n - 1
บรรทัดในภาพที่ส่งออก?