Kodowanie przez całą dobę


47

Napisz program jednowierszowy o długości dwóch lub więcej znaków, który nie zawiera terminatorów linii i nie wymaga wprowadzania danych. Na przykład twoim programem może być:

MyProgram

Kiedy twój program jest ułożony w kształty, które wskazówki zegara wykonują o godzinie 12, 3, 6 i 9, musi podać odpowiednią liczbę godzin. Inne czasy nie muszą być obsługiwane.

Konkretnie:

  • Gdy program jest ułożony jak wskazówki zegara o godzinie 12 (🕛)

    m
    a
    r
    g
    o
    r
    P
    y
    M
    

    uruchomienie powinno dać wynik 12.

  • Gdy twój program jest ułożony jak wskazówki zegara o godzinie 3 (🕒)

    m
    a
    r
    g
    o
    r
    P
    y
    MyProgram
    

    uruchomienie powinno dać wynik 3.

  • Gdy program jest ułożony jak wskazówki zegara o godzinie 6 (🕕)

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

    uruchomienie powinno dać wynik 6.

  • Gdy program jest ułożony jak wskazówki zegara o godzinie 9 (🕘)

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

    uruchomienie powinno dać wynik 9.

Notatki

  • Pierwsza postać w twoim programie jest zawsze umieszczana na środku zegara. (Zwróć uwagę, że jest tylko jeden Mprzykład z godziny 6).

  • Dowolny znak nie będący znakiem nowej linii może być użyty do wcięcia programu dla ustawienia godziny 9. W przykładach .użyto spacji, ale spacja /lub #będzie równie poprawna.

  • W przypadku ustawienia na godzinę trzecią żadne znaki nie powinny znajdować się w pustym prawym górnym obszarze. (tzn. pozostaw puste, nie wypełniaj spacjami).

  • Wstępne ustawienie programu ( MyProgramjak jest) nie musi nic robić. Tylko ustawienia godziny 12, 3, 6 i 9 muszą mieć prawidłowe, dobrze zdefiniowane wyjście.

  • Kod, który działa tylko jako funkcja lub polecenie REPL, jest niedozwolony. Każde z czterech rozwiązań powinno być gotowe do uruchomienia tak pełnych programów, jak jest.

Najkrótszy program w bajtach wygrywa. np. MyProgramma długość 9 bajtów.


27
Nie mam pojęcia, jak zacząć to robić
Nic Hartley,

1
Czy to w porządku, jeśli znak jest drukowany, a następnie usuwany za pomocą spacji?
feersum

5
Oto skrypt CJam do generowania wszystkich czterech kodów z jednego wiersza i znaku dopełniającego: cjam.tryitonline.net/… Możesz dołączyć go do posta.
Martin Ender,

4
Chciałem spróbować tego w Brainfuck, ale okazało się, że wyzwanie spieprzyło mi mózg, zanim BF mógł.
kot

2
@cat Uważam, że to niemożliwe, ponieważ programy 3i 6byłyby nierozróżnialne dla Brainfuck, ponieważ różnią się tylko białymi odstępami.
Martin Ender

Odpowiedzi:


37

GolfScript, 11 10 bajtów

21;;3#9];6

Wykorzystuje się #jako znak dopełniający.

godzina 12

6
;
]
9
#
3
;
;
1
2

Wypróbuj online!

Jak to działa.

  • 6jest wypychany na stos, ;odrzuca go.

  • ] zawija stos w tablicę (nie wpływa na dane wyjściowe).

  • 9i 3są wypychane na stos ;i ;odrzucają je.

  • Wreszcie, 1i 2są wypychane na stosie, a pośrednio drukowane bez separacji.

Godzina trzecia

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

Wypróbuj online!

Jak to działa

  • 6jest wypychany na stos, ;odrzuca go.

  • ] zawija stos w tablicę (nie wpływa na dane wyjściowe).

  • 9i 3są wypychane na stos ;i ;odrzucają je.

  • 1i 21są wypychane na stos, ;;odrzuca je.

  • 3 jest wypychany na stos.

  • # rozpoczyna komentarz do końca linii.

Godzina szósta

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

Wypróbuj online!

Jak to działa

  • 6jest wypychany na stos, ;odrzuca go.

  • ] zawija stos w tablicę (nie wpływa na dane wyjściowe).

  • 9i 3są wypychane na stos ;i ;odrzucają je.

  • 1, 2I 1są wypychane na stosie.

  • ;i ;odrzuć ostatni 1i 2.

  • 3i 9są wypychane na stos.

  • ]i ;zawiń stos do tablicy i odrzuć go, czyszcząc stos.

  • 6 jest wypychany na stos.

godzina 9

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

Wypróbuj online!

Jak to działa

  • Wszystkie wiersze oprócz ostatniego są komentarzami.

  • 6jest wypychany na stos, ;odrzuca go.

  • ] zawija stos w tablicę (nie wpływa na dane wyjściowe).

  • 9 jest wypychany na stos.

  • # rozpoczyna komentarz do końca linii.


25

> <> , 20 bajtów

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

Są tam niedrukowalne, a mianowicie:

  • Po Xjest\x06\t
  • Po cjest\x03

Ta sama część kodu źródłowego jest uruchamiana za każdym razem, używając gdwóch części kodu źródłowego, aby określić, co należy odjąć od 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 | Godzina trzecia | Godzina szósta | Godzina dziewiąta (wygląda niepoprawnie z powodu zakładki)


7
„12 głosów 0 odpowiedzi? Poczekaj, aż Sp udowodni, że to trywialne, proszę.” –Helka, na czacie
Alex A.

1

ROOP , 54 bajty

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

Wykorzystuje się <jako znak dopełniający.

12 | Godzina trzecia | Godzina szósta | godzina 9

godzina 12

Te 1i te, 2które są w pobliżu górnego spadku przez 3 cykle. Po dotarciu do Woperatora operator umieszcza liczbę O, która reprezentuje wynik.

W 1tej części

1


V

H

spadł na 2 cykle, Voperator przesuwa go poniżej, aw następnym cyklu aktywuje Hoperatora, który kończy program.

Godzina trzecia

Osą również przedmiotami, które poruszają się i spadają. Ponieważ kod ma teraz linię z więcej niż jednym znakiem, wszystkie pozostałe linie są wypełnione pustymi spacjami. Wszystkie Oruchy w prawo i upadek, przez co Woperatorzy nie mają miejsca na wysłanie 1i 2.

Jedyne O, co się nie porusza, to uwięzione w środku. 3Góry spada do 4 cykli w THE W.

Następnie liczby, które spadają, wypełniają 4 spacje między Wi 3. Po wypełnieniu kolejna liczba może przejść przez wszystkie z nich i dotrzeć do Hoperatora kończącego program.

Godzina szósta

1


H
#
6


W
O

Bardzo podobny do 12, 6spada do Wi 1do H. Dzieje się tak w 2 cyklach, kończąc program przed wystąpieniem 12 przypadku.

godzina 9

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

(Pokazuję jedną kolumnę, <ponieważ inni nic nie robią).

Gdy Vpodnosi 9się i przemieszcza go do poniżej rury, która odchyla się obiektu w lewo. Rura <przesuwa obiekt w dół, a następny w prawo. VOperator umieścić 9w przestrzeni poniżej, a następnie jest wysyłany do wyjścia.

1Sprawia jednakowe ruchy i osiągnie H, który kończy program. Gdy rury poruszają obiektami w tym samym cyklu, wszystko to zajmuje jeden cykl.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.