ตีความช่วงหลวม
ListSharpเป็นภาษาการเขียนโปรแกรมตีความที่มีคุณสมบัติมากมายหนึ่งในคุณสมบัติเหล่านั้นเป็นผู้สร้างช่วงดัชนี 1 ที่ทำงานเช่นนี้:
คุณกำหนดช่วงเป็น(INT) TO (INT)
หรือ(INT)
ที่ทั้งสองหรือ int เดียวสามารถไปจากค่า min ถึงmax int32
จากนั้นคุณสามารถใช้ช่วงเหล่านั้นเพื่อแยกองค์ประกอบของอาร์เรย์โดยไม่ต้องกลัวที่จะก้าวล้ำขอบเขตของมัน
ดังนั้น:
1 TO 5
สร้าง: {1,2,3,4,5}
3
สร้าง: {3}
สามารถเพิ่มช่วงได้โดยใช้AND
โอเปอเรเตอร์
1 TO 5 AND 3 TO 6
สร้าง: {1,2,3,4,5,3,4,5,6}
จำได้ว่ามันใช้ได้กับจำนวนลบเช่นกัน
3 TO -3
สร้าง: {3,2,1,0,-1,-2,-3}
ความท้าทายมีดังต่อไปนี้:
อินพุต
อาร์เรย์อักขระและประโยคช่วงที่กำหนดไว้ก่อนหน้าเป็นสตริง
เอาท์พุต
องค์ประกอบที่ 1 ตามดัชนีตำแหน่งของช่วง (ดัชนีที่ไม่อยู่ / ลบที่มีอยู่แปลเป็นอักขระว่าง)
วิธีที่จะชนะ
ในฐานะที่เป็นความท้าทายของcode-golfคุณควรสร้างโปรแกรมด้วยจำนวนไบต์ที่สั้นที่สุดที่จะชนะ
มันชี้ให้เห็นว่าไม่มีตัวอักษรว่างเปล่าดังนั้นคุณควรเพิกเฉยพวกเขา (ฉันแสดงให้พวกเขาที่นี่เพื่อให้ง่ายต่อการเข้าใจ แต่มันทำให้คนสับสน)
กรณีทดสอบ:
input array is:
{'H','e','l','l','o',' ','W','o','r','l','d'}
range clause:
"1 TO 3" => "Hel"
"5" => "o"
"-10 TO 10" => "Hello Worl"
"0 AND 2 AND 4" => "el"
"8 TO 3" => "oW oll"
"-300 AND 300" => ""
"1 TO 3 AND 3 TO 1" => "HelleH"
"-20 TO 0 AND 1 AND 4" => "Hl"
3 TO 3
เคยจะเป็นอินพุทและเอาท์พุทที่คาดหวังคืออะไร?
AND
การเพิ่มช่วงทวีคูณ นอกจากนี้คุณไม่ได้ตอบว่าเราสามารถใช้การทำดัชนีแบบ zero-based ซึ่งเป็นมาตรฐานในภาษาส่วนใหญ่
"0 TO 2"
=>{'H', 'e', 'l'}
?