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時の針のように配置されている場合(When)

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

    実行すると出力されます6

  • プログラムが9時の針のように配置されている場合(When)

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

    実行すると出力されます9

ノート

  • プログラムの最初の文字は常に時計の中央に配置されます。(M6時の例に1つしか存在しないことに注意してください。)

  • 改行以外の文字を使用して、9時の配置のプログラムをインデントできます。例で.は使用されていますが、スペースまたは/or #は同様に有効です。

  • 3時の配置では、空の右上領域に文字を配置しないでください。(つまり、空のままにして、スペースで埋めないでください。)

  • 初期のプログラム配置(現状のMyProgramまま)は何もする必要はありません。12時、3時、6時、および9時の配置にのみ、正確で明確な出力が必要です。

  • 関数またはREPLコマンドとしてのみ機能するコードは許可されません。4つの配置のそれぞれは、完全なプログラムとしてそのまま実行する準備ができている必要があります。

バイト単位の最短プログラムが優先されます。たとえばMyProgram、長さは9バイトです。


27
どうやってこれを始めるのかさえわからない
ニックハートリー

1
文字を印刷してからバックスペースで消去しても大丈夫ですか?
-feersum

5
以下に、1行とパディング文字から4つのコードすべてを生成するCJamスクリプトを示します。cjam.tryitonline.net/ …投稿に自由に追加してください。
マーティンエンダー

4
私はこれをBrainfuckで試しましたが、BFができる前に挑戦が私の脳を犯したことがわかりました。

2
私はプログラムのでそれは不可能だと考えてい@cat 36、彼らは空白のみが異なるようBrainfuckに区別できないだろう。
マーティンエンダー

回答:


37

GolfScript、11 10バイト

21;;3#9];6

#パディング文字として使用します。

12時

6
;
]
9
#
3
;
;
1
2

オンラインでお試しください!

使い方。

  • 6スタックにプッシュされ、;破棄されます。

  • ] スタックを配列にラップします(出力には影響しません)。

  • 9そして3スタックにプッシュ、されている;;、それらを捨てます。

  • 最後に、1そして2スタックにプッシュし、暗黙的に分離せずに印刷されています。

3時

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スタックにプッシュ、されている;;、それらを捨てます。

  • 12および1スタックにプッシュされます。

  • ;;最後1とを破棄し2ます。

  • 3そして9スタックにプッシュされています。

  • ]そして;配列内のスタックをラップし、それを破棄し、スタックをクリアします。

  • 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

ソースコードの同じ部分が毎回実行さgれ、ソースコードの2つの部分を使用して、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時 | 3時 | 6時 | 9時(タブのために位置がずれているように見える)


7
「12票0回答?Spが些細なことを証明するまで待ってください。」
アレックスA.

1

ROOP、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時

1そして23回のトップの秋の近くにあること。Wオペレーターに到達すると、オペレーターOは出力を表す番号をに入れます。

1この部分で

1


V

H

2サイクル落ちた場合、Vオペレーターはそれを下に移動し、次のサイクルでHプログラムを終了するオペレーターをアクティブにします。

3時

Oまた、移動および落下するオブジェクトです。コードには複数の文字を含む行があるため、他のすべての行は空のスペースで埋められます。すべてOが右および下に移動し、Wオペレータに1and を送信する場所がなくなり2ます。

唯一の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プログラムを終了します。パイプは同じサイクルでオブジェクトを移動するため、これにはすべて1サイクルかかります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.