Codage autour de l'horloge

47

Ecrivez un programme d'une seule ligne de deux caractères ou plus qui ne contient pas de terminaison de ligne et ne prend aucune entrée. Par exemple, votre programme pourrait être:

MyProgram

Lorsque votre programme est organisé selon les formes que les aiguilles d'une horloge créent à 12 h, 3 h, 6 h et 9 h, il doit sortir le nombre d'heures correspondant. Aucun autre moment n'a besoin d'être pris en charge.

Plus précisément:

  • Quand votre programme est arrangé comme une aiguille à 12 heures ()

    m
    a
    r
    g
    o
    r
    P
    y
    M
    

    l'exécuter devrait produire 12.

  • Quand votre programme est arrangé comme une aiguille à 3 heures ()

    m
    a
    r
    g
    o
    r
    P
    y
    MyProgram
    

    l'exécuter devrait produire 3.

  • Quand votre programme est arrangé comme une aiguille à 6 heures ()

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

    l'exécuter devrait produire 6.

  • Quand votre programme est arrangé comme une aiguille à 9 heures ()

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

    l'exécuter devrait produire 9.

Remarques

  • Le premier caractère de votre programme est toujours placé au centre de l'horloge. (Notez qu'il n'y en a qu'un seul Mdans l'exemple de 6 heures.)

  • N'importe quel caractère autre que de nouvelle ligne peut être utilisé pour mettre en retrait le programme pour un arrangement à 9 heures. Dans les exemples, .on utilise mais l'espace ou /ou #serait tout aussi valide.

  • Pour l'arrangement à 3 heures, aucun caractère ne doit être dans la région vide supérieure droite. (ie, gardez-le vide, ne le remplissez pas d'espaces.)

  • Le programme initial ( MyProgramtel quel) n'a rien à faire. Seuls les arrangements à 12, 3, 6 et 9 heures doivent avoir une sortie correcte et bien définie.

  • Le code qui fonctionne uniquement en tant que fonction ou commande REPL n'est pas autorisé. Chacun des quatre arrangements devrait être prêt à fonctionner comme s'il s'agissait de programmes complets.

Le programme le plus court en octets gagne. par exemple MyPrograma une longueur de 9 octets.

Les passe-temps de Calvin
la source
27
Je ne sais pas du tout comment commencer à faire cela
Nic Hartley
1
Est-ce correct si un caractère est imprimé puis effacé avec un retour arrière?
Feersum
5
Voici un script CJam pour générer les quatre codes d'une seule ligne et un caractère de remplissage: cjam.tryitonline.net/… N'hésitez pas à l'inclure dans le message.
Martin Ender
4
J'allais tenter ça dans Brainfuck, mais il s'avère que le défi m'a foutu la cervelle avant que BF ne le puisse.
chat
2
@cat Je crois que c'est impossible parce que les programmes 3et 6ne se distinguerait pas à Brainfuck car ils ne diffèrent que dans les espaces.
Martin Ender

Réponses:

37

GolfScript, 11 à 10 octets

21;;3#9];6

Utilise #comme caractère de remplissage.

12 heure

6
;
]
9
#
3
;
;
1
2

Essayez-le en ligne!

Comment ça fonctionne.

  • 6est poussé sur la pile, le ;jette.

  • ] encapsule la pile dans un tableau (n’affecte pas la sortie).

  • 9et 3sont poussés sur la pile, ;et les ;jeter.

  • Enfin, 1et 2sont poussés sur la pile et imprimés implicitement sans séparation.

03 heures

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

Essayez-le en ligne!

Comment ça fonctionne

  • 6est poussé sur la pile, le ;jette.

  • ] encapsule la pile dans un tableau (n’affecte pas la sortie).

  • 9et 3sont poussés sur la pile, ;et les ;jeter.

  • 1et 21sont poussés sur la pile, les ;;jette.

  • 3 est poussé sur la pile.

  • # commence un commentaire jusqu'à la fin de la ligne.

06 heures

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

Essayez-le en ligne!

Comment ça fonctionne

  • 6est poussé sur la pile, le ;jette.

  • ] encapsule la pile dans un tableau (n’affecte pas la sortie).

  • 9et 3sont poussés sur la pile, ;et les ;jeter.

  • 1, 2Et 1sont poussés sur la pile.

  • ;et ;jeter le dernier 1et 2.

  • 3et 9sont poussés sur la pile.

  • ]et ;envelopper la pile dans un tableau et le jeter, effaçant la pile.

  • 6 est poussé sur la pile.

9 heures

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

Essayez-le en ligne!

Comment ça fonctionne

  • Toutes les lignes sauf la dernière sont des commentaires.

  • 6est poussé sur la pile, le ;jette.

  • ] encapsule la pile dans un tableau (n’affecte pas la sortie).

  • 9 est poussé sur la pile.

  • # commence un commentaire jusqu'à la fin de la ligne.

Dennis
la source
25

> <> , 20 octets

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

Il y a des éléments non imprimables, à savoir:

  • Après les Xest -\x06\t
  • Après les cest -\x03

La même partie du code source est exécutée à chaque fois, en utilisant gdeux parties du code source pour déterminer les éléments à soustraire à 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 heures | 3 heures | 6 heures | 9 heures (semble mal aligné à cause de l'onglet)

Sp3000
la source
7
"12 votes 0 réponse? Attends que Sp prouve que c'est trivial s'il te plaît." –Helka, en discussion
Alex A.
1

ROOP , 54 octets

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

Utilise <comme caractère de remplissage.

12 heures | 3 heures | 6 heures | 9 heures

12 heure

Le 1et les 2qui sont près du sommet tombent pendant 3 cycles. Lorsqu'ils atteignent l' Wopérateur, ce dernier inscrit le nombre O, qui représente la sortie.

Le 1dans cette partie

1


V

H

tombé pendant 2 cycles, l' Vopérateur le déplace en dessous et au cycle suivant active l' Hopérateur qui termine le programme.

03 heures

Osont également des objets qui bougent et tombent. Étant donné que le code comporte maintenant une ligne comportant plus d'un caractère, toutes les autres lignes sont remplies d'espaces vides. Tous Ose déplacent vers la droite et tombent, ce qui empêche les Wopérateurs de disposer d’un endroit pour envoyer le 1et 2.

Le seul Oqui ne bouge pas est celui qui est coincé au centre. Ce qui 3précède tombe pendant 4 cycles à la W.

Alors les nombres qui tombent remplissent les 4 espaces entre le Wet 3. Lorsqu'il est rempli, un autre numéro peut les parcourir tous et atteindre l' Hopérateur qui termine le programme.

06 heures

1


H
#
6


W
O

Très semblable à la 12, les 6chutes à la Wet 1à la H. Cela se produit en 2 cycles, mettant fin au programme avant que les 12 cas ne se produisent.

9 heures

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

(Je montre une seule colonne de <parce que les autres ne font rien).

Le Vramasse le 9et le déplace vers le tuyau en dessous, ce qui dévie l'objet vers la gauche. Le tuyau <déplace l'objet vers le bas et le suivant vers la droite. L' Vopérateur met le 9dans l'espace ci-dessous puis il est envoyé à la sortie.

Le 1fait des mouvements égaux et atteint le H, ce qui termine le programme. Comme les tuyaux déplacent des objets dans le même cycle, tout cela prend un seul cycle.

DarkPhantom
la source