Votre tâche: à partir d'un nombre n
, générez un signe «+» n
éloigné des caractères de son centre. Si cela prête à confusion, consultez les cas de test.
Méthodes d'entrée standard: la sortie doit être une chaîne ou imprimée. Des échappatoires standard s'appliquent.
Input: 1
Output: + ] 1 away from center `+`.
Input: 2
Output: + ] 2 away from center `+`.
+++ ] 1 away from center `+`.
+
Input: 3
Output: + ] 3 away from center `+`.
+
+++++
+
+
C'est le code-golf , donc le code le plus court gagne!
Réponses:
Fusain , 5 octets
Essayez-le en ligne!
la source
P+
= croix).Python 2 , 53 octets
Essayez-le en ligne!
la source
JavaScript (ES6),
6765636059 octetsx-1
, la première avec--x
et la seconde avecx
."\n"
par`[newline]`
.repeat
de manière à réduire la taille. (Avec une mention honorable à Marie pour ses efforts aussi)Essayez-le
la source
"\n"
par deux backticks et une nouvelle ligne littérale entre euxa='repeat',v=.....
et` `[a]
repeat()
mais mes premières tentatives sont sorties 2 ou 3 octets plus gros donc je l'ai abandonné! J'y reverrai quand je reviendrai devant un ordinateur.x=>(v=(` `[r='repeat'](--x)+`+<newline>`)[r](x))+`+`[r](x*2+1)+`<newline>`+v
MATL , 11 octets
Essayez-le en ligne!
Explication avec exemple
Considérez
n = 3
.la source
Fusain ,
1613 octetsEssayez-le en ligne!
Utilise une approche différente de l'autre réponse au charbon de bois.
Explication
Maintenant, le coin supérieur gauche est terminé, il ressemblera à ceci:
La dernière étape est la clé de ce programme, il utilise la partie supérieure gauche du plus pour générer le reste du plus en le reflétant dans la direction sud-est (vers la droite et vers le bas).
la source
Langage de programmation Shakespeare ,
749743 octetsEssayez-le en ligne!
Edit: a rendu la réponse compatible avec l'implémentation SPL officielle - je ne pouvais pas le faire fonctionner avant.
Golfé 6 octets car les numéros de scène ne doivent pas être consécutifs.
Explication :
SPL est un esolang conçu pour ressembler aux pièces de Shakespeare. Les noms positifs ont la valeur 1 (ici le chat est utilisé) et les noms négatifs ont la valeur -1 (aucun n'a été utilisé mais porc est l'un d'entre eux). Les adjectifs modifient une constante en la multipliant par 2.
Tout jusqu'au premier point est le titre et n'a pas d'importance.
Les caractères sont des variables entières, chacun d'eux a également une pile mais je n'avais pas besoin d'utiliser cette fonctionnalité.
Les actes et les scènes sont utilisés comme étiquettes goto
Cela n'est utile que si exactement deux personnages sont sur la scène en même temps.
Lit un nombre et fait en sorte que Ford s'en souvienne.
Comme vous pouvez le voir, Engrish est valide dans SPL. Cela fait de la valeur de Puck "la différence entre un chat et moi". Mais qu'est-ce que ça veut dire?
cat
est un nom positif, donc c'estPuck = 1 - Ford
.Exeunt est juste un pluriel de "sortie", et sans arguments signifie que tout le monde sur la scène sort.
C'est aussi
Page = 1 - Ford
mais c'est parlé par un acteur différent donc ceI
serait faux. Puisqu'il s'agit d'une boucle, je ne peux pas simplement copier la valeur dePuck
.Assez simple maintenant.
Ajax = Puck * Page
."aussi [adj] que" est le
==
opérateur.Si Ajax == 0 ... "chat" vaut 1, "gros chat" vaut 2, "gros gros chat" vaut 4 et ainsi de suite. Après avoir substitué les constantes simples, nous obtenons "la somme de la somme de la somme de 32 et 8 et 2 et 1" -> "la somme de la somme de 40 et 2 et 1" -> "la somme de 42 et 1" -> "43", qui est l'ASCII pour +.
sinon c'est juste "fat fat fat fat fat fat cat", donc Ajax obtient la valeur de 32, l'ASCII pour un espace.
Il s'agit de la commande de sortie d'un caractère.
Il s'agit d'une construction en boucle. "Vous additionnez vous et chat" incrémente Page, et
if(Page != Ford) goto Scene III
. Le reste du programme utilise les mêmes composants, voici donc une version de pseudocode plus lisible:la source
If not,let us return to Scene III.
" -1; brise le quatrième mur: PGelée , 11 octets
Essayez-le en ligne!
la source
Mathematica, 39 octets
CrossMatrix
est une fonction intégrée qui génère une matrice de la forme requise avec1
s au lieu de+
s et0
s au lieu d'espaces. Si nous multiplions cette matrice par"+"
, cela remplace le1
s par+
s tout en laissant le0
s inchangé (évidemment ...0*x = 0
et1*x = x
, non?). Ensuite, nous remplaçons les zéros manuellement par des espaces en utilisant/. 0->" "
. Enfin, nous imprimons chaque ligne de la matrice avecPrint@@@(...)
.la source
Print
pouvait l'utiliser comme ça.C, 69 octets
Pas très intéressant ... Boucles sur le carré, imprimant le caractère approprié.
la source
Rubis,
4140 octetsEssayez-le en ligne!
la source
GNU sed ,
10499 octets-5 grâce à seshoumara
Comprend +1 pour
-r
Prend entrée en unaire.
Essayez-le en ligne!
la source
s/( *2)2(2*)/\1\n\1\2/
ets/(.*)(\n1*)/&\n\1/
comme indiqué ici , pour un score total de 99.Lua
113, 90 octetsla source
Python 2 , 52 octets
Essayez-le en ligne!
Une alternative à 53 octets ( TIO ):
la source
R, 54 octets
Raser 7 octets grâce à @Jarko Dubbeldam:
réponse précédente:
la source
function(n){a=matrix("",n*2-1,n*2-1);a[n,]="x";a[,n]="x";a}
serait donc 59 octets!matrix("",y<-n*2-1,y)
a[n,]=a[,n]="x"
fonctionne aussi, économisant encore plus d'octets.scan()
et en faisant un programme plutôt qu'une fonction:n=scan();a=matrix("",y<-n*2-1,y);a[n,]=a[,n]="+";a
PowerShell , 48 octets
Essayez-le en ligne!
Prend des informations
$n
. Commence par construire une chaîne d'--$n
espaces, concaténée avec+
. Cela est converti en un tableau à l'aide de l'opérateur virgule, (nouvellement décrémenté)$n
fois. Ce tableau est stocké$x
et encapsulé dans des parens pour placer une copie sur le pipeline.Nous faisons ensuite la section du milieu, qui est une
+
chaîne multipliée par le nombre approprié de fois. Cela reste sur le pipeline. Enfin, nous avons remis$x
le pipeline en place.Ceux-ci sont tous laissés sur le pipeline à la fin du programme, et l'implicite
Write-Output
insère une nouvelle ligne entre les éléments.la source
Perl 5 , 45 octets
44 octets de code +
-p
indicateur.Essayez-le en ligne!
Quelques approches similaires (mais toujours différentes):
48 octets (47+
-p
):50 octets (49+
-n
):la source
Python 2 ,
60,56 octetsEssayez-le en ligne!
la source
CJam , 23 octets
Essayez-le en ligne!
Explication
Cela semble un peu sous-optimal, mais l'idée est de superposer les deux grilles suivantes:
Ce qui donne le résultat souhaité.
la source
CJam, 17 ans
Essayez-le en ligne
Explication:
la source
Octave,
3631 octetsInspiré par la réponse MATL de @LuisMendo.
Essayez-le en ligne!
Réponse précédente:
Essayez-le en ligne!
la source
05AB1E,
151412 bytesTry it online!
-2 thanks to Emigna.
la source
F'+}¹·<×)û.c
for 12.Python 2, 65 bytes
Try it Online!
la source
JS (ES6),
887473 bytesProbably can be golfed more.
la source
"\n"
with two backticks and a literal newline between themJavaScript (ES6), 60 bytes
Outputs two trailing newlines. Alternative formulation, also 60 bytes:
la source
PowerShell, 48
Doesn't seem to get shorter than that (and pretty much the same approach as the other solution):
or
la source
V,
191815 bytesGolfed 3 bytes thanks to @nmjcman101 by using
.
andÒ+
Try it online!
la source
REXX, 81 bytes
la source
PHP, 68 Bytes
83 Bytes
la source
$m=$argn
and pre-incrementing$i
rather than post incrementing it. you can also save a byte by moving the$m
assignment ot the end and dropping the brackets.for(;$i<$c=-1+2*$m=$argn;)echo"\n".str_pad("+",$c," +"[$m==++$i],2);
while(++$y<2*$n=$argn)echo"\n",str_pad("+",$n*2-1," +"[$y==$n],2);
66 bytes (and save one more with a physical linebreak)MUMPS, 48
5053bytesla source
Brain-Flak, 216 + 1 = 217 bytes
+1 bytes from the
-A
flagTry it online!
Explanation to come
la source