นอกจากนั้นเมื่อเร็ว ๆ นี้ (ไม่กี่ปีหลัง) ฉวัดเฉวียนบางอย่างเกี่ยวกับการเขียนโปรแกรม เว็บไซต์เกี่ยวกับการดำเนินการของTetris ใน 140 Bytes ...
ปรากฎว่าแม้ว่ามันจะเล็ก แต่ก็เป็นเวอร์ชั่นที่ง่ายกว่าของ Tetris และไม่ได้ใช้งานอย่างสมบูรณ์ เฉพาะฟังก์ชันลอจิกแบบหลักที่เหมาะกับ Javascript 140 ไบต์ ในการใช้งานจริงคุณต้องมีอีก 840 อักขระของ HTML
เราทำได้ดีกว่า!
ความท้าทายนี้คือการติดตั้ง "Binary Tetris" เวอร์ชั่นเต็มในทวีตให้น้อยที่สุด
กฎเตตริสไบนารี:
- โปรแกรมจะต้องแสดงสนามเล่นที่มีอย่างน้อย 5 คอลัมน์และ 6 แถวของเซลล์
- วิธีการแสดงผลใด ๆ อาจถูกนำมาใช้ตราบใดที่บล็อกและขอบของสนามถูกทำเครื่องหมายไว้อย่างชัดเจน
- ต้องมีอย่างน้อยสองชนิดของบล็อก: และ
#
##
การสนับสนุนบล็อกเพิ่มเติมเช่น###
หรือบล็อกมุมที่มีรูปร่างคล้าย L จะได้รับการอัปเกรดโดยฉัน: P และเกมที่สมบูรณ์ที่สุดของไบนารีเตตริส (บล็อกส่วนใหญ่เช่นคุณลักษณะดั้งเดิมและการหมุน) จะชนะความสุขของฉัน - บล็อกใหม่จะถูกเพิ่มไปยังเขตข้อมูลในแถวบนสุดและเซลล์บล็อกหนึ่งต้องครอบครองคอลัมน์กลาง
- บล็อกลงมาสู่แถวล่างในอัตราคงที่ บล็อกจะต้องลงมาแม้ไม่มีผู้ใช้
- เมื่อบล็อกสัมผัสด้านล่างของสนามหรือบล็อกที่ต่ำกว่าพวกเขาจะหยุดตกและได้รับการแก้ไขในสถานที่ เพิ่มบล็อกใหม่
- เมื่อคอลัมน์ทั้งหมดในแถวเต็มไปด้วยบล็อกแถวนั้นจะว่างเปล่าและบล็อกคงที่ทั้งหมดด้านบนจะเลื่อนลงหนึ่งแถว
- โปรแกรมจะต้องตอบสนองต่อการกดปุ่ม จะต้องมี 3 ปุ่มที่ไม่ซ้ำกันซึ่งทำหน้าที่ดังต่อไปนี้
- เลื่อนบล็อกปัจจุบันไปทางซ้าย 1 คอลัมน์
- เลื่อนบล็อกปัจจุบันขวา 1 คอลัมน์
- เลื่อนบล็อกปัจจุบันลง 1 แถว
- ทวีตแต่ละรายการมีได้เพียง 140 ตัวอักษร อนุญาตให้ใช้อักขระแบบหลายไบต์ที่สามารถใส่ในทวีตได้
กฎสำหรับสิ่งที่สามารถเป็นทวีตนั้นง่าย หากคุณสามารถทวีตคุณสามารถใช้งานได้
ภาษาที่ตีความจะปฏิบัติตามกฎเดียวกัน แต่ละส่วนจะต้องปฏิบัติตามข้อกำหนด ตราบใดที่ไม่มีข้อผิดพลาดในการรัน (และส่วนที่เหลือนั้นถูกต้องตามข้อกำหนด) คำตอบของคุณคือกฎการตีกอล์ฟที่ถูกต้อง :
เนื่องจากการใช้งานดั้งเดิมคือ "tweetable" ความท้าทายนี้จึงต้องเหมือนกัน รายการจะต้องสามารถส่งเป็นชุดทวีต (บรรทัดละ 140 ตัวอักษรหรือน้อยกว่า)ทวีตแรกต้องมีชื่อของคอมไพเลอร์ / ล่ามชื่อของโปรแกรมและอาร์กิวเมนต์บรรทัดคำสั่งใด ๆ
- มันจะถูกบันทึกเป็นไฟล์ "P0"
- ทวีต N ต่อไปนี้ต้องมีโปรแกรมเป็นชุดของบรรทัด
- ทวีตแต่ละรายการจะถูกเก็บไว้ในไฟล์ที่มีชื่อ T <n> โดยที่ n คือ 1..N
- แต่ละบรรทัดจะถูกเพิ่มไปยังบรรทัดก่อนหน้าและรวบรวมหรือตีความ มันจะต้องผลิตวัตถุไฟล์หรือโปรแกรมที่ถูกต้อง
- โปรแกรมไม่จำเป็นต้องทำงานได้จนกว่าจะมีการเพิ่มบรรทัดสุดท้าย
โปรแกรมจะทำงานในลักษณะต่อไปนี้(pseudo-bash)
interp,prog,args = split P0 /\s/ touch $prog for file in ./T* do cat $prog file > $prog $interp $prog $args die("FAIL") if $? #detect error done
ล่ามจะต้องเป็นโปรแกรมที่สามารถใช้งานได้ทั่วไปที่ไม่ได้ใช้ Tetris
การให้คะแนน :
ทวีตน้อยที่สุดรวมถึง P0 ความสัมพันธ์ที่ขาดจากจำนวนตัวอักษรสำรองมากที่สุด (140 * num ทวีต - จำนวนตัวอักษรทั้งหมด)
รายการตัวอย่าง
chrome a.htm
<html><div id="output"></div></html>
<script>cool java script here</script>
คะแนน = 3 (334 สำรอง)
cc a.c ;a.out
main(){/*cool prog here*/}
คะแนน = 2 (241 สำรอง)
tetris
คะแนน = 1 (134 สำรอง) ถ้ามันถูกกฎหมายซึ่งไม่ใช่
ขอขอบคุณเป็นพิเศษ
ฉันได้รับอนุญาตให้โพสต์สิ่งนี้โดยความยินยอมของ Ashelly ที่นี่