24 Saat Kodlama


47

Satır sonlandırıcılar içermeyen ve giriş yapmadan iki veya daha fazla karakter uzunluğunda tek bir satır programı yazın . Örneğin, programınız şunlar olabilir:

MyProgram

Programınız bir saatin saat 12, 3, 6 ve 9'da yaptığı şekillerde düzenlendiğinde ilgili saat numarasını vermesi gerekir. Başka zamanların desteklenmesi gerekmez.

özellikle:

  • Programınız saat 12 gibi saat elleri gibi ayarlandığında (🕛)

    m
    a
    r
    g
    o
    r
    P
    y
    M
    

    çalışan çıktı olmalıdır 12.

  • Programınız saat 3 yönünde saat elleri gibi ayarlandığında (🕒)

    m
    a
    r
    g
    o
    r
    P
    y
    MyProgram
    

    çalışan çıktı olmalıdır 3.

  • Programınız saat 6 gibi saat elleri gibi ayarlandığında (🕕)

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

    çalışan çıktı olmalıdır 6.

  • Programınız saat 9 yönünde (ellerinde) saat gibi ayarlandığı zaman

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

    çalışan çıktı olmalıdır 9.

notlar

  • Programınızdaki ilk karakter her zaman saatin ortasına yerleştirilir. ( MSaat 6 örneğinde sadece bir tanesinin nasıl olduğuna dikkat edin.)

  • Newline olmayan herhangi bir karakter, programı saat 9 düzenlemesi için girintili yapmak için kullanılabilir. Örneklerde .kullanılan, ancak boşluk ya /da ya da #tam olarak geçerli olacaktır.

  • Saat 3'teki düzenleme için, boş sağ üst bölgede hiçbir karakter olmamalıdır. (yani boş tutun, boşluklarla doldurmayın.)

  • İlk program düzenlemesinin ( MyProgramolduğu gibi) hiçbir şey yapması gerekmez. Yalnızca saat 12, 3, 6 ve 9 saatindeki düzenlemelerin doğru ve iyi tanımlanmış çıktıya sahip olması gerekir.

  • Yalnızca bir işlev veya REPL komutu olarak çalışan kodlara izin verilmez. Dört düzenlemenin her biri olduğu gibi tam program olarak çalışmaya hazır olmalıdır.

Bayt cinsinden en kısa program kazanır. örneğin MyProgram9 bayt uzunluğa sahiptir.


27
Buna nasıl başlayacağımı bile bilmiyorum
Nic Hartley

1
Bir karakterin basılması ve ardından geri silme ile silinmesi tamam mı?
feersum

5
İşte dört kodun tümünü tek bir satırdan ve bir doldurma karakterinden üreten bir CJam betiği: cjam.tryitonline.net/… Gönderiye eklemekten çekinmeyin.
Martin Ender

4
Bunu Brainfuck'ta deneyecektim, ama BF'nin yapabilmesinden önce beynimin becerdiği zorluk ortaya çıktı.
kedi

2
@ cat'in imkansız olduğuna inanıyorum çünkü programlar 3ve 6Brainfuck'a ayırt edilemeyecekleri için beyaz boşluklarda farklı oldukları için.
Martin Ender

Yanıtlar:


37

GolfScript, 11 10 bayt

21;;3#9];6

Kullanım Alanları #dolgu karakteri olarak.

saat 12

6
;
]
9
#
3
;
;
1
2

Çevrimiçi deneyin!

Nasıl çalışır.

  • 6yığına itilir, ;atar.

  • ] yığını bir diziye sarar (çıktıyı etkilemez).

  • 9ve 3yığına itilir ;ve ;atılır.

  • Son olarak, istifin üzerine itilir 1ve 2tamamen ayrılmadan yazdırılır.

saat 3

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

Çevrimiçi deneyin!

Nasıl çalışır

  • 6yığına itilir, ;atar.

  • ] yığını bir diziye sarar (çıktıyı etkilemez).

  • 9ve 3yığına itilir ;ve ;atılır.

  • 1ve 21yığına itilir, ;;onları atar.

  • 3 yığına itilir.

  • # Satırın sonuna kadar bir yorum başlatır.

saat 6

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

Çevrimiçi deneyin!

Nasıl çalışır

  • 6yığına itilir, ;atar.

  • ] yığını bir diziye sarar (çıktıyı etkilemez).

  • 9ve 3yığına itilir ;ve ;atılır.

  • 1, 2Ve 1yığın üzerinde itilir.

  • ;ve ;sonuncuyu atın 1ve 2.

  • 3ve 9yığına itilir.

  • ]ve ;yığını bir diziye sarın ve yığını kaldırarak atın.

  • 6 yığına itilir.

saat 9

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

Çevrimiçi deneyin!

Nasıl çalışır

  • Tüm satırlar ancak sonuncusu yorumdur.

  • 6yığına itilir, ;atar.

  • ] yığını bir diziye sarar (çıktıyı etkilemez).

  • 9 yığına itilir.

  • # Satırın sonuna kadar bir yorum başlatır.


25

> <> , 20 bayt

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

İçinde yazdırılamaz şeyler var, yani:

  • sonra XDİR\x06\t
  • sonra cDİR\x03

Kaynak kodun aynı kısmı, g12'den ne çıkarılacağını belirlemek için kaynak kodun iki parçasını kullanarak çalıştırılır .

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

Saat 12 | Saat 3 | Saat 6 | Saat 9 (sekme nedeniyle yanlış hizalanmış görünüyor)


7
"12 oy 0 yanıt verdi? Sp bunun önemsiz olduğunu kanıtlayana kadar bekleyin." –Helka, sohbette
Alex A.

1

ROOP , 54 bayt

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

Kullanım Alanları <dolgu karakteri olarak.

Saat 12 | Saat 3 | Saat 6 | saat 9

saat 12

1Ve 23 siklus üst sonbaharda yakın olduğunu. WOperatöre ulaştıklarında, operatör Oçıktısını temsil eden sayıyı yerleştirir .

1Bu bölümde

1


V

H

2 döngü düştü, Voperatör onu aşağıya taşır ve bir sonraki döngüde Hprogramı sonlandıran operatörü etkinleştirir .

saat 3

Oaynı zamanda hareket eden ve düşen nesnelerdir. Kod şimdi birden fazla karakter içeren bir satıra sahip olduğundan, diğer tüm satırlar boş alanlarla doldurulur. Tüm Oyol açan sağ ve sonbaharda gider, Woperatörler göndermek yerleri yok etmek 1ve 2.

Sadece Odeğil bu hareketin merkezinde sıkışıp biridir. 3Yukarıdaki 4 döngü düşer W.

Sonra düşen sayılar Wve arasındaki 4 boşluğu dolduruyor 3. Doldurulduğunda, başka bir numara hepsinin üzerinden geçebilir Hve programı sonlandıran operatöre ulaşabilir .

saat 6

1


H
#
6


W
O

12 çok benzer, 6düşüyor Wve 1hiç H. Bu, 12 durum gerçekleşmeden önce programı sonlandıran 2 döngü halinde gerçekleşir.

saat 9

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

( <Diğerlerinin hiçbir şey yapmadığı için tek bir sütun gösteriyorum ).

VYukarı alır 9ve sola nesne yönünü değiştiren aşağıdaki borusuna hareket eder. Boru <nesneyi aşağıya, diğeri de sağa taşır. VOperatör koymak 9aşağıdaki boşluğa ve daha sonra çıkışa gönderilir.

1Eşit hareketler yapar ve ulaştığı Hprogramı sona erer. Borular aynı döngü içinde nesneleri hareket ettirdikçe, tüm bunlar tek bir döngü alır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.