Contribution:
- Un entier , qui est garanti d'être .
- Un entier , qui est l'un de .
Sortie:
Une route de taille , qui sera dans une direction nord-ouest si ; une direction nord si ; ou une direction nord-est si . La route aura toujours trois espaces de large (ou cinq en général si l'on incluait les bordures extérieures). De plus, il y aura une ligne de séparation des routes sur la section inférieure, et après cela en alternance en montant.
Quelques exemples:
Entrée:
Sortie:
/ / /
/ /
/ / /
/ /
/ / /
/ /
/ / /
Entrée: Sortie:
\ \
\ \ \
\ \
\ \ \
Règles du défi:
- N'importe quelle quantité d'espaces de début / de fin et / ou de nouvelles lignes sont acceptables, tant qu'elle imprime la route requise quelque part sur l'écran.
- Au lieu des options vous êtes également autorisé à utiliser les options ou place. Vous pouvez également choisir laquelle des trois options correspond à laquelle des trois directions. (Assurez-vous de mentionner les options que vous avez utilisées si elles diffèrent respectivement de pour celles utilisées dans cette description du défi!)
[north-west, north, north-east]
- Tout format de sortie raisonnable est acceptable. Le plus courant est bien sûr de l'imprimer sur STDOUT, mais le renvoyer sous forme de chaîne ou de liste de caractères 2D convient également.
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues autres que le golf de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse avec des règles d'E / S par défaut , vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code (par exemple TIO ).
- De plus, l'ajout d'une explication à votre réponse est fortement recommandé.
Cas de test:
Les deux exemples ci-dessus, et:
Entrée:
Sortie:
| |
| | |
| |
| | |
| |
| | |
| |
| | |
| |
| | |
Réponses:
Toile ,
2322 octetsEssayez-le ici!
Utilise les entrées de direction 0, 1 et 2.
Explication:
la source
Python 2 ,
79787372 octetsEssayez-le en ligne!
Prend
[1,0,-1]
pour[north-west, north, north-east]
-1 octet, merci à Neil
la source
i%2*c or' '
enregistre un octet.Python 2 , 66 octets
Essayez-le en ligne!
Utilise
d=-1
pour NE,d=0
pour N etd=1
pour NW. Profite que les espaces principaux sont autorisés. La règle selon laquelle le segment inférieur de la route a un séparateur a rendu difficile la bonne parité; il est réalisé par le découpage en(s*n)[n:]
prenant la seconde moitié des2n
alternances entre l'espace et le caractère routier.la source
1. Python 3.5,
122120 octetsLe script prend deux paramètres: n, d.
d: 0, 1, 2 -> \ | /
tio.run
sortie:
Explication
edit: -2 octets grâce à Kevin Cruijssen
la source
n-1-i
peuvent êtren+~i
( astuce pertinente ) etj%2==0
peuvent l'êtrej%2<1
. Si vous ne les avez pas encore vus, Conseils pour jouer au golf en Python et Conseils pour jouer au golf dans <toutes les langues> peuvent être intéressants à lire.n+~i
, mais ça a l'air utile. Merci également pour la mise en évidence du code.j%2*" "or c
enregistre un autre couple d'octets.PowerShell ,
8882807471 octets-8 octets grâce à Mazzy
-6 octets grâce à AdmBorkBork et Mazzy
-3 octets grâce à AdmBorkBork
Essayez-le en ligne!
Utilise [0,1,2] pour NW, NE, N. Utilise
d
deux fois comme index de liste pour obtenir d'abord la méthode d'espacement (supprime la liste lors de l'utilisation de 2 qui renvoie 0) et ensuite quel caractère utiliser lors du tracé des lignes. Ajoute une liste à la chaîne d'espaces (qui comporte naturellement des espaces entre les membres lorsqu'ils sont ajoutés comme tels) qui construit la route. Bascule également entre une voie ouverte ou un tiret basé sur les mathématiques modulo.la source
C (gcc) ,
10090 octetsEssayez-le en ligne!
Version bien écrite
la source
Fusain ,
332923 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. Maintenant que tous les bogues sous-jacents de charbon de bois semblent être corrigés, je peux annoncer le code optimal. Explication:
Faites pivoter la direction du curseur dans le sens antihoraire en fonction de la première entrée, de sorte que 1 devienne nord-est, 2 nord et 3 nord-ouest.
Saisissez la longueur de la route.
Imprimez la moitié de la longueur de la route, puis étirez-la en donnant le séparateur de route.
Imprimez les côtés de la route.
@KevinCruijssen a ensuite soumis une version plus difficile de cette question qui a été supprimée depuis, mais les utilisateurs avec suffisamment de représentants peuvent la voir ici: La (dure) route vers le code L'astuce d'étirement que j'ai utilisée dans cette réponse ne s'applique pas à cette question, donc à la place, je a écrit ce qui suit
47programme de 45 octets:Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Boucle sur les côtés et séparateur.
Sautez au début du côté.
Créez un tableau contenant un
1
et un espace, mais supprimez à nouveau l'espace si nous dessinons les côtés plutôt que le séparateur.Faites une boucle sur chaque section de route.
Faites pivoter la direction du curseur en conséquence.
Boucle sur un de moins que la longueur du tronçon de route ...
... et imprimer des éléments alternés du tableau. L'alternance est obtenue par indexation cyclique dans le tableau avec la coordonnée Y du curseur.
Imprimez la dernière ligne de cette section de route, mais sans déplacer le curseur ...
... afin que le curseur puisse être déplacé vers le haut, prêt pour la section suivante.
Faites pivoter la direction du curseur en arrière prêt pour la section suivante.
la source
Kotlin ,
9692 octetsAccepte [0, 1, 2] au lieu de [-1, 0, 1]
Cela fonctionne de manière similaire aux solutions dans d'autres langues, mais malheureusement, Kotlin ne brille pas vraiment dans celle-ci.
val c=“\\|/“;
récupère le caractère à utiliser dans la construction de routes en profitant du fait que Kotlin traite les chaînes comme un tableau de caractères (comme il se doit, en vous regardant Java)Essayez-le en ligne!
la source
4
avec mon exemple de4
pour voir la différence que je veux dire. Je ne connais pas bien Kotlin, mais je pense que vous pouvez le résoudre (et jouer au golf 4 octets en même temps) en changeant[(it+1)%2]
pour[it%2]
. :) En dehors de cela, c'est une bonne réponse, alors +1 de ma part.Code TSQL,
171117 octetsJ'ai réalisé que cela pourrait être écrit beaucoup plus court que du code.
Requête TSQL, 137 octets
USE master n'est pas nécessaire si votre base de données est déjà master. Certains utilisateurs ont cependant une base de données par défaut différente.
Le script lors de son essai est légèrement différent. J'ai dû remplacer l'espace ascii-32 par ascii-160, les espaces n'étaient pas affichés.
Essaye le
J'ai fait quelques ajustements et réalisé que je pouvais remplacer
avec
la source
order by 1/0
fait- il qu'il n'y ait pas d'erreur de division par zéro?JavaScript (ES8),
90 8785 octets(direction)(length)
Essayez-le en ligne!
JavaScript (ES6), 90 octets
Celui-ci dessine le caractère de sortie par caractère avec un peu plus de maths au lieu de la
.padStart()
méthode.(direction)(length)
Essayez-le en ligne!
la source
Gelée ,
3130 octetsUn lien dyadique acceptant la longueur à gauche et la direction négative * à droite qui donne un tableau 2D de caractères.
*
[north-west, north, north-east]=[1, 0, -1]
Essayez-le en ligne! (le pied de page appelle le lien, rejoint les caractères de nouvelle ligne et imprime le résultat)
Comment?
la source
Python 2, 127 octets
Essayez-le en ligne!
Deux premières lignes tirées de @TFeld.
la source
D,N=input()
(et utiliser Python 2 au lieu de 3) pour résoudre ce problème. Ou vous pouvez le changer en une fonction lambda prenant ces deux paramètres." ".join(..)
.format
i%2*c or' '
enregistre quelques octets de plus, même si j'ai remarqué que le séparateur est incorrect pour les routes de longueur irrégulière.Python 2 , 93 octets
Essayez-le en ligne!
la source
+' %s '+
pour,'%s',
enregistrer 2 octets'%s'%
complètement.J , 64 octets
Essayez-le en ligne!
J'essaierai de jouer au golf plus tard
la source
C # (Visual C # Compiler Interactive) ,
12910710393 bytes-1 pour le nord-est, 1 pour le nord-ouest, 0 pour le nord
Essayez-le en ligne!
la source
Rouge , 157 octets
Essayez-le en ligne!
la source
Japt, 53 octets
Essayez-le en ligne!
la source
Swift 4,2 ,
112108 octets-4 octets grâce au Sriotchilism O'Zaic
[0,1,2] au lieu de [-1,0,1].
Essayez-le en ligne!
Explication
Détermine le panneau de signalisation à utiliser. (Je parie que cela peut être raccourci d'une manière ou d'une autre)
Itère sur toute la longueur de la rue.
Ajoute les espaces devant la rue.
Ajoute le signe du milieu à toutes les autres lignes.
Mon tout premier ☝️, je suis heureux de tout conseil d'optimisation. Tiré principalement de ce fil: Conseils pour jouer au golf dans Swift .
la source
in
et" "
dans votre code même si vous l'avez supprimé dans vos exemples.\(c)
dans les deux cas). Vous pouvez économiser des octets en concaténant simplement lec
à la chaîne. Essayez-le en ligne!Perl 6 , 66 octets
Essayez-le en ligne!
Renvoie une liste de lignes.
Explication
la source
Rubis , 90 octets
Essayez-le en ligne!
MISE À JOUR: Merci, Kevin, d'avoir souligné que ma soumission d'origine manquait d'espaces entre les bords de route et les marqueurs (c.-à-d. Routes à 3 largeurs au lieu de 5 largeurs). Cela dit, il pourrait y avoir une solution plus courte pour cela que
c+' '+...+' '+c
.Informations directionnelles:
-1, 0, 1
cartes vers{ north-west, north, north-east }
Arguments: ceci lit les arguments de ligne de commande tels que
4 -1
(une route à quatre rangées, inclinée vers le nord-ouest).Remarque supplémentaire: cela a été testé localement avec Ruby v2.6.1, et il semble que Try It Online utilise Ruby v2.5.3. Je n'ai aucune raison de penser que cela ne fonctionnerait pas avec toutes les autres versions de Ruby.
la source
|||
ou|<sp>|
, mais elle doit être|<sp>|<sp>|
ou|<sp><sp><sp>|
(où<sp>
est un espace). Je ne connais pas Ruby, mais il semble que vous puissiez le résoudre en passantc+[' ',c][i%2]+c
àc+' '+[' ',c][i%2]+' '+c
. :)Java (JDK) , 116 octets
Essayez-le en ligne!
Prend
d
comme l'un des0
,1
ou2
.la source
Japt
-R
, 40 octetsEssayez-le en ligne!
Explication:
la source
Stax , 23 octets
Exécuter et déboguer
L'entrée est deux entiers séparés par un espace.
Le premier est
d
. -1 spécifie le nord-est. 0 pour le nord. 1 pour le nord-ouest. Le deuxième paramètre estn
. Ces deux valeurs seront implicitement analysées à partir de l'entrée et placées sur la pile d'entrée avecn
en haut. De plus,d
il sera accessible à partir du registre du staxx
puisqu'il s'agit de la première valeur implicitement analysée.Par exemple, saisissez "1 7"
Exécutez celui-ci
la source
perl -M5.010 -Mfeature = signatures, 97 octets
la source