Tâche
Vous êtes en charge de fabriquer une boussole, en quelque sorte.
Imaginez votre code source comme «l'aiguille» de la boussole où courir à différentes orientations produit une sortie distincte.
Les orientations de code source prises en charge sont le nord, l'est, le sud et l'ouest.
Exemple
Disons que vous avez du code source:
ABCD
J K
WXYZ
Nous considérerons ceci comme l'orientation Nord, une rotation de 90 degrés dans le sens horaire nous pointe vers l'Est:
W A
XJB
Y C
ZKD
tourner à nouveau pointe vers le sud:
ZYXW
K J
DCBA
et enfin, la dernière rotation vers l'Ouest:
DKZ
C Y
BJX
A W
Lorsqu'il est exécuté, chacun des exemples de code ci-dessus doit générer un seul caractère ASCII imprimable distinct de votre choix.
Remarques
Votre code ne prendra aucune entrée.
Les espaces vides ou les nouvelles lignes ne s'effondrent pas / ne disparaissent pas lors de la rotation.
Les nouvelles lignes de début / fin sont correctes en sortie.
Les réponses peuvent être des programmes ou des fonctions entières, donc sorties vers STDOUT ou retour du résultat de la fonction.
Les règles de code-golf standard s'appliquent; réponse la plus courte en octets gagne!
la source
Réponses:
Gelée , 2 octets
Essayez-le en ligne!
Notez que l'entrée principale d'un programme Jelly est son dernier lien, où tout caractère de nouvelle ligne divisera les liens), aucun des programmes à deux lignes n'accède réellement à son lien supérieur.
Les quatre programmes complets, qui impriment tous implicitement leur résultat, sont:
Nord :
Est :
Sud :
Ouest :
la source
Japt ,
32 octetsD'une manière ou d'une autre , j'ai trouvé une solution extrêmement hacky sur 2 octets ...
Sorties Nord
0
:Puisqu'il n'y a pas d'entrée implicite, il est par défaut
0
.g
sur un nombre renvoie le signe du nombre indépendamment de ses arguments ("y"
dans ce cas).Sorties Est
2
:Dans un programme à plusieurs lignes, la première ligne définit l'entrée sur son résultat. Ceci est essentiellement un no-op, puisque
g
sur0
est -0
.y
Retourne ensuite le GCD de0
et ... comme il manque un argument, il est par défaut2
(merci, @Oliver !). Cela donne2
comme sortie.Sorties Sud
g
:y
, comme précédemment, est GCD. Puisque gcd (0, x) est x pour n'importe quelle valeur,y
on0
prend la liberté de simplement renvoyer son argument. Dans ce cas, l'argument est"g"
, qui est le résultat.OuestSorties
1
:y
sur 0, comme précédemment, revient2
. Ceci est ensuite transmis àg
, qui (comme déjà discuté) est la fonction de signe sur les nombres. Par conséquent, le résultat est1
.la source
Java (OpenJDK 8) ,
73094421855 octets-2888 octets grâce à Leaky Nun
-3566 octets grâce à Wheat Wizard
Essayez-le en ligne!
Ancienne version
Une approche simple avec des commentaires enveloppant le code ^ 2 carré, cela peut être fait dans à peu près n'importe quelle langue.
un exemple (plus lisible) en python
la source
interface M{static void main(String[]a){System.out.println(0);}}
place pour enregistrer certains octets.Brain-Flak , 33 octets
Essayez-le en ligne!
Brain-Flak , 33 octets
Essayez-le en ligne!
Brain-Flak , 36 octets
Essayez-le en ligne!
Brain-Flak , 38 octets
Essayez-le en ligne!
Brain-Flak , 41 octets
Essayez-le en ligne!
la source
Alice , 17 octets
Sorties
1
. Essayez-le en ligne!Sorties
x
. Essayez-le en ligne!Sorties
5
. Essayez-le en ligne!Sorties
3
. Essayez-le en ligne!la source
Befunge,
1713 octetsJe pensais que Befunge serait amusant pour un problème géométrique. Il y a une solution 4x4 triviale semblable à d'autres ici (j'ai besoin de 3 commandes) mais j'ai réussi un peu mieux.
Modifier: oublié les nouvelles lignes
Edit 2: réalisé que je pouvais créer un chat
Edit 3: le chat est mort
Kitty RIP: <
la source
05AB1E ,
53 octetsNord , Est , Sud , Ouest
la source
Y'X
cela fonctionnera, mais je dois encore l'essayer.Y'X
est également valide. Toujours à la recherche d'un 2 octets cependant; aucune des «commandes point» ne fonctionne pour elle, donc je doute qu'elle existe.10
aurait fonctionné s'ils avaient autorisé plusieurs caractères pour une sortie; P. *C (gcc) ,
283279209 octetsEssayez-le en ligne!
Même vieux truc de commentaire ici, mais au moins, en C, cela ne devient pas huuuge ;)
W
direction fixe et -70 (!) octets grâce aux commentaires d' ETHproductionsla source
);}
vers la ligne ci-dessous, comme ça (je n'ai pas testé les rotations cependant)W
programme de votre configuration actuelle échoue actuellement car il y a un supplémentsn
après le code réel. Apparemment, vous pouvez résoudre ce problème en remplaçant la barre oblique juste avant lapm
ligne supérieure par un point-virgule.Labyrinthe , 9 octets
Impressions
0
. Essayez-le en ligne!Impressions
3
. Essayez-le en ligne!Impressions
1
. Essayez-le en ligne!Impressions
2
. Essayez-le en ligne!Explication
Chaque programme commence au premier non-espace dans l'ordre de lecture (c'est-à-dire soit le caractère supérieur gauche ou supérieur central), se déplaçant vers l'est. Pour le premier programme:
Pour le deuxième programme:
Pour le troisième programme:
Pour le quatrième programme:
la source
Wumpus , 7 octets
Impressions
0
. Essayez-le en ligne!Impressions
1
. Essayez-le en ligne!Impressions
3
. Essayez-le en ligne!Impressions
2
. Essayez-le en ligne!Explication
Le premier programme est assez simple:
O
imprime un zéro implicite et@
termine le programme.À partir du deuxième programme, nous devons examiner la disposition de la grille triangulaire pour comprendre le flux de contrôle:
Pour le troisième programme:
Le quatrième est l'endroit où ça devient vraiment génial. Les lignes en pointillés indiquent les cellules qui ne sont pas exécutées car elles sont ignorées par
$
:la source
PowerShell ,
2011 octetsAbuse les commentaires (
#
) comme des fous, et le fait qu'un seul numéro placé sur le pipeline soit sorti tel quel. Les impressions ci-dessus1
. Essayez-le en ligne!De là, vous pouvez facilement voir que chaque rotation ne produit qu'un seul nombre qui se trouve à la "gauche" des commentaires, et donc il n'y a qu'un seul nombre qui sera affiché par rotation.
Enregistré 9 octets grâce à Wheat Wizard !
la source
Étoilé , 34 octets
Ou avec des espaces représentés par des tirets pour que vous puissiez les voir:
Essayez-le en ligne!
Les commandes dans Starry sont
+
, entre.
autres choses, et ce qu'elles font est déterminé par le nombre d'espaces devant elles: a+
avec n espaces pousse n −5 dans la pile, et.
avec un nombre pair d'espaces l'imprime. lez
s et les nouvelles lignes sont complètement ignorés.Il y a 6 espaces avant le premier
+
donc il pousse 6−5 = 1, et le.
affiche.Et les rotations:
Essayez-le en ligne! Cela imprime "8".
Essayez-le en ligne! Cela imprime "2".
Essayez-le en ligne! Et cela imprime "3".
la source
dc , 9 octets
Essayez-le en ligne!
Je pense que son évidence fait partie du charme.
la source
Lot, 90 octets
Le lot n'a pas vraiment de caractère de commentaire. Pour les commentaires sur toute la ligne,
:
fonctionne, car il introduit une étiquette, mais j'ai encore besoin de quelque chose pour terminer leecho
commande tout en étant non-op lorsqu'il est inversé.&:
semble fonctionner, ce qui est tout ce dont j'ai besoin ici, mais cela confond vraiment Batch, l'erreur si je ne mets pas de:
avant@
sur la ligne suivante, et oublie également d'imprimer une nouvelle ligne.la source
MATLAB,
29 17 511 octetsAprès avoir réalisé que la question appelait des caractères ASCII uniques et pas seulement une sortie distincte, voici une approche MATLAB qui fera exactement cela:
Cela imprimera implicitement 1, 2, 3 ou 4 selon la rotation.
la source
Cardinal ,
20 17 1211 octetsEssayez-le en ligne!
Pendant tout ce temps et personne n'a répondu au Cardinal? Ce premier produit
0
.est
Essayez-le en ligne!
Les sorties
1
.Sud
Essayez-le en ligne!
Sort un espace.
Ouest
Essayez-le en ligne!
Sorties
v
.la source
SOGL V0.12 , 4 octets
Sorties
1
, essayez-le ici!Sorties
H
, essayez-le ici!Sorties
5
, essayez-le ici!Sorties
6
, essayez-le ici!la source
JS, 17 B
Sorties:
Nord: 2,
Est: 3,
Sud: 4,
Ouest: 0,33333333333….
(comme dans: 2, 3/1, 4, 1/3)
la source
Désolé, je voulais dire:
et 28B. Et les sorties comme 0,5, 3, 2, 0.
la source
JavaScript (ES6), 86 octets
Sorties 0 pour le nord, 1 pour l'est, 2 pour le sud et 3 pour l'ouest.
Afficher l'extrait de code
la source
MATL , 11 octets
Essayez-le en ligne!
Commençons par MATL. Le principal défi est que MATL échoue simplement si une fonction nécessite une entrée si la pile est vide. Peut-être quelque chose d'intelligent avec des modificateurs comme
X
que ,Y
,Z
et&
pourrait faire quelque chose de plus court, mais je ne pouvais pas trouver une combinaison appropriée.Explication: tous les caractères poussent un seul entier sur la pile et les
x
suppriment tous sauf le dernier.la source
Perl, 49 octets
Code de 48 octets + 1 pour
-p
.Suppose une entrée vide que TIO ne prend pas en charge, donc une nouvelle ligne est ajoutée à sa place et n'est pas utilisée. Prints N , E , S , W .
Essayez-le en ligne!
la source
C (gcc) , 120 octets
J'avais espéré plus de synergie entre les variantes.
Nord
est
Sud
Ouest
la source