Votre tâche consiste à créer un programme ou une fonction qui prend en entrée un nombre naturel ( n
) compris entre 1 et 25 (inclus) et imprime une représentation isométrique d'une diapositive et d'une échelle avec un n
nombre de barreaux.
Spécifications d'échelle et de toboggan
L'échelle est toujours orientée à gauche et la glissière à droite. Nous le regardons du côté de l'échelle, donc une partie de la diapositive est masquée aux trois niveaux supérieurs. Les barreaux sont représentés par quatre tirets ( ----
) et les côtés de l'échelle et glissent par des barres obliques ( /
et \
). Ce qui suit est un diagramme pour représenter les modèles d'espaces nécessaires pour une diapositive à cinq échelons.
Slide Blank space count
/----/\ 1234/----/\
/----/ \ 123/----/12\
/----/ \ 12/----/1234\
/----/ \ \ 1/----/1\1234\
/----/ \ \ /----/123\1234\
Exemples
>>1
/----/\
>>3
/----/\
/----/ \
/----/ \
>>4
/----/\
/----/ \
/----/ \
/----/ \ \
>>10
/----/\
/----/ \
/----/ \
/----/ \ \
/----/ \ \
/----/ \ \
/----/ \ \
/----/ \ \
/----/ \ \
/----/ \ \
Il s'agit de code-golf, donc la réponse avec le nombre d'octets le plus bas l'emporte.
Remarque: l'espace blanc de fin est acceptable dans la sortie, tant qu'il ne dépasse pas la longueur de la ligne.
Réponses:
Rétine ,
817252 octetsLe nombre d'octets suppose un codage ISO 8859-1.
Essayez-le en ligne!
Explication
Le programme se compose de quatre étapes, qui sont toutes des substitutions d'expression régulière (avec quelques fonctionnalités spécifiques à la rétine). Je vais utiliser l'entrée
5
comme exemple pour l'explication.Étape 1
Cela transforme l'entrée
n
enn
espaces suivis/\ \
qui deviendront le haut de l'échelle / diapositive:Pour l'instant, nous allons simplement montrer la diapositive dans son intégralité et représenter l'échelle uniquement par sa main gauche
/
.Étape 2
Malheureusement, les
n
espaces sont un de plus que nécessaire, nous supprimons donc à nouveau le premier caractère. Nous avons maintenant:Étape 3
Il est temps d'élargir la structure complète. Savoir où se trouve le sommet est suffisant pour construire le tout, car nous pouvons simplement l'étendre une ligne à la fois, en écartant l'échelle et la glissière de deux espaces.
Le
+
dit à Retina de répéter cette étape en boucle jusqu'à ce que la sortie cesse de changer (dans ce cas, car l'expression régulière cesse de correspondre). En ce qui concerne l'expression régulière elle-même, nous faisons simplement correspondre la/
sur la dernière ligne et tout ce qui la suit et nous faisons également correspondre un espace devant elle, ce qui signifie qu'elle ne peut plus correspondre une fois qu'elle/
a atteint la première colonne.Voici ce que nous remplaçons par:
Donc, à chaque itération, cela ajoute une ligne à la chaîne, jusqu'à ce que nous nous retrouvions avec ceci:
Étape 4
Il ne reste plus qu'à redresser l'échelle. C'est vraiment simple, nous faisons simplement correspondre les 5
/
et les 5 caractères suivants et insérons la représentation en échelle correcte, remplaçant ainsi la diapositive ou les espaces qui sont déjà là:la source
V ,
38, 37, 36, 34, 33, 32, 31, 3029 octetsEssayez-le en ligne!
Je pourrais rattraper Osabie. Un octet de moins que Osabie.Un octet plus court!\o/
À égalité avec 2sable!Dans d'autres nouvelles, c'est certainement la plus longue en-tête barrée que j'ai jamais faite.
Explication:
Cela fonctionnera jusqu'à ce qu'une erreur se produise qui, grâce à la commande "déplacer à gauche" ('h'), sera multipliée par 'arg1'.
Maintenant, nous avons juste besoin d'ajouter la jambe intérieure
Version non concurrente (28 octets)
la source
Pyth,
3935 octetsExplication:
Testez ici
la source
2sable ,
40363230 octetsHmmm, V se rapproche terriblement ...
Utilise l' encodage CP-1252 . Essayez une version compatible 05AB1E! .
la source
:P
PowerShell v2 +,
999082 octetsPrend entrée
$n
, démarre une boucle de1
à$n
avec|%{...}
. À chaque itération, nous construisons une chaîne. Nous commençons par le nombre approprié d'espaces" "*($n-$_)
et l'échelle"/----/"
.Pour cela, nous ajoutons une autre chaîne qui a été découpée
[...]
et-join
éditée ensemble. La deuxième chaîne est la diapositive, et nous supposons que la diapositive entière est toujours visible. C'est le nombre d'espaces avant le début de la diapositive" "*($_+$i++)
, suivi de la diapositive elle-même"\ \"
. Ceci est découpé en tranches par une plage calculée pour être la partie des "espaces plus toboggan" qui est partiellement cachée par l'échelle.Exemples
la source
:D
\golfing
dossier doit être très organisé._.
Python
2-797675 octetsMerci à Hubert Grzeskowiak de m'avoir "disqualifié" depuis que mon impression de programme a en fait économisé 3 octets! Merci également à Eʀɪᴋ ᴛʜᴇ Gᴏʟғᴇʀ pour avoir économisé 1 octet de plus!
la source
def f(x):
parx=input()
et supprimez le retrait sur la deuxième ligne. Cela vous fait économiser 1 octet.Vim, 71 frappes
C'est une façon tellement stupide de le faire, mais c'est un peu amusant. L'entrée est donnée sous forme de fichier texte avec une seule ligne contenant un entier. C'est probablement assez jouable au golf, mais cela suffira pour l'instant ( modifier: style de contrôle des caractères de contrôle sur demande ):
<c-v>
,<esc>
Et<cr>
sont toutes les frappes individuelles; ctrl + v, escape et retour chariot (entrée) respectivement. Pour une version simple à digérer avec les bons littéraux, voici le fichierladder.keys
exécuté cependantxxd
:Pour l'essayer (en supposant un nix avec les outils appropriés), prenez ce qui précède, exécutez-le
xxd -r
et mettez le fichierladder.keys
. Créez un fichierladder.txt
contenant un entier. Alors fais:la source
^V
comme<c-v>
ici.bash, 61
où
^M
est un retour chariot littéralla source
/
et `\ 'dans la 4e rangée, et 1 espace de moins entre les bords de la diapositive.JavaScript (ES6), 79 octets
Fonctionne en prenant une chaîne d'
n
espaces, puis en faisant une substitution exotique pour obtenir la diapositive avec un support, puis en remplaçant le support par une échelle.la source
Rubis, 61 octets
Non golfé
Je pourrais économiser deux octets en utilisant
'%*s\ \^M%*s----/'
(où^M
est un retour chariot littéral) pour la chaîne de format, mais Ruby affiche ensuite l'avertissement "warning: encountered \r in middle of line, treated as a mere space
". ¯ \ _ (ツ) _ / ¯Solution précédente (64 octets)
la source
Lot, 194 octets
Il s'est avéré être assez simple: mettre en retrait la diapositive, supprimer les 7 premiers caractères, mettre en retrait l'échelle, supprimer l'espace de tête. Ce dernier bit implique cependant une petite ruse!
la source
Java, 116 octets
Malheureusement, vous ne pouvez pas [facilement] dupliquer des chaînes en Java, donc je finis par abuser de la fonction de formatage.
la source
Scala, 95 octets
la source
Haskell, 81 octets
la source
do i<-[1..n];a(n-i)++"/----/"++drop 7(a(2*i)++"\\ \\\n")
enregistre deux octets.eacal , non concurrentiel, 386 octets
J'ai officiellement rendu la langue la plus verbeuse possible.J'ai fait le commentaire en plaisantant et en sarcasme. Calmez vous s'il vous plait. Instructions sur la façon d'exécuter dans le référentiel github lié dans l'en-tête.Non golfé
la source