ปัจจุบันที่ทำงานของฉันเราย้ายไปอยู่ที่อาคารใหม่ มันควรจะเป็นของทันสมัยและมีไฟอัตโนมัติ, บานประตูหน้าต่างม้วนลงอัตโนมัติและตอนนี้เป็นที่รู้จักในฐานะอาคารที่เป็นมิตรกับสิ่งแวดล้อมมากที่สุดในเมืองนี้
อย่างไรก็ตามมันใช้งานไม่ได้ผลจริงๆบางครั้งบานประตูหน้าต่างม้วนลงบางครั้งลงไปในวันที่มีเมฆมากและเมื่อพระอาทิตย์เริ่มส่องแสงและบางครั้งไฟก็ทำให้เกิดดิสโก้โดยการสลับเปิดและปิดทุกๆ 5-10 นาที นอกจากนี้เรายังไม่มีวิธีควบคุมด้วยตนเองของบานประตูหน้าต่างม้วนลงเหล่านี้หรืออุณหภูมิ แต่เรามีรีโมทสำหรับไฟ
รีโมทเหล่านี้มาโดยไม่มีคู่มือการใช้งานและมีปุ่มมากกว่า 20 ปุ่มที่ทำสิ่งต่าง ๆ ได้ทุกประเภทยกเว้นสิ่งที่คุณต้องการ ..
PS: ฉันเขียนความท้าทายนี้เมื่อ 1.5 เดือนก่อนใน Sandbox ในปัจจุบันเรารู้วิธีการทำงานของรีโมท ..
ข้อดีอย่างหนึ่งของอาคารนี้คือ 30 องศาเซลเซียสข้างนอก แต่ข้างในนั้นยังคงอุณหภูมิห้องที่ 21 ตลอดเวลา
นั่นคืออินโทรและการควบคุมระยะไกลสำหรับไฟเป็นแรงบันดาลใจให้กับความท้าทายนี้
ท้าทาย:
สมมติว่าเราเริ่มปิดหลอดไฟแล้ว:
L
จากนั้นเราก็กดปุ่มทุกชนิดแล้วส่งสัญญาณสถานะของหลอดไฟหลังจากนั้น
เราใช้หมายเลขต่อไปนี้สำหรับฟังก์ชั่นต่าง ๆ ของรีโมทควบคุมสำหรับหลอดไฟ เมื่อสัญลักษณ์ลบอยู่หน้าหมายเลขนั้นเราจะทำตรงกันข้าม
1
= ON;-1
= OFF2
= เพิ่มความแข็งแรง 25%;-2
= แรง (สลัว) ลดลง 25%3
= เพิ่มสเปรด 50%;-3
= ลดการแพร่กระจาย 50%4
= การสลับประเภทของแสง
ดังนั้นนี่เป็นสิ่งที่ค่อนข้างคลุมเครือดังนั้นให้เราเพิ่มความลึกของความหมายของแต่ละสิ่ง:
ดังนั้น-1
(OFF) ค่อนข้างชัดเจนและ1
จะไปที่สถานะ ON (50% สำหรับ2
และ 50% สำหรับ3
):
//
//
L ====
\\
\\
2
และ-2
แสงจะส่องไปไกลแค่ไหน ( ==
ต่อท้ายทุกๆ 25%):
0% (equal to a light bulb that is OFF)
L
25%
L ==
50%
L ====
75%
L ======
100%
L ========
3
และ-3
แสงนั้นแผ่ไปไกลแค่ไหน:
0%:
L ====
50%:
//
//
L ====
\\
\\
100%:
|| //
||//
L ====
||\\
|| \\
(หมายเหตุ: เมื่อใด2
และ3
ทั้งคู่อยู่ที่ 100% คุณจะมีสถานะนี้:
|| //
|| //
|| //
||//
L ========
||\\
|| \\
|| \\
|| \\
4
คือการสลับประเภทของแสง
Default:
//
L ==
\\
After toggling (note the single space before '/' instead of two):
/
L --
\
การป้อนข้อมูล:
คุณจะได้รับอินพุตที่มีการกดปุ่มที่เป็นไปได้ ตัวอย่างเช่น:
12-34
เอาท์พุท:
สถานะของหลอดไฟหลังจากกดปุ่มทั้งหมดของอินพุตจะถูกกดตามลำดับย่อย ดังนั้นด้วยตัวอย่างอินพุตด้านบนเรามีเอาต์พุตต่อไปนี้:
L ------
กฏท้าทาย:
- ข้อมูลที่ป้อนมี
1234-
(และไม่เคย-
มาก่อน4
) - คุณไม่สามารถไปต่ำกว่า 0% หรือสูงกว่า 100% หากจำนวนจะเพิ่ม / ลดลงเกินขอบเขตเหล่านี้คุณสามารถเพิกเฉยได้
- เมื่อหลอดไฟถูกปิดคุณสามารถละเว้นการกระทำใด ๆ และเมื่อเปิดอีกครั้งหลอดจะรีเซ็ตกลับสู่สถานะเริ่มต้น (50% สำหรับทั้ง
2
และ3
และเป็นค่าเริ่มต้น4
) ตัวอย่างเช่น:12-1-341
เพียงพิมพ์สถานะเริ่มต้นที่ระบุไว้ด้านบน (เคล็ดลับ: คุณสามารถละเว้นทุกสิ่งก่อนที่จะถึงจุดสุดท้าย1
ของอินพุต - ไม่รวม-1
) - ช่องว่างต่อท้ายเท่ากับความยาวของแสงหรือบรรทัดใหม่ต่อท้ายเดียวจะไม่ถูกยับยั้ง การเพิ่มบรรทัดใหม่ที่ไม่จำเป็นเป็นพิเศษนั้นไม่ได้เกิดขึ้น
- คุณได้รับอนุญาตให้รับอินพุตเป็นรายการจำนวนเต็มแทนที่จะเป็นสตริงเดียว ดังนั้นแทนที่จะเป็น
12-34
คุณสามารถ[1,2,-3,4]
ป้อนข้อมูลได้
กฎทั่วไป:
- นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ
อย่าปล่อยให้ภาษารหัสกอล์ฟกีดกันคุณจากการโพสต์คำตอบด้วยภาษาที่ไม่ได้เข้ารหัส พยายามหาคำตอบสั้น ๆ ที่เป็นไปได้สำหรับภาษาโปรแกรม 'ใด ๆ ' - กฎมาตรฐานจะใช้สำหรับคำตอบของคุณดังนั้นคุณจึงได้รับอนุญาตให้ใช้ STDIN / STDOUT ฟังก์ชัน / เมธอดพร้อมพารามิเตอร์ที่เหมาะสมโปรแกรมเต็มรูปแบบ การโทรของคุณ
- ช่องโหว่เริ่มต้นเป็นสิ่งต้องห้าม
- หากเป็นไปได้โปรดเพิ่มลิงค์พร้อมทดสอบรหัสของคุณ
- นอกจากนี้โปรดเพิ่มคำอธิบายหากจำเป็น
กรณีทดสอบ:
12-34
L ------
12-1-341
//
//
L ====
\\
\\
14-3224333-2
|| //
|| //
||//
L ======
||\\
|| \\
|| \\
142-1-314-3-322
L --------
1324-2-3
/
/
L ----
\
\
134
| /
|/
L ----
|\
| \
1-2-2-214-3-3-3
L ----
4
) ขอบคุณที่ถาม.
1
ถูกกดพารามิเตอร์จะถูกรีเซ็ตหรือไม่?
134
คืออะไร