กำหนดรูปภาพที่มีพิกเซลขาวดำเท่านั้นและตำแหน่ง (x, y) ซึ่งเป็นพิกเซลสีขาวสีพิกเซลสีขาวตามระยะทางแมนฮัตตันขั้นต่ำจาก (x, y) ในเส้นทางที่เกี่ยวข้องกับการข้ามพิกเซลสีขาวอื่นเท่านั้น
สีของพิกเซลสีจะต้องเป็นสัดส่วนกับระยะทางของพวกเขาจาก (x, y) ดังนั้นพิกเซลที่ (x, y) จะมีสีของ 0 ° (สีแดงบริสุทธิ์) และพิกเซลที่ไกลออกไปจาก (x, y) จะมีเฉดสีที่ 360 ° (เป็นสีแดง) โดยที่เฉดสีอื่น ๆ จะผสมผสานกันอย่างลงตัวและเป็นเส้นตรงระหว่างกัน ทั้งความอิ่มตัวและค่าต้องเป็น 100%
หากพิกเซลสีขาวไม่ได้เชื่อมต่อกับ (x, y) ผ่านพิกเซลสีขาวอื่น ๆ จะต้องเป็นสีขาว
รายละเอียด
- การป้อนข้อมูลจะประกอบด้วยชื่อไฟล์ของภาพหรือข้อมูลภาพดิบรวมทั้งจำนวนเต็ม x และ y
- ภาพที่ส่งออกอาจถูกบันทึกลงในไฟล์หรือไปยังไฟล์ดิบเพื่อ stdout ในรูปแบบไฟล์ภาพทั่วไปหรือแสดงเพียง
- ค่า x คือ 0 บนพิกเซลซ้ายสุดและเพิ่มไปทางขวา ค่า y คือ 0 ในพิกเซลสูงสุดและเพิ่มลงไป (x, y) จะอยู่ในขอบเขตภาพเสมอ
- อนุญาตให้ใช้ทั้งโปรแกรมและฟังก์ชั่นเต็มรูปแบบ
รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
ตัวอย่าง
รูปภาพทั้งหมดเหล่านี้ลดขนาดลงเพื่อประหยัดพื้นที่ คลิกที่ภาพเพื่อดูขนาดเต็ม
ภาพอินพุต:
(x,y) = (165,155)
และ (x,y) = (0,0)
ภาพอินพุตและเอาต์พุตด้วย(x,y) = (0,0)
:
ภาพอินพุตและเอาต์พุตด้วย(x,y) = (600,350)
:
ภาพอินพุตและเอาต์พุตด้วย(x,y) = (0,0)
:
ภาพอินพุตและเอาต์พุตด้วย(x,y) = (0,0)
:
โบนัส -30% ทางเลือก:ใช้ระยะทางแบบยุคลิด คำแนะนำสำหรับอัลกอริทึมของคุณมีดังนี้ (เค้าร่างทั่วไป):
- มีจุดเริ่มต้น
- เติมน้ำท่วมจากพิกเซลนั้น
- สำหรับทุกพิกเซลที่มาถึงในการเติมน้ำท่วม
- ย้ายจากพิกเซลเริ่มต้นไปที่พิกเซลนั้นในหน่วยครึ่งหน่วยเป็นเส้นตรง
- ในแต่ละขั้นตอนให้ใช้
int()
กับพิกัด x และ y หากพิกเซลที่พิกัดเหล่านี้เป็นสีดำให้หยุด มิฉะนั้นดำเนินการต่อ (นี่เป็นวิธีการมองเห็น) - พิกเซลที่เข้าถึงได้ใด ๆ ที่ล้อมรอบพิกเซลสีขาวและ / หรือพิกเซลที่ก่อนหน้านี้มีป้ายกำกับด้วยระยะทางที่สูงขึ้นอย่างมีนัยสำคัญ (เช่น +10) จะกลายเป็นพิกเซลเริ่มต้น
ในแง่ที่มากกว่านี้อัลกอริธึมนี้กระจายออกไปทุกพิกเซลที่สามารถเข้าถึงได้ในแนวเส้นตรงจากพิกเซลเริ่มต้น / พิกเซลสีแล้ว "นิ้ว" รอบขอบ บิต "ระยะทางที่สูงกว่าอย่างมีนัยสำคัญ" มีวัตถุประสงค์เพื่อเพิ่มความเร็วของอัลกอริทึม จริงๆแล้วมันไม่สำคัญว่าคุณจะใช้ระยะทางแบบยุคลิดอย่างไร แต่มันก็ต้องดูเป็นแบบนี้
นี่คือตัวอย่างแรกที่ดูเหมือนกับระยะทางแบบยุคลิดโดยใช้อัลกอริทึมด้านบน:
ใส่รูปภาพและ (x,y) = (165,155)
ต้องขอขอบคุณ Calvin'sHobbies และ trichoplax ที่ช่วยเขียนความท้าทายนี้! มีความสุข!