การเข้ารหัสรอบนาฬิกา


47

เขียนโปรแกรมบรรทัดเดียวอย่างน้อยสองตัวอักษรที่ไม่มีตัวยุติบรรทัดและไม่ต้องป้อนข้อมูล ตัวอย่างเช่นโปรแกรมของคุณอาจเป็น:

MyProgram

เมื่อโปรแกรมของคุณถูกจัดเรียงเป็นรูปร่างที่เข็มนาฬิกาทำที่ 12, 3, 6 และ 9 นาฬิกามันจะต้องส่งออกหมายเลขชั่วโมงที่สอดคล้องกัน ไม่ต้องการเวลาอื่นรองรับ

โดยเฉพาะ:

  • เมื่อโปรแกรมของคุณถูกจัดเรียงเหมือนเข็มนาฬิกาเวลา 12 นาฬิกา (🕛)

    m
    a
    r
    g
    o
    r
    P
    y
    M
    

    12ทำงานที่ควรเอาท์พุท

  • เมื่อโปรแกรมของคุณถูกจัดเรียงเหมือนเข็มนาฬิกาเวลา 3 นาฬิกา (🕒)

    m
    a
    r
    g
    o
    r
    P
    y
    MyProgram
    

    3ทำงานที่ควรเอาท์พุท

  • เมื่อโปรแกรมของคุณถูกจัดเรียงเหมือนเข็มนาฬิกาเวลา 6 นาฬิกา (🕕)

    m
    a
    r
    g
    o
    r
    P
    y
    M
    y
    P
    r
    o
    g
    r
    a
    m
    

    6ทำงานที่ควรเอาท์พุท

  • เมื่อโปรแกรมของคุณถูกจัดเรียงเหมือนเข็มนาฬิกาเวลา 9 นาฬิกา (🕘)

    ........m
    ........a
    ........r
    ........g
    ........o
    ........r
    ........P
    ........y
    margorPyM
    

    9ทำงานที่ควรเอาท์พุท

หมายเหตุ

  • อักขระตัวแรกในโปรแกรมของคุณจะอยู่ตรงกลางของนาฬิกาเสมอ (โปรดสังเกตว่ามีเพียงหนึ่งMในตัวอย่าง 6 นาฬิกาเท่านั้น)

  • อักขระที่ไม่ขึ้นบรรทัดใหม่ตัวใดตัวหนึ่งอาจถูกใช้เพื่อเยื้องโปรแกรมสำหรับการจัดเรียง 9 นาฬิกา ในตัวอย่าง.ถูกใช้ แต่เว้นวรรค/หรือ#จะถูกต้อง

  • สำหรับการเรียง 3 นาฬิกาไม่ควรมีตัวอักษรอยู่ในพื้นที่ด้านบนขวาว่าง (เช่นทำให้มันว่างเปล่าอย่าเติมด้วยช่องว่าง)

  • การจัดโปรแกรมเริ่มต้น ( MyProgramตามที่เป็น) ไม่จำเป็นต้องทำอะไร เฉพาะการจัดเรียงแบบ 12, 3, 6 และ 9 นาฬิกาเท่านั้นที่จะต้องมีเอาต์พุตที่ถูกต้องและชัดเจน

  • ไม่อนุญาตให้ใช้รหัสที่ทำงานเป็นฟังก์ชันหรือคำสั่ง REPL การเตรียมการทั้งสี่ข้อแต่ละรายการควรพร้อมที่จะเรียกใช้เป็นโปรแกรมเต็มรูปแบบตามที่เป็นอยู่

โปรแกรมที่สั้นที่สุดในหน่วยไบต์ชนะ เช่นMyProgramมีความยาว 9 ไบต์


27
ฉันไม่รู้ว่าจะเริ่มทำสิ่งนี้ได้อย่างไร
Nic Hartley

1
ไม่เป็นไรถ้าพิมพ์ตัวอักษรแล้วลบด้วย backspace หรือไม่
feersum

5
นี่คือสคริปต์ CJam เพื่อสร้างรหัสทั้งสี่จากบรรทัดเดียวและอักขระการขยาย: cjam.tryitonline.net/ ...... โปรดรวมไว้ในโพสต์
Martin Ender

4
ฉันจะลองทำสิ่งนี้ใน Brainfuck แต่กลับกลายเป็นความท้าทายที่ทำให้สมองของฉันสับสนก่อนที่ BF จะทำได้
แมว

2
@ แมวฉันเชื่อว่ามันเป็นไปไม่ได้เพราะโปรแกรม3และ6จะแยกแยะกับ Brainfuck ไม่ได้เนื่องจากพวกมันต่างกันในช่องว่างเท่านั้น
Martin Ender

คำตอบ:


37

GolfScript 11 11ไบต์

21;;3#9];6

ใช้#เป็นตัวรอง

12 นาฬิกา

6
;
]
9
#
3
;
;
1
2

ลองออนไลน์!

มันทำงานอย่างไร.

  • 6ถูกผลักลงบนสแต็กแล้ว;ละทิ้งไป

  • ] ล้อมรอบสแต็กในอาร์เรย์ (ไม่มีผลกับเอาต์พุต)

  • 9และ3ถูกผลักลงบนสแต็ก;และ;ทิ้งไป

  • ในที่สุด1และ2จะถูกผลักบนสแต็คและพิมพ์โดยปริยายโดยไม่มีการแยก

03:00

6
;
]
9
#
3
;
;
1
21;;3#9];6

ลองออนไลน์!

มันทำงานอย่างไร

  • 6ถูกผลักลงบนสแต็กแล้ว;ละทิ้งไป

  • ] ล้อมรอบสแต็กในอาร์เรย์ (ไม่มีผลกับเอาต์พุต)

  • 9และ3ถูกผลักลงบนสแต็ก;และ;ทิ้งไป

  • 1และ21ถูกผลักลงบนสแต็;;

  • 3 ถูกผลักลงบนสแต็ก

  • # เริ่มความคิดเห็นจนถึงจุดสิ้นสุดของบรรทัด

6 นาฬิกา

6
;
]
9
#
3
;
;
1
2
1
;
;
3
#
9
]
;
6

ลองออนไลน์!

มันทำงานอย่างไร

  • 6ถูกผลักลงบนสแต็กแล้ว;ละทิ้งไป

  • ] ล้อมรอบสแต็กในอาร์เรย์ (ไม่มีผลกับเอาต์พุต)

  • 9และ3ถูกผลักลงบนสแต็ก;และ;ทิ้งไป

  • 1, 2และ1จะผลักดันให้ในกอง

  • ;และ;ทิ้งที่ผ่านมาและ12

  • 3และ9ถูกผลักลงบนสแต็ก

  • ]และ;ห่อสแต็กในอาร์เรย์และทิ้งให้ล้างสแต็ก

  • 6 ถูกผลักลงบนสแต็ก

9 นาฬิกา

#########6
#########;
#########]
#########9
##########
#########3
#########;
#########;
#########1
6;]9#3;;12

ลองออนไลน์!

มันทำงานอย่างไร

  • บรรทัดทั้งหมด แต่สุดท้ายคือความคิดเห็น

  • 6ถูกผลักลงบนสแต็กแล้ว;ละทิ้งไป

  • ] ล้อมรอบสแต็กในอาร์เรย์ (ไม่มีผลกับเอาต์พุต)

  • 9 ถูกผลักลงบนสแต็ก

  • # เริ่มความคิดเห็นจนถึงจุดสิ้นสุดของบรรทัด


25

> <> , 20 ไบต์

X   n-+g+aa0g+9a2c!v

มี unprintables ในนั้นคือ:

  • หลังจากนั้นXก็คือ\x06\t
  • หลังจากนั้นcก็คือ\x03

รันซอร์สโค้ดส่วนเดียวกันทุกครั้งโดยใช้gซอร์สโค้ดสองส่วนเพื่อกำหนดว่าจะลบอะไรจาก 12

v                         Make IP move downwards
 !\x03                    Jump over the \x03
      c                   Push 12
       2a9+g              Get the char at position (2, 19), i.e. the \t for
                          3 o'clock, the \x03 for 9 o'clock, 0 otherwise
            0aa+g         Get the char at position (0, 20), i.e. first char on
                          the line after the X, \x06 for 6 o'clock
                 +        Add
                  -       Subtract from the 12
                   n      Output as number
                    \t    Unrecognised instruction - errors out

00:00 | 03:00 | 06:00 | 9 นาฬิกา (ดูไม่ตรงแนวเนื่องจากแท็บ)


7
"12 votes 0 คำตอบ? รอจนกว่า Sp จะพิสูจน์ว่าเป็นเรื่องเล็กน้อยโปรด" –Helka, ในการแชท
อเล็กซ์ A.

1

ROOP , 54 ไบต์

OW    3#H V  1#1  H#6  WO#H V>V1#OW V>V9#OW   2#OW   1

ใช้<เป็นตัวรอง

00:00 | 03:00 | 06:00 | 9 นาฬิกา

12 นาฬิกา

1และ2ที่อยู่ใกล้ตกชั้นนำสำหรับ 3 รอบ เมื่อพวกเขามาถึงWผู้ประกอบการผู้ประกอบการที่หมายเลขในOซึ่งหมายถึงการส่งออก

1ในส่วนนี้

1


V

H

ลดลงเป็นเวลา 2 รอบตัวVดำเนินการย้ายด้านล่างและในรอบถัดไปจะเปิดใช้งานตัวHดำเนินการที่สิ้นสุดโปรแกรม

03:00

Oยังเป็นวัตถุที่เคลื่อนที่และตกลง เนื่องจากรหัสในขณะนี้มีบรรทัดที่มีอักขระมากกว่าหนึ่งตัวบรรทัดอื่น ๆ จึงเต็มไปด้วยช่องว่าง ทั้งหมดOย้ายไปทางขวาและฤดูใบไม้ร่วงที่ก่อให้เกิดWผู้ประกอบการมีสถานที่ที่จะส่งไม่และ12

สิ่งเดียวOที่ไม่เคลื่อนไหวคือสิ่งที่ติดอยู่ตรงกลาง 3ตกข้างต้นสำหรับ 4 Wรอบไป

แล้วตัวเลขที่ลดลงจะเติมช่องว่าง 4 ระหว่างและW 3เมื่อกรอกแล้วหมายเลขอื่นสามารถส่งผ่านทั้งหมดและไปถึงHผู้ดำเนินการที่จบโปรแกรม

6 นาฬิกา

1


H
#
6


W
O

คล้ายกันมากกับ 12 6ตกไปWและไป1 Hสิ่งนี้เกิดขึ้นใน 2 รอบสิ้นสุดโปรแกรมก่อนเกิด 12 กรณี

9 นาฬิกา

<9
<V
<>
<V
< 
<W
<O
<#
<1
<V
<>
<V
< 
<H

(ฉันแสดงคอลัมน์เดียว<เพราะคนอื่นไม่ทำอะไรเลย)

Vหยิบขึ้น9และย้ายไปยังท่อด้านล่างซึ่ง deflects วัตถุไปทางซ้าย ไปป์<เลื่อนวัตถุลงและอีกอันไปทางขวา Vประกอบใส่9ในพื้นที่ดังต่อไปนี้และจากนั้นจะถูกส่งไปยังการส่งออก

1ทำให้การเคลื่อนไหวที่เท่าเทียมกันและถึงHซึ่งสิ้นสุดโปรแกรม ในขณะที่ท่อเคลื่อนที่วัตถุในรอบเดียวกันสิ่งนี้ทั้งหมดต้องใช้รอบเดียว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.