บางครั้งเมื่อฉันพิมพ์ที่อยู่ IPv4 ฉันได้รับหมายเลขทั้งหมดถูกต้อง แต่ฉันลืมพิมพ์หนึ่งจุดขึ้นไป ฉันต้องการมีโปรแกรม (หรือฟังก์ชั่น) ที่ใช้ที่อยู่ IPv4 ที่เสียหายของฉันและแสดงตำแหน่งที่ถูกต้องทั้งหมดในช่วงเวลาที่หายไป
อินพุต
ข้อมูลที่ป้อนจะเป็นสตริงที่เป็นการแปลงที่อยู่ IPv4 ที่ถูกต้องเสมอ (ดูรายการด้านล่าง) มันจะถูกแปลงโดยการกำจัดของตัวละครระยะเวลาหนึ่งหรือมากกว่าเท่านั้น
การส่งของคุณไม่จำเป็นต้องจัดการอินพุตนอกรูปแบบนี้
เอาท์พุต
คอลเล็กชันหรือรายการโดยไม่เรียงตามลำดับหรือรูปแบบของสตริงที่แสดงที่อยู่ IPv4 ที่ถูกต้องทั้งหมดที่สามารถสร้างขึ้นจากอินพุตโดยการแทรกอักขระช่วงเวลาลงในอินพุต
- ผลลัพธ์อาจเป็นรายการภาษาพื้นเมืองหรือประเภทคอลเลกชันที่เรียงลำดับหรือไม่เรียงลำดับอื่น ๆ
- หรืออาจเป็นลำดับสตริงของที่อยู่ IPv4 คั่นด้วยวิธีที่ชัดเจน
- หากคุณใช้ตัวคั่นอักขระเดียวเพื่อกำหนดสตริงของคุณจะไม่อนุญาตให้ใช้เครื่องหมายมหัพภาคและตัวเลขเป็นตัวคั่นอักขระเดี่ยว ฉันรู้ว่าแตกต่างจากตัวเลขช่วงเวลาที่ตัวคั่นไม่ชัดเจน (เนื่องจากทุกช่วงเวลาที่สี่จะเป็นตัวคั่น) แต่เพื่อความสะดวกในการอ่านฉันจึงไม่อนุญาต
รูปแบบที่อยู่ IPv4
ในขณะที่ที่อยู่ IPv4 นั้นเป็นเพียงลำดับของ octet ไบนารีสี่ตัวความท้าทายนี้ใช้รูปแบบทศนิยมแบบ จำกัด ที่มีจุด
- ที่อยู่ IPv4 เป็นค่าทศนิยมสี่ค่าที่คั่นด้วยสามจุด
- ค่าทั้งสี่นั้นอยู่ในช่วง
0
ที่255
ครอบคลุม - ไม่อนุญาตให้นำหน้าศูนย์ในค่าตัวเลขใด ๆ (สแตนด์อโลนหนึ่งตัวละคร
0
ที่ได้รับอนุญาต; หมายเลขอื่น ๆ ที่เริ่มต้นด้วยศูนย์ไม่ได้:052
,00
ฯลฯ )
กรณีทดสอบ
อินพุตอยู่ในบรรทัดแรกเอาท์พุทในบรรทัดที่สอง (ที่นี่มีโครงสร้างเป็นรายการที่คั่นด้วยเครื่องหมายจุลภาคของสตริงที่ยกมาคั่นด้วยเครื่องหมายจุลภาคล้อมรอบด้วย[
]
แต่คุณอาจใช้รูปแบบหรือโครงสร้างที่เหมาะสมตามที่ระบุไว้ข้างต้น) ตัวอย่างบางส่วนมีหมายเหตุในบรรทัดที่สามเพื่อเน้นแอปพลิเคชันของกฎเฉพาะ
192.168.1234
["192.168.1.234", "192.168.12.34", "192.168.123.4"]
192.1681234
["192.16.81.234", "192.168.1.234", "192.168.12.34", "192.168.123.4"]
(Note: 192.1681.2.34 (etc.) is illegal because 1681 is greater than 255)
1921681.234
["19.216.81.234", "192.16.81.234", "192.168.1.234"]
1921681234
["19.216.81.234", "192.16.81.234", "192.168.1.234", "192.168.12.34", "192.168.123.4"]
192.168.1204
["192.168.1.204", "192.168.120.4"]
(Note: 192.168.12.04 is illegal because of leading zero)
192.168.123
["1.92.168.123", "19.2.168.123", "192.1.68.123", "192.16.8.123", "192.168.1.23", "192.168.12.3"]
192.168.256
["192.168.2.56", "192.168.25.6"]
(Note: Any combination that would leave 256 intact is illegal)
120345
["1.20.3.45", "1.20.34.5", "1.203.4.5", "12.0.3.45", "12.0.34.5", "120.3.4.5"]
(Note: 12.03.4.5 (etc.) is illegal due to leading zero.)
012345
["0.1.23.45", "0.1.234.5", "0.12.3.45", "0.12.34.5", "0.123.4.5"]
(Note: the first segment must be 0, because `01` or `012` would be illegal.)
000123
["0.0.0.123"]
(ฉันทำตัวอย่างเหล่านี้ด้วยมือดังนั้นโปรดแจ้งเตือนฉันถึงข้อผิดพลาดที่คุณอาจพบ)