backstory:
คุณสนุกกับงานเขียนโปรแกรมใหม่ของคุณที่ บริษัท ขนาดใหญ่ อย่างไรก็ตามคุณไม่ได้รับอนุญาตให้เรียกดูเว็บเนื่องจากคอมพิวเตอร์ของคุณมี CLI เท่านั้น พวกเขายังเรียกใช้ฮาร์ดไดรฟ์ของพนักงานทุกคนดังนั้นคุณจึงไม่สามารถดาวน์โหลดเว็บเบราว์เซอร์ CLI ขนาดใหญ่ได้ คุณตัดสินใจที่จะสร้างเบราว์เซอร์แบบข้อความธรรมดาที่มีขนาดเล็กที่สุดเท่าที่จะเป็นไปได้เพื่อให้คุณสามารถจดจำและพิมพ์ลงในไฟล์ชั่วคราวทุกวัน
ท้าทาย:
งานของคุณคือการสร้างเว็บเบราว์เซอร์ golfed ภายในอินเตอร์เฟสบรรทัดคำสั่ง มันควรจะ:
- ใช้ URL เดียวผ่านทาง args หรือ stdin
- แยก
directory
และhost
ส่วนประกอบของ URL - ส่งคำร้องขอ HTTP แบบง่ายไปยัง
host
เพื่อขอคำสั่งดังกล่าวdirectory
- พิมพ์เนื้อหาของแท็ก
<p>
วรรคใด ๆ</p>
- และออกหรือขอหน้าอื่น
ข้อมูลเพิ่มเติม:
คำขอ HTTP แบบง่ายมีลักษณะดังนี้:
GET {{path}} HTTP/1.1
Host: {{host}}
Connection: close
\n\n
การเน้นบรรทัดใหม่สิ้นสุด
คำตอบทั่วไปดูเหมือนว่า:
HTTP/1.1 200 OK\n
<some headers separated by newlines>
\n\n
<html>
....rest of page
กฎ:
- ต้องการทำงานบนพอร์ต 80 เท่านั้น (ไม่จำเป็นต้องใช้ SSL)
- คุณไม่สามารถใช้ netcat
- ไม่ว่าจะใช้ภาษาใดในการเขียนโปรแกรมอนุญาตให้ใช้ TCP API ระดับต่ำเท่านั้น (ยกเว้น netcat)
- คุณไม่สามารถใช้ GUI จำได้ว่าเป็น CLI
- คุณไม่สามารถใช้ตัวแยกวิเคราะห์ HTML ได้ยกเว้นตัวบิวอิน (BeautifulSoup ไม่ใช่บิวด์อิน)
- โบนัส!! หากโปรแกรมของคุณวนกลับมาและขอ URL อื่นแทนออก -40 ตัวอักษร (ตราบใดที่คุณไม่ใช้การเรียกซ้ำ)
- ไม่มีโปรแกรมบุคคลที่สาม จำไว้ว่าคุณไม่สามารถติดตั้งอะไรได้เลย
- code-golfดังนั้นจำนวนไบต์ที่สั้นที่สุดจะเป็นผู้ชนะ
import webbrowser;webbrowser.open(url)