พื้นหลัง
โดยทั่วไปจะใช้ตัวขยายขนาดเล็กเมื่อแสดง JavaScript ในเว็บเบราว์เซอร์ของคุณ โดยทั่วไปจะใช้เพื่อลดจำนวนไบต์ที่ต้องส่ง การประหยัดแบนด์วิดท์มีประโยชน์สำหรับเหตุผลที่ชัดเจน บางคนใช้ obfuscaters (ซึ่งตั้งใจทำให้อ่านรหัสยากขึ้น) ฉันไม่ได้พูดถึงสิ่งเหล่านั้น
เราจะลดขนาด Python 2
ฉันกำลังถกเถียงกันว่าจะใช้ JavaScript หรือ Python สำหรับประสบการณ์การลดขนาดหรือไม่และฉันตัดสินใจใช้ Python ด้วยเหตุผลสองประการ: พื้นที่สีขาวมีความสำคัญและฉันคิดว่านั่นจะเพิ่มปัญหาไดนามิกที่น่าสนใจ นอกจากนี้การใช้ Python 2.7 จะให้ไดนามิกอื่นเช่นลบฟุ่มเฟือย()
ระหว่างการพิมพ์ (เช่นprint("Hello world")
vs. print"Hello world"
) โดยส่วนตัวฉันชอบที่จะเปิดเป็นภาษาใดก็ได้ แต่สำหรับบางภาษากระบวนการนี้จะไม่สมเหตุสมผล และภาษาใดที่คุณตัดสินใจที่จะลดขนาดจะส่งผลกระทบโดยตรงต่อคะแนนของคุณ (และหากภาษานั้นสามารถลดขนาดได้)
รายละเอียด
เป้าหมายของคุณคือการแก้ไขโค้ดในแบบที่จะไม่เปลี่ยนเป็นฟังก์ชั่น แน่นอนคุณอาจเปลี่ยนชื่อตัวแปร (ภายในโปรแกรมลดขนาด) ของคุณตราบใดที่มันไม่มีผลต่อการส่งออก (ติดตามขอบเขต ) แม้ว่าฉันจะให้โปรแกรมเฉพาะแก่คุณโปรดอย่าปรับให้เหมาะสมสำหรับกรณีทดสอบเนื่องจากช่องโหว่มาตรฐานทั้งหมดถูกห้าม
คะแนน : ความยาวของโปรแกรมหลังจากที่คุณย่อขนาดให้เล็กที่สุดแล้ว
อินพุต : โปรแกรม Python 2.7 ใด ๆ (ที่ไม่มีข้อผิดพลาด)
เอาต์พุต : เวอร์ชันที่ย่อเล็กสุด
แม้ว่ารหัสของคุณจะสามารถรองรับการป้อนข้อมูล Python 2.7 ที่ถูกต้องทั้งหมดได้ แต่ก็จำเป็นต้องทดสอบสคริปต์ของคุณกับบางอย่างเพื่อพิสูจน์ว่ามีประสิทธิภาพ
คลิกที่นี่เพื่อดูตัวอย่างโปรแกรม
ทำให้ปัญหาเข้าถึงได้ง่ายขึ้น
อย่าลังเลที่จะใช้หรือแก้ไขรหัสใด ๆ ที่พบในโซลูชันของฉัน ฉันทำสิ่งนี้เพื่อให้คุณเริ่มต้นด้วยการจัดการใบเสนอราคาเบื้องต้น อย่างไรก็ตามคุณสามารถขยายเป็นเยื้องและอื่น ๆ
ตัวอย่างวิธีในการลดขนาด Python
พื้นที่สีขาวทั้งหมดอาจถูกแทนที่ด้วยจำนวนเงินขั้นต่ำที่เป็นไปได้ (ฉันรับทราบว่าใน Python คุณสามารถทำสิ่งที่ยุ่งยากด้วยแท็บได้ แต่ฉันจะปล่อยให้คุณตัดสินใจว่าจะใช้หรือไม่)
ตัวอย่าง
ดังต่อไปนี้:
def print_a_range(a):
for i in range(a):
print(i)
อาจจะเป็น:
def print_a_range(a):
for i in range(a):
print(i)
ในทางเทคนิคหากมีเพียงหนึ่งบรรทัดในลูปคุณสามารถบีบอัดมันได้มากขึ้น:
def print_a_range(a):
for i in range(a):print(i) #Note, you can also remove the `()` here.
อย่างไรก็ตามมีวิธีอื่นที่คุณสามารถย่อขนาดพื้นที่ว่างใน Python ได้:
ดังต่อไปนี้:
print ([a * 2 for a in range(20) if a % 2 == 0])
อาจจะเป็น:
print([a*2for a in range(20)if a%2==0])
ทราบว่ามีความจำเป็นสำหรับช่องว่างระหว่างไม่มีและ2
for
ตัวแปรฟังก์ชันและคำหลักไม่สามารถเริ่มต้นด้วยตัวเลขได้ ดังนั้นล่าม Python ก็โอเคกับ<num><keyword>
ไม่มีที่ว่าง คุณควรทราบว่าไม่จำเป็นต้องเว้นวรรคระหว่าง)
และif
และ
หมายเหตุคุณต้องไม่เปลี่ยนผลลัพธ์ของโปรแกรม! ดังนั้น:
print"f(x)=x*2 is a great equation!"
ข้อความสั่งพิมพ์ด้านบนควรคงเดิมเพราะลบช่องว่างระหว่าง2
และis
จะแก้ไขผลลัพธ์
'1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111'
เข้า'1'*100
ได้รับอนุญาต? ต้องทำตามพฤติกรรมเหมือนกันไหม?