24 시간 코딩


47

줄 종결 자를 포함하지 않고 입력을 받지 않는 2 줄 이상의 문자를 한 줄로 작성하십시오 . 예를 들어, 프로그램은 다음과 같습니다.

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됩니다.

노트

  • 프로그램의 첫 번째 문자는 항상 시계 중앙에 위치합니다. ( M6시 예제에는 하나만 있는 방법에 유의하십시오 .)

  • 개행 문자가 아닌 문자를 사용하여 9시 방향으로 프로그램을 들여 쓸 수 있습니다. 이 예에서는 .공간이 사용 /되거나 #유효합니다.

  • 3시 방향의 경우 오른쪽 상단의 빈 영역에 문자가 없어야합니다. (예 : 비워 두거나 공백으로 채우지 마십시오.)

  • 초기 프로그램 배열 (있는 MyProgram그대로)은 아무것도 할 필요가 없습니다. 12시, 3시, 6시 및 9시 배열 만 정확하고 잘 정의 된 출력을 가져야합니다.

  • 함수 또는 REPL 명령으로 만 작동하는 코드는 허용되지 않습니다. 네 가지 배열 각각은 그대로 전체 프로그램으로 실행할 준비가되어 있어야합니다.

바이트 단위의 최단 프로그램이 이깁니다. 예를 들어 MyProgram길이는 9 바이트입니다.


27
이 작업을 시작하는 방법조차 모릅니다
Nic Hartley

1
문자를 인쇄 한 다음 백 스페이스로 지워도 괜찮습니까?
feersum

5
다음은 한 줄과 패딩 문자에서 4 개의 코드를 모두 생성하는 CJam 스크립트입니다. cjam.tryitonline.net/… 게시물에 자유롭게 포함하십시오.
Martin Ender

4
나는 Brainfuck에서 이것을 시도하려고했지만 BF 가하기 전에 내 두뇌를 망친 도전으로 밝혀졌습니다.
cat

2
그게 불가능 프로그램 때문에 생각 @cat 3그리고 6그들은 단지 공백의 차이로 브레인 퍽에 구별 될 것이다.
Martin Ender

답변:


37

GolfScript, 11 10 바이트

21;;3#9];6

#패딩 문자로 사용 합니다.

12시

6
;
]
9
#
3
;
;
1
2

온라인으로 사용해보십시오!

작동 방식

  • 6스택에 밀어 넣어 ;버립니다.

  • ] 스택을 배열로 래핑합니다 (출력에는 영향을 미치지 않음).

  • 93스택에 밀어하는 ;;를 폐기합니다.

  • 마지막으로, 12스택에 밀어, 그리고 암시 적으로 분리없이 인쇄.

3시

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

온라인으로 사용해보십시오!

작동 원리

  • 6스택에 밀어 넣어 ;버립니다.

  • ] 스택을 배열로 래핑합니다 (출력에는 영향을 미치지 않음).

  • 93스택에 밀어하는 ;;를 폐기합니다.

  • 121, 스택에 밀어 ;;그들을 삭제합니다.

  • 3 스택에 밀어 넣습니다.

  • # 줄 끝까지 주석을 시작합니다.

6시 정각

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

온라인으로 사용해보십시오!

작동 원리

  • 6스택에 밀어 넣어 ;버립니다.

  • ] 스택을 배열로 래핑합니다 (출력에는 영향을 미치지 않음).

  • 93스택에 밀어하는 ;;를 폐기합니다.

  • 1, 21스택에 푸시된다.

  • ;그리고 ;마지막을 폐기 1하고 2.

  • 39스택에 푸시된다.

  • ];배열 스택 싸서 스택 지우기 폐기.

  • 6 스택에 밀어 넣습니다.

9시

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

온라인으로 사용해보십시오!

작동 원리

  • 마지막 줄을 제외한 모든 줄은 주석입니다.

  • 6스택에 밀어 넣어 ;버립니다.

  • ] 스택을 배열로 래핑합니다 (출력에는 영향을 미치지 않음).

  • 9 스택에 밀어 넣습니다.

  • # 줄 끝까지 주석을 시작합니다.


25

> <> , 20 바이트

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

거기에는 인쇄 할 수없는 것들이 있습니다.

  • 애프터 XIS\x06\t
  • 애프터 cIS\x03

g12에서 빼야 할 것을 결정하기 위해 소스 코드의 두 부분을 사용하여 소스 코드의 동일한 부분이 매번 실행됩니다 .

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시 | 3시 | 6시 | 9시 (탭으로 인해 잘못 정렬 된 것 같습니다)


7
"12 투표 0 답변? Sp가 사소한 일임을 증명할 때까지 기다리십시오." –Helka, 채팅 중
Alex A.

1

루프 , 54 바이트

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

<패딩 문자로 사용 합니다.

12시 | 3시 | 6시 | 9시

12시

123 사이클의 최고 가을 근처에있다. 그들이 W연산자에 도달하면 , 연산자는 숫자를에 위치 O시킵니다. 이것은 출력을 나타냅니다.

1이 부분에서

1


V

H

2 사이클 동안 떨어지면 V작업자가 아래로 이동하고 다음 사이클 H에서 프로그램을 종료하는 작업자를 활성화합니다 .

3시

O또한 움직이는 물체입니다. 코드에는 이제 둘 이상의 문자가 포함 된 줄이 있으므로 다른 모든 줄은 빈 공간으로 채워집니다. 모든 O의 원인이 우측과 가을에 이동 W통신 사업자는을 보낼 곳이 없습니다 12.

O움직이지 않는 유일한 것은 중앙에 갇힌 것입니다. 는 3위의 4 사이클 떨어진다 W.

그러면 떨어지는 숫자가 W와 사이의 4 칸을 채우고 3있습니다. 채워지면 다른 번호가 모든 번호를 통과 H하여 프로그램을 종료하는 운영자에게 도달 할 수 있습니다 .

6시 정각

1


H
#
6


W
O

12 매우 유사는이 6받는 폭포 W1받는 사람 H. 이것은 2 사이클로 발생하며 12 건이 발생하기 전에 프로그램을 종료합니다.

9시

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

( <다른 열은 아무것도하지 않기 때문에 단일 열을 보여줍니다 ).

V업 상품 9과 왼쪽의 오브젝트 편향 파이프 아래로 이동하여. 파이프 <는 개체를 아래로 이동하고 다음 개체를 오른쪽으로 이동합니다. V오퍼레이터는 넣어 9아래 공간에 후이를 출력으로 보내진다.

1동일하게 동작하고, 도달 H프로그램을 종료한다. 파이프가 동일한 주기로 객체를 이동함에 따라이 모든 것이 단일 주기로 이루어집니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.