Mã hóa xung quanh đồng hồ


47

Viết chương trình một dòng dài hai hoặc nhiều ký tự không chứa dấu kết thúc dòng và không có đầu vào. Ví dụ: chương trình của bạn có thể là:

MyProgram

Khi chương trình của bạn được sắp xếp thành các hình dạng mà kim đồng hồ tạo ra vào lúc 12, 3, 6 và 9 giờ, nó cần xuất ra số giờ tương ứng. Không có thời gian khác cần được hỗ trợ.

Đặc biệt:

  • Khi chương trình của bạn được sắp xếp như kim đồng hồ vào lúc 12 giờ (🕛)

    m
    a
    r
    g
    o
    r
    P
    y
    M
    

    chạy nó nên đầu ra 12.

  • Khi chương trình của bạn được sắp xếp như kim đồng hồ vào lúc 3 giờ (🕒)

    m
    a
    r
    g
    o
    r
    P
    y
    MyProgram
    

    chạy nó nên đầu ra 3.

  • Khi chương trình của bạn được sắp xếp như kim đồng hồ vào lúc 6 giờ (🕕)

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

    chạy nó nên đầu ra 6.

  • Khi chương trình của bạn được sắp xếp như kim đồng hồ vào lúc 9 giờ (🕘)

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

    chạy nó nên đầu ra 9.

Ghi chú

  • Ký tự đầu tiên trong chương trình của bạn luôn được đặt ở trung tâm của đồng hồ. (Lưu ý cách chỉ có một Mtrong ví dụ 6 giờ.)

  • Bất kỳ một ký tự không phải dòng mới nào cũng có thể được sử dụng để thụt lề chương trình cho sự sắp xếp 9 giờ. Trong các ví dụ .được sử dụng, nhưng không gian hoặc /hoặc #sẽ hợp lệ.

  • Đối với sắp xếp 3 giờ, không có ký tự nào ở khu vực phía trên bên phải trống. (tức là giữ trống, đừng điền vào chỗ trống.)

  • Việc sắp xếp chương trình ban đầu ( MyProgramnhư hiện tại) không cần phải làm gì cả. Chỉ các sắp xếp 12, 3, 6 và 9 giờ cần có đầu ra chính xác, được xác định rõ.

  • Mã chỉ hoạt động như một chức năng hoặc lệnh REPL không được phép. Mỗi trong bốn sắp xếp nên sẵn sàng để chạy như các chương trình đầy đủ.

Chương trình ngắn nhất tính bằng byte thắng. ví dụ: MyProgramcó độ dài 9 byte.


27
Tôi không biết làm thế nào để bắt đầu làm việc này
Nic Hartley

1
Có ổn không nếu một ký tự được in và sau đó bị xóa bằng backspace?
frageum

5
Đây là tập lệnh CJam để tạo tất cả bốn mã từ một dòng và ký tự đệm: cjam.tryitonline.net/. Hãy thoải mái đưa nó vào bài viết.
Martin Ender

4
Tôi sẽ thử điều này ở Brainfuck, nhưng hóa ra thử thách đã làm tôi suy sụp trước khi BF có thể.
mèo

2
@cat Tôi tin rằng điều đó là không thể bởi vì các chương trình 36sẽ không thể phân biệt được với Brainfuck vì chúng chỉ khác nhau về khoảng trắng.
Martin Ender

Câu trả lời:


37

GolfScript, 11 10 byte

21;;3#9];6

Sử dụng #như nhân vật đệm.

12 giờ

6
;
]
9
#
3
;
;
1
2

Hãy thử trực tuyến!

Làm thế nào nó hoạt động.

  • 6được đẩy vào ngăn xếp, ;loại bỏ nó.

  • ] kết thúc ngăn xếp trong một mảng (không ảnh hưởng đến đầu ra).

  • 93được đẩy lên ngăn xếp, ;;loại bỏ chúng.

  • Cuối cùng, 12được đẩy lên ngăn xếp, và in ngầm mà không tách rời.

3 giờ

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

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

  • 6được đẩy vào ngăn xếp, ;loại bỏ nó.

  • ] kết thúc ngăn xếp trong một mảng (không ảnh hưởng đến đầu ra).

  • 93được đẩy lên ngăn xếp, ;;loại bỏ chúng.

  • 121được đẩy vào ngăn xếp, ;;loại bỏ chúng.

  • 3 được đẩy vào ngăn xếp.

  • # bắt đầu một bình luận cho đến cuối dòng

6 giờ

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

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

  • 6được đẩy vào ngăn xếp, ;loại bỏ nó.

  • ] kết thúc ngăn xếp trong một mảng (không ảnh hưởng đến đầu ra).

  • 93được đẩy lên ngăn xếp, ;;loại bỏ chúng.

  • 1, 21được đẩy vào ngăn xếp.

  • ;;loại bỏ cuối cùng 12.

  • 39được đẩy vào ngăn xếp.

  • ];bọc ngăn xếp trong một mảng và loại bỏ nó, xóa ngăn xếp.

  • 6 được đẩy vào ngăn xếp.

9 giờ

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

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

  • Tất cả các dòng nhưng cuối cùng là ý kiến.

  • 6được đẩy vào ngăn xếp, ;loại bỏ nó.

  • ] kết thúc ngăn xếp trong một mảng (không ảnh hưởng đến đầu ra).

  • 9 được đẩy vào ngăn xếp.

  • # bắt đầu một bình luận cho đến cuối dòng


25

> <> , 20 byte

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

Không có dấu vết trong đó, cụ thể là:

  • Sau X\x06\t
  • Sau c\x03

Cùng một phần của mã nguồn được chạy mỗi lần, sử dụng gtrên hai phần của mã nguồn để xác định những gì cần trừ từ 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

12 giờ | 3 giờ | 6 giờ | 9 giờ (có vẻ không đúng do tab)


7
"12 phiếu 0 câu trả lời? Hãy đợi cho đến khi Sp chứng minh điều đó không quan trọng." LọHelka, trong trò chuyện
Alex A.

1

ROOP , 54 byte

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

Sử dụng <như nhân vật đệm.

12 giờ | 3 giờ | 6 giờ | 9 giờ

12 giờ

Cái 12gần đỉnh rơi trong 3 chu kỳ. Khi chúng đến Wtoán tử, toán tử đặt số vào O, đại diện cho đầu ra.

Phần 1này

1


V

H

giảm trong 2 chu kỳ, Vtoán tử di chuyển nó xuống bên dưới và ở chu kỳ tiếp theo kích hoạt Htoán tử kết thúc chương trình.

3 giờ

Ocũng là những vật di chuyển và rơi xuống. Vì mã bây giờ có một dòng có nhiều hơn một ký tự, tất cả các dòng khác chứa đầy các khoảng trống. Tất cả Odi chuyển sang phải và rơi, khiến các Wnhà khai thác không có nơi để gửi 12.

Cái duy nhất Okhông di chuyển là cái bị kẹt ở trung tâm. Các 3thác trên cho 4 chu kỳ đến W.

Sau đó, các số rơi đang lấp đầy 4 khoảng trống giữa W3. Khi nó được điền, một số khác có thể vượt qua tất cả chúng và đến Hnhà điều hành kết thúc chương trình.

6 giờ

1


H
#
6


W
O

Rất giống với 12, 6rơi vào W1đến H. Điều này xảy ra trong 2 chu kỳ, kết thúc chương trình trước khi 12 trường hợp xảy ra.

9 giờ

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

(Tôi hiển thị một cột duy nhất <vì những người khác không làm gì cả).

Người Vnhặt lên 9và di chuyển nó đến đường ống bên dưới, làm lệch hướng đối tượng sang trái. Các ống <di chuyển đối tượng xuống và tiếp theo bên phải. Các Vnhà điều hành đặt 9trong không gian bên dưới và sau đó nó được gửi tới đầu ra.

Các 1chuyển động bằng nhau và đạt đến H, kết thúc chương trình. Khi các đường ống di chuyển các đối tượng trong cùng một chu kỳ, tất cả điều này chỉ mất một chu kỳ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.