(avec des excuses à Jim West pour le titre, et inspiré au hasard par la représentation textuelle de Cisco de leur logo: .:|:.:|:.
pour le concept)
Étant donné un entier en entrée 1 <= n <= 255
, sortez une représentation artistique ASCII d'un pont suspendu de distance en n
suivant les règles de construction ci-dessous:
- Le début et la fin du pont (non comptés dans la
n
distance) sont toujours-|
et|-
, donc le pont peut se connecter de manière appropriée aux autoroutes à côté de lui. - Le pont ne s'étend pas vers le bas (le niveau de la chaussée, composé de la
-
rangée, est la rangée inférieure). - Il peut y avoir au plus deux morceaux de chaussée
--
dans une rangée, toute portée plus longue nécessite des câbles de suspension pour le support. - Les câbles de suspension
\
s'étendent de la chaussée jusqu'aux tours|
en ligne droite. - Les tours
|
doivent être suffisamment hautes pour supporter les câbles de suspension adjacents, mais pas plus hautes. - Le pont doit être équilibré de gauche à droite autour du point médian, en privilégiant les sections centrales dans la mesure du possible.
- Tout ce qui précède devrait entraîner une minimisation des câbles, mais pour être clair, le nombre de câbles de suspension doit être minimisé tout en respectant les règles ci-dessus.
Pour fournir une représentation visuelle, voici les résultats attendus pour n = 1, 2, 3, ... 15
-
1
-|-|-
2
-|--|-
3
-|\-/|-
4
-|\--/|-
5
|\ /|
-|-\-/-|-
6
|\ /|
-|-\--/-|-
7
|\ /|
| \ / |
-|--\-/--|-
8
|\ /|
| \ / |
-|--\--/--|-
9
|\ /|
| \ / |
| \ / |
-|\--\-/--/|-
10
|\ /|
| \ / |
| \ / |
-|\--\--/--/|-
11
|\ /|
| \ / |
| \ / |
|\ \ / /|
-|-\--\-/--/-|-
12
|\ /|
| \ / |
| \ / |
|\ \ / /|
-|-\--\--/--/-|-
13
|\ /|
| \ / |
| \ / |
|\ \ / /|
| \ \ / / |
-|--\--\-/--/--|-
14
|\ /|
| \ / |
| \ / |
|\ \ / /|
| \ \ / / |
-|--\--\--/--/--|-
15
|\ /|
| \ / |
| \ / |
|\ \ / /|
| \ \ / / |
| \ \ / / |
-|\--\--\-/--/--/|-
Contribution
Un entier positif unique dans un format pratique , n > 9
.
Production
Le pont ASCII-art suivant la technique de construction ci-dessus.
Règles
- Les sauts de ligne ou les espaces de début ou de fin sont tous facultatifs, tant que les caractères de pont eux-mêmes s'alignent correctement.
- Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- Si possible, veuillez inclure un lien vers un environnement de test en ligne afin que les gens puissent essayer votre code!
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
Réponses:
05AB1E ,
795958 octetsEssayez-le en ligne! .
Explication:
Trouvé la meilleure solution, la clé était de retourner les tableaux suivants pour chaque numéro comme suit:
la source
Python 2, 173 octets
Refléter la valeur de b et ajouter le
f=lambda b:'-|'+b[::-1].replace('/','\\')+-~(~i%2)*'-'+b+'|-'
motif de base central "-" (moitié droite de la ligne du bas)
b=(i*'/--')[:~-i/2]
Boucle pour les couches non inférieures
for x in range(1,~-i/2):
Obtenez les premiers x caractères du motif de base et complétez par "-"
(len(b)-x)*'-'+b[:x]
Remplacer tout - avec des espaces à imprimer tous les calques (sauf le bas)
print f().replace('-',' ')
Imprimer le calque inférieur
print f(b)
la source
Befunge, 150 octets
Essayez-le en ligne!
J'ai également fourni une version non golfée du code qui illustre mieux l'architecture utilisée dans la construction du pont.
Essayez-le en ligne!
Les tours gèrent l'entrée et l'initialisation des paramètres. Le jeu est composé de deux boucles calculant les parties du pont qui doivent être sorties pour chaque coordonnée x, y. Et la fondation détient la table de caractères pour ces parties de pont, ainsi que d'autres codes complètement indépendants.
Explication détaillée
Nous commençons par calculer la largeur et la hauteur de la zone de sortie qui devra être itérée pour rendre le pont.
Notez que la plage y n'est pas basée sur zéro. La valeur initiale est
5 - (h<5)
et est itérée jusqu'à h (la valeur actuelle est stockée à 2,0). La valeur x est itérée de w à 0 et est stockée sur la pile.La boucle interne n'est qu'une série de conditions booléennes déterminant si une coordonnée x , y particulière correspond à l'un des emplacements qui nécessitent un caractère non spatial. Ces calculs sont basés sur deux décalages coulissants qui suivent le chemin des câbles de suspension.
Les différentes conditions sont alors déterminées comme suit:
Pour traduire ces conditions en décalage de caractères correct, il suffit de multiplier chacune d'elles par un décalage approprié et de additionner le résultat. Ce calcul est effectué lors de l'évaluation des conditions. Cela ressemble donc à ceci:
Notez que la valeur bridge_deck est fusionnée selon que les autres conditions sont remplies, car un caractère de suspension ou de tour aura priorité sur le pont.
Le résultat final est un décalage dans la table des personnages sur la dernière ligne du champ de jeu. Nous sortons simplement ce caractère et répétons la boucle.
la source
Lot, 241 octets
Remarque: espace de fuite sur la ligne 5. Commence par construire une rangée d'espaces, puis en ajoutant des câbles si nécessaire, en répétant pour construire des tours à la hauteur souhaitée, pour terminer en remplaçant les espaces restants par une route.
la source
WinDbg, 312 octets
L'entrée se fait en définissant le pseudo-registre
$t0
.Je pense qu'il devrait y avoir un moyen de combiner les deux
for
boucles en une seule ... peut-être aussi d'autres opportunités de golf ...Celui-ci fonctionne en remplissant toute la zone de route, puis en remplaçant tout sauf la dernière rangée par de l'espace, et enfin en construisant les colonnes et les câbles.
Exemple de sortie de 1 à 15:
la source
Java 8,
423, 412 octets11 octets économisés grâce à Kritixi Lithos
golfé:
non golfé:
la source
int i,j,k,t=n/2+n%2,u=t-2,q=0
et au lieu dechar v="-";
vous pouvez utiliserchar v=45;
et vous pouvez changer leabc%xyz==0
s enabc%xyz<1
(je ne l'ai pas testé)