Contexte
Quand j'étais plus jeune, on m'a enseigné une méthode pour dessiner une étrange forme de "S", que j'ai (avec mes camarades de classe) trouvé fascinante. Aujourd'hui, je l'ai redécouvert, et en raison de son approche formelle pour le dessiner, j'ai pensé que cela pourrait conduire à un défi intéressant: P
Dessiner le "S"
Le S peut être dessiné en suivant ces étapes simples:
Tout d'abord, dessinez 2 rangées de trois lignes verticales comme ceci
| | |
| | |
Ensuite, connectez la ligne en haut à gauche avec la ligne du milieu en bas et le milieu en haut avec la ligne en bas à droite pour produire
| | |
\ \
| | |
Enfin, dessinez un haut et un bas sur l'image actuellement dessinée afin qu'elle finisse par ressembler à
^
/ \
| | |
\ \
| | |
\ /
v
Comme vous pouvez le voir, cela se traduit par une forme en "S". Cependant, lorsqu'il est étendu (en le dessinant avec plus de 2 lignes), il produit un motif très intéressant. Votre tâche est de reproduire ce modèle intéressant.
Tâche
Étant donné un entier où n >= 2
, sortez le S avec des n
lignes à en faire. La sortie peut être renvoyée par une fonction et l'entrée peut être prise selon des méthodes standard. Les espaces de fin / de début pour l'image globale, ainsi que pour chaque ligne, conviennent parfaitement. Cependant, les espaces de ligne de tête doivent être cohérents afin que le «ne soit pas rompu.
Cas de test
input
output
---
2
^
/ \
| | |
\ \
| | |
\ /
v
---
8
^
/ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ /
v
---
10
^
/ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ \
| | |
\ /
v
C'est un code-golf donc le code le plus court gagne! Bonne chance,
S
le froid S , et appelle une version infinie du unS Chain
Réponses:
Python 2 , 47 octets
Essayez-le en ligne!
la source
C # (.NET Core) ,
7369666462 octetsDeux octets de moins et une apparence de type perl grâce à Barodus. Vous n'avez pas pensé à utiliser int? pour null.
Essayez-le en ligne!
la source
new string[n+1]
fait? Je ne l'ai jamais vu auparavant.new string[n+1]
c'était une sorte de constructeur de chaînes délicat et pas une déclaration de tableau -.-)Python 3 , 48
56 59 61octetsEssayez-le en ligne!
la source
\ \
.05AB1E ,
2726 octetsEssayez-le en ligne!
Version alternative de 27 octets
Essayez-le en ligne!
Explication
la source
'^…/ \©IF„| ûû„\ û}\®R'v).C
sans regarder.Japt ,
342523 octetsTestez-le en ligne! Sorties sous forme de tableau de lignes;
-R
drapeau ajouté pour rejoindre les nouvelles lignes. (Merci @Shaggy)PremièreDeuxième tentative, pourrait être améliorable ...Comment ça marche
la source
SOGL V0.12 ,
262518 octetsEssayez-le ici!
Utilise la même stratégie que la réponse Japt d'ETHproductions
Explication:
la source
push "|" and " "
qu'est-ce que c'est que çaJavaScript (ES6), 60 octets
Extrait de test
Afficher l'extrait de code
la source
n=>' ^\n /${' \\ \\\n| | |\n'.repeat(n).slice(2)} \\ /\n v'
(en utilisant des backticks et des retours à la ligne littéraux)Fusain ,
272625 octets-1 octet merci à Carlos Alejo. -1 octet grâce à ASCII uniquement.
Essayez-le en ligne! Le lien est vers la version détaillée. # charcoal-verbose-obfucation
la source
\r
: `^ ⸿ / × \ ⸿ | | | ⸿ \ Iθ / ⸿ v`. Version verbeuse .\r
comme le moyen d'obtenir des nouvelles lignes de la manière saine. Merci!Perl 5 ,
3937 octetsEssayez-le en ligne!
Rasé deux octets avec la suggestion de @DomHastings
la source
En fait , 49 octets
Essayez-le en ligne!
Explication:
la source
05AB1E , 38 octets
Essayez-le en ligne!
la source
C (gcc) , 82 octets
Essayez-le en ligne!
la source
C # (.NET Core) ,
1017773 octets24 octets enregistrés grâce à i cri everytim !
4 octets enregistrés grâce à Kevin Cruijssen !
Essayez-le en ligne!
Comme d'habitude, la répétition de chaîne en C # est une douleur.
la source
--n>=0
àn-->0
ets+="/\n v";return s;
pourreturn s+"/\n v";
sauver quelques octets.Rétine , 38 octets
Essayez-le en ligne!
Imprime une colonne d'espaces de début et d'espace de fin sur chaque ligne.
Explication
Les principales économies d'octets proviennent de l'omission des espaces dans toutes les parties littérales et de leur insertion à la fin. La figure est structurée de manière à ce qu'il n'y ait jamais deux non-espaces côte à côte, donc si nous les supprimons tous, nous pouvons presque corriger la forme en insérant un espace à chaque position à la fin:
devient:
C'est presque correct, sauf pour l'indentation. Les
^
etv
manquent deux espaces. C'est en fait plus facile à corriger, car si nous insérons simplement un espace explicite devant chacun d'eux, cela se traduira par deux espaces supplémentaires à la fin. Les lignes avec les barres obliques sont plus délicates car elles nécessitent un seul espace supplémentaire. Pour résoudre ce problème, nous y insérons un caractère d'espace réservé (x
). Lorsque nous insérons les espaces à la fin, nous ne les insérons pas uniquement pour chaque correspondance vide, mais nous faisons éventuellement correspondre celax
. Cela signifie qu'au lieu d'insérer un espace devant lex
, lex
lui - même est remplacé. Et puis il y aura toujours un match vide juste après lex
. Cela signifie que chaquex
ajoute exactement un espace sans rien changer d'autre. Donc, ce que nous voulons mettre en place, c'est ceci:ce qui nous donnera le résultat souhaité. Voici donc le code:
Convertissez l'entrée en unaire.
Convertissez chacune
1
en deux lignes avec|||
etx\\
(et un saut de ligne de tête).Insérez les deux premières lignes avec
^
etx/\
.Fixez la finale
x\\
en transformant la dernière\
en/
et en ajoutant une ligne avec lev
.Remplacez chaque correspondance
x
ou vide par un espace.la source
Pyth, 46 octets
Suite de tests.
la source
%" ^\n / %s/\n v"*Q"\\\n| | |\n \
Pyth, 40 octets
Assez similaire à Steven Hewitt, mais développé indépendamment.
Essayez-le en ligne
Explication
la source
Pyth,
333231 octetsMerci M. Xcoder pour un octet.
Essayez-le en ligne: démonstration ou suite de tests
la source
Rétine , 45 octets
Ceci est une solution assez simple.
Essayez-le en ligne
Si l'art pouvait être indexé à la place, il serait un peu plus court (44 octets):
la source
Pip ,
454233 octetsEssayez-le en ligne!
Explication
Le code est vraiment simple, bien que les nouvelles lignes le rendent plus difficile à lire. Voici une meilleure façon de voir la structure:
L'élément répété dans la chaîne S est
Prenez cela comme une chaîne littérale et répétez-le
a
fois (oùa
est le premier argument de ligne de commande). Ajoutez ensuite le préfixe:et ajoutez le suffixe:
et imprimer.
(J'aime comment cela a fini par ressembler à un programme> <>.)
la source
MATL ,
474443 octets-3 octets grâce à Giuseppe
Essayez-le en ligne!
la source
' ^' ' / \ 'XK'| | |'XJ`' \ \'JGq@-]KP' v'
est de 44 octets.Haskell, 53 octets
Essayez-le en ligne!
la source
Excel, 60 octets
la source
PowerShell ,
83, 57 octetsEssayez-le en ligne!
Selon les suggestions de @ AdmBorkBork,
for
en utilisant une plage de nombres.;
et combinées.la source
for
beaucoup à votre boucle en utilisant1..--$args[0]|%{ }
.";"
et il est moins coûteux de s'en débarrasser$s
entièrement. 57 octets1..$args
occasion. Je ne sais pas quelle est la bonne étiquette sur ce site. Dois-je apporter des modifications à ma réponse et vous créditer, ou affichez-vous votre solution en tant que réponse distincte?AsciiDots , 88 octets
Essayez-le en ligne!
la source
Gelée , 32 octets
Port ennuyeux de la solution Python de Lynn .
Essayez-le en ligne!
Explication:
la source
En fait , 30 octets
Cela fonctionne sur le même principe que la réponse Japt d'ETHproductions , où des espaces supplémentaires sont ajoutés plus tard, et la chaîne entière est divisée en lignes de 5 pour une impression implicite. Essayez-le en ligne!
Ungolfing
la source
Gelée ,
2523 octetsCela fonctionne sur le même principe que la réponse Japt d'ETHproductions , où des espaces supplémentaires sont ajoutés plus tard, et la chaîne entière est divisée en chaînes de longueur 5 avant l'impression. Essayez-le en ligne!
Edit: je savais qu'il y avait un moyen de joindre le haut et le bas de la chaîne S de manière golfique. Merci à Erik l'Outgolfer pour -2 octets.
Ungolfing
la source
“\|||\”ẋ“ ^ /“/ v”jKs5Y
Fusain , 25 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code.
la source
↘^\|¶/|\|¶|F⊖N↘\|\|¶|↘\|/¶|\v
bash, 67 octets
Essayez-le en ligne
la source
Java 8,
9376 octetsPort de @IanH. est la réponse C # .NET après avoir joué un peu plus au golf.
Essayez-le ici.
la source
string
vs.var
n->
vsn=>
;)