Inspiré par cette question SO .
Défi:
Contribution:
- Une chaîne
- Un personnage
Sortie:
Créez un dessin ASCII carré en losange de la chaîne dans les quatre directions, avec le premier caractère de la chaîne au centre et vers l'extérieur. Qui est à l'intérieur d'un tapis carré ASCII-art, avec le caractère comme charge. Cela peut paraître assez vague, voici donc un exemple:
Entrée: = string
, = .
sortie:
..........g..........
........g.n.g........
......g.n.i.n.g......
....g.n.i.r.i.n.g....
..g.n.i.r.t.r.i.n.g..
g.n.i.r.t.s.t.r.i.n.g
..g.n.i.r.t.r.i.n.g..
....g.n.i.r.i.n.g....
......g.n.i.n.g......
........g.n.g........
..........g..........
Règles du challenge:
- La chaîne d'entrée peut également être une liste de caractères
- La sortie peut également être une liste de lignes ou une matrice de caractères
- La chaîne d'entrée et le caractère sont garantis non vides
- La chaîne est garantie de ne pas contenir le caractère
- La chaîne et le caractère ne seront que des caractères ASCII imprimables (plage unicode [32,126], espace '' jusqu'au tilde et incluant '~')
Règles générales:
- C'est du code-golf , donc la réponse la plus courte en octets est gagnante.
Ne laissez pas les langues de code-golf vous décourager de poster des réponses avec des langues autres que le code de golf. Essayez de trouver une réponse aussi courte que possible à n'importe quel langage de programmation. - Les règles standard s'appliquent à votre réponse avec les règles d'E / S par défaut . Vous êtes donc autorisé à utiliser STDIN / STDOUT, fonctions / méthode avec les paramètres appropriés et des programmes complets de type de retour, de type renvoyé. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code (c.-à-d. TIO ).
- En outre, l'ajout d'une explication de votre réponse est fortement recommandé.
Cas de test:
Entrée: = 11111
, = 0
Rendement:
00000000100000000
00000010101000000
00001010101010000
00101010101010100
10101010101010101
00101010101010100
00001010101010000
00000010101000000
00000000100000000
Entrée: = 12345ABCDEF
, = #
sortie:
####################F####################
##################F#E#F##################
################F#E#D#E#F################
##############F#E#D#C#D#E#F##############
############F#E#D#C#B#C#D#E#F############
##########F#E#D#C#B#A#B#C#D#E#F##########
########F#E#D#C#B#A#5#A#B#C#D#E#F########
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
F#E#D#C#B#A#5#4#3#2#1#2#3#4#5#A#B#C#D#E#F
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
########F#E#D#C#B#A#5#A#B#C#D#E#F########
##########F#E#D#C#B#A#B#C#D#E#F##########
############F#E#D#C#B#C#D#E#F############
##############F#E#D#C#D#E#F##############
################F#E#D#E#F################
##################F#E#F##################
####################F####################
Contribution: = @+-|-o-|-O
, =
sortie::
::::::::::::::::::O::::::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
O:-:|:-:o:-:|:-:+:@:+:-:|:-:o:-:|:-:O
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::::::O::::::::::::::::::
Entrée: = , =
sortie:cAB
c
ccBcc
BcAcB
ccBcc
Entrée: = , =
sortie:~
X
~
Contribution: c = /\^/\
, =
sortie:X
XXXXXXXX\XXXXXXXX
XXXXXX\X/X\XXXXXX
XXXX\X/X^X/X\XXXX
XX\X/X^X\X^X/X\XX
\X/X^X\X/X\X^X/X\
XX\X/X^X\X^X/X\XX
XXXX\X/X^X/X\XXXX
XXXXXX\X/X\XXXXXX
XXXXXXXX\XXXXXXXX
()()()
.Réponses:
Toile , 8 octets
Essayez-le ici!
7 octets mais reflète un tas de caractères.
la source
R ,
1189592 octetsEssayez-le en ligne!
Grâce à:
la source
for
boucles en R, du moins pour le golf.pmin
logique avec le réarrangement :-)J ,
5956 octetsEssayez-le en ligne!
Trop longue solution pour J ... (entièrement de ma faute)
la source
R , une version laide de 118 octets
En laissant l'entrée être un vecteur de caractères uniques, et en affichant une matrice au lieu d'imprimer un bel art ascii.
Essayez-le en ligne!
R ,
161157 octetssauvegardé 4 octets en utilisant ifelse au lieu de modifier conditionnellement
y
Essayez-le en ligne!
non golfé et commenté
hmmm, semble être la réponse la plus longue à ce jour!
la source
Python 2 ,
97969084 octetsEssayez-le en ligne!
la source
05AB1E ,
15 à11 octetsEssayez-le en ligne! ou en tant que suite de tests
Explication
la source
»
vers le pied de page. :)J ,
35 3433 octetsEssayez-le en ligne!
-&#
i:
1-|+/|
{: (<*-)
-&#
Les indices négatifs commencent à -1 comme en python. Il ne reste plus qu'à insérer les colonnes de zéros.
1j1( #"1
}:@
,{~
Merci beaucoup à Galen Ivanov pour l'algorithme.
la source
K (ngn / k) , 38 octets
Essayez-le en ligne!
{
}
fonction avec argumentsx
(la chaîne s ) ety
(le caractère c )|x
sens inversex
y,'
ajoutery
à chacun+
transposer,/
concat1_
déposer le premier personnageà ce stade, nous avons une chaîne d'
x
occurrences de length ( )y
suivies des caractères dex
#x
longueur dex
(#x)'
fenêtre coulissante de ce nombre de caractères consécutifs2{
}/
faire deux fois+x,1_|x
rejoindrex
avec l'inversex
sans son premier élément, et transposery,''
ajoutery
à chaque chacun,/'
concat chaque1_'
déposer un de chaquela source
Japt , 15 octets
Retourne un tableau de lignes
L'essayer
la source
Charbon de bois , 15 octets
Essayez-le en ligne! Le lien est vers la version verbeuse du code. Initialement soumis en tant que commentaire sur le message Sandbox maintenant supprimé . Explication:
Définissez l'arrière-plan sur la deuxième entrée
c
.Mappez sur la première entrée
s
pour générer tous les suffixes et les imprimer implicitement sur des lignes séparées.Reflète horizontalement et verticalement.
Ajouter un espace supplémentaire horizontalement.
la source
Ruby ,
958475 octetsEssayez-le en ligne!
Prend la chaîne d'entrée comme un tableau de caractères. Retourne un tableau de chaînes.
la source
Wolfram Language (Mathematica) , 121 octets
Essayez-le en ligne!
la source
Japt , 16 octets
Note: je vais jouer au golf :)
Essayez-le en ligne!
la source
PowerShell , 120 octets
Essayez-le en ligne!
Certains jours, avoir des plages d'index au lieu de tranches fait vraiment mal. Aujourd'hui est l'un de ces jours. En raison de la confusion des plages lorsque des éléments uniques sont manipulés (par exemple, renvoyer 0..0 + 1..0), une casse spéciale est utilisée pour l'éviter complètement (au prix de plusieurs octets).
la source
Japt , 15 octets
L'essayer
la source
Gelée , 11 octets
Essayez-le en ligne!
ŒṘ
Y
\n
la source
PowerShell ,
8283 octets+2 octets merci Veskah: correction du problème de casse à un caractère
-1 octet: la règle
Input-string may also be a list of characters
utiliséeEssayez-le en ligne!
Moins joué au golf:
la source
~
Pip ,
2420 octetsUtilisez le
-l
drapeau pour obtenir une sortie lisible par l'homme. Essayez-le en ligne!Explication
Par exemple, avec les entrées de
abcd
et.
:la source
Attaché , 57 octets
Essayez-le en ligne! La sortie est une liste de lignes.
Explication
la source
Perl 6 , 79 octets
Essayez-le en ligne!
Codeblock anonyme qui prend une entrée au curry (comme
f(char)(string)
) et renvoie une liste de lignes. Je pense qu'une approche différente serait plus courte.Explication:
la source
APL (Dyalog Classic) ,
32 à31 octetsEssayez-le en ligne!
la source
Perl 5 avec
-lF
,-M5.010
, 71 octetsEssayez-le en ligne!
la source
C # (compilateur interactif Visual C #) , 249 octets
Essayez-le en ligne!
Cela doit être améliorable ...
la source
JavaScript (Node.js) , 143 octets
Essayez-le en ligne!
Un peu plus de réflexion conduirait à calculer en termes de tableau unidimensionnel et moins d'octets.
la source
Kotlin , 250 octets
Remarque: Kotlin tio ne parvient pas à renvoyer une nouvelle classe. Ce code obtient donc une exception de pointeur null. Cela se produit également pour les codes que j'ai précédemment publiés et qui fonctionnaient à ce moment-là. Je suppose que cela va éventuellement être résolu, mais je n'ai pas trouvé de contact technique pour signaler le problème. Il peut également être exécuté ici .
Essayez-le en ligne!
la source
.joinToString("\n")
d’octets (et le faire dans le pied de page en dehors de la fonction).Gaia , 19 octets
Essayez-le en ligne!
Explication à suivre.
la source
JavaScript (Node.js) , 101 octets
Essayez-le en ligne!
la source
Requête TSQL, 191 octets
Dans MS-SQL Server Management Studio, appuyez sur Ctrl-T avant d'exécuter cette requête. La sortie sera transformée en texte.
Ce script construit la sortie de gauche à droite dans une longue "chaîne", en calculant la valeur à mettre à chaque position. La sortie est limitée à 4096 caractères.
Golfé:
Ungolfed:
J'ai dû faire quelques changements pour formater la sortie dans la version en ligne.
Essayez-le en ligne
la source
Java (JDK) ,
213199198 octetsEssayez-le en ligne!
-14 bytes
grâce à @KevinCruijssen-1 byte
grâce à @ceilingcatUngolfed
la source
Wolfram Language (Mathematica) , 68 octets
Essayez-le en ligne!
Prend une liste de caractères (avec le caractère de remplissage) en entrée et génère une matrice de caractères.
Pour prendre l’index de la liste de caractères, nous utilisons
list[[index]]
, qui est développé en internePart[list, index]
. Si l'index est valide, cette expression est évaluée à la valeur de cet index. Si ce n'est pas le cas - si l'index n'est pas un entier ou s'il est hors limites - l'expression n'est pas évaluée.Le modèle le plus simple (le plus court) qui correspond,
Part[...]
mais pas un seul caractère_@__
, correspond à toute expression avec un ou plusieurs arguments.la source