Coding Around The Clock

47

Tulis satu baris program yang panjangnya dua atau lebih karakter yang tidak mengandung terminator garis dan tidak membutuhkan input. Misalnya, program Anda mungkin:

MyProgram

Ketika program Anda diatur ke dalam bentuk-bentuk yang dibuat oleh jarum jam pada pukul 12, 3, 6, dan 9, program ini perlu menampilkan nomor jam yang sesuai. Tidak ada waktu lain yang perlu didukung.

Secara khusus:

  • Ketika program Anda diatur seperti jarum jam pada pukul 12 (πŸ•›)

    m
    a
    r
    g
    o
    r
    P
    y
    M
    

    menjalankannya harus menampilkan 12.

  • Ketika program Anda diatur seperti jarum jam pada pukul 3 (πŸ•’)

    m
    a
    r
    g
    o
    r
    P
    y
    MyProgram
    

    menjalankannya harus menampilkan 3.

  • Ketika program Anda diatur seperti jarum jam pada pukul 6 (πŸ••)

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

    menjalankannya harus menampilkan 6.

  • Ketika program Anda diatur seperti jarum jam pada pukul 9 (πŸ•˜)

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

    menjalankannya harus menampilkan 9.

Catatan

  • Karakter pertama dalam program Anda selalu ditempatkan di tengah jam. (Perhatikan bagaimana hanya ada satu Mdalam contoh jam 6.)

  • Setiap karakter non-baris baru dapat digunakan untuk membuat indentasi program untuk pengaturan jam 9. Dalam contoh .digunakan, tetapi ruang atau /atau #akan sama validnya.

  • Untuk pengaturan jam 3, tidak boleh ada karakter di daerah kanan atas yang kosong. (mis. biarkan kosong, jangan mengisinya dengan spasi.)

  • Pengaturan program awal ( MyProgramsebagaimana adanya) tidak perlu melakukan apa pun. Hanya pengaturan jam 12, 3, 6, dan 9 yang perlu memiliki output yang benar dan terdefinisi dengan baik.

  • Kode yang hanya berfungsi sebagai fungsi atau perintah REPL tidak diizinkan. Masing-masing dari empat pengaturan harus siap dijalankan sebagai program penuh sebagaimana adanya.

Program terpendek dalam byte menang. misal MyProgrammemiliki panjang 9 byte.

Hobi Calvin
sumber
27
Saya tidak tahu bagaimana memulai melakukan ini
Nic Hartley
1
Apakah boleh jika karakter dicetak lalu dihapus dengan backspace?
feersum
5
Berikut skrip CJam untuk menghasilkan keempat kode dari satu baris dan karakter padding: cjam.tryitonline.net/... Jangan ragu untuk memasukkannya dalam posting.
Martin Ender
4
Saya akan mencoba ini di Brainfuck, tapi ternyata tantangannya mengacaukan otak saya sebelum BF bisa.
kucing
2
@cat Saya percaya itu tidak mungkin karena program 3dan 6tidak bisa dibedakan dengan Brainfuck karena hanya berbeda di spasi putih.
Martin Ender

Jawaban:

37

GolfScript, 11 10 byte

21;;3#9];6

Digunakan #sebagai karakter padding.

jam 12

6
;
]
9
#
3
;
;
1
2

Cobalah online!

Bagaimana itu bekerja.

  • 6didorong pada tumpukan, ;buang.

  • ] membungkus tumpukan dalam sebuah array (tidak mempengaruhi output).

  • 9dan 3didorong pada tumpukan, ;dan ;buang.

  • Akhirnya, 1dan 2didorong pada tumpukan, dan dicetak secara implisit tanpa pemisahan.

Jam 3

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

Cobalah online!

Bagaimana itu bekerja

  • 6didorong pada tumpukan, ;buang.

  • ] membungkus tumpukan dalam sebuah array (tidak mempengaruhi output).

  • 9dan 3didorong pada tumpukan, ;dan ;buang.

  • 1dan 21didorong pada tumpukan, ;;buang.

  • 3 didorong pada tumpukan.

  • # mulai komentar hingga akhir baris.

jam 6

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

Cobalah online!

Bagaimana itu bekerja

  • 6didorong pada tumpukan, ;buang.

  • ] membungkus tumpukan dalam sebuah array (tidak mempengaruhi output).

  • 9dan 3didorong pada tumpukan, ;dan ;buang.

  • 1, 2dan 1didorong pada tumpukan.

  • ;dan ;buang yang terakhir 1dan 2.

  • 3dan 9didorong pada tumpukan.

  • ]dan ;bungkus stack dalam sebuah array dan buang, membersihkan stack.

  • 6 didorong pada tumpukan.

pukul 9

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

Cobalah online!

Bagaimana itu bekerja

  • Semua baris kecuali yang terakhir adalah komentar.

  • 6didorong pada tumpukan, ;buang.

  • ] membungkus tumpukan dalam sebuah array (tidak mempengaruhi output).

  • 9 didorong pada tumpukan.

  • # mulai komentar hingga akhir baris.

Dennis
sumber
25

> <> , 20 byte

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

Ada unsintables di sana, yaitu:

  • Setelah Xitu\x06\t
  • Setelah citu\x03

Bagian yang sama dari kode sumber dijalankan setiap kali, menggunakan gdua bagian dari kode sumber untuk menentukan apa yang harus dikurangi dari 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

Jam 12 | Jam 3 | Jam 6 | Jam 9 (terlihat tidak selaras karena tab)

Sp3000
sumber
7
"12 suara 0 jawaban? Tunggu sampai Sp membuktikannya sepele." –Helka, sedang mengobrol
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

Digunakan <sebagai karakter padding.

Jam 12 | Jam 3 | Jam 6 | pukul 9

jam 12

Yang 1dan 2yang dekat jatuhnya atas selama 3 siklus. Ketika mereka mencapai Woperator, operator menempatkan nomor O, yang mewakili output.

Di 1bagian ini

1


V

H

jatuh selama 2 siklus, Voperator memindahkannya ke bawah dan pada siklus berikutnya mengaktifkan Hoperator yang mengakhiri program.

Jam 3

Ojuga benda-benda yang bergerak dan jatuh. Karena kode sekarang memiliki garis dengan lebih dari satu karakter, semua baris lainnya diisi dengan spasi kosong. Semua Obergerak ke kanan dan jatuh, menyebabkan Woperator tidak memiliki tempat untuk mengirim 1dan 2.

Satu-satunya Oyang tidak bergerak adalah yang terperangkap di tengah. The 3atas jatuh selama 4 siklus ke W.

Kemudian angka yang jatuh mengisi 4 spasi antara Wdan 3. Ketika diisi, nomor lain dapat melewati mereka semua dan mencapai Hoperator yang mengakhiri program.

jam 6

1


H
#
6


W
O

Sangat mirip dengan 12, 6jatuh ke Wdan 1ke H. Ini terjadi dalam 2 siklus, mengakhiri program sebelum 12 kasus terjadi.

pukul 9

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

(Saya menunjukkan satu kolom <karena yang lain tidak melakukan apa-apa).

The Vpicks up 9dan bergerak ke pipa bawah, yang mengalihkan objek ke kiri. Pipa <memindahkan objek ke bawah dan yang berikutnya ke kanan. The VOperator menempatkan 9di ruang bawah dan kemudian dikirim ke output.

Yang 1membuat gerakan sama dan mencapai H, yang mengakhiri program. Ketika pipa memindahkan objek dalam siklus yang sama, semua ini membutuhkan satu siklus tunggal.

DarkPhantom
sumber