introduction
Parfois, mes boîtes sont trop petites pour y contenir quoi que ce soit. J'ai besoin de toi pour faire un expander de boîte! Alors, qu'est-ce qui fait d'une boîte une boîte dans ce défi.
OOOO
O O
O O
O O
OOOO
Les coins de la boîte sont toujours des espaces. La boîte elle-même peut être constituée du même personnage. Ce caractère peut être n'importe quel caractère ASCII imprimable , à l'exception d'un espace. Voilà donc ces personnages:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Les longueurs latérales de la boîte ci-dessus sont 4, 3 . Vous pouvez supposer que la longueur du côté est toujours positive . Cela signifie que c'est la plus petite boîte que vous devez gérer:
#
# #
#
Pour agrandir une boîte, vous devez incrémenter chaque longueur de côté. Passons en revue, étape par étape, avec l'exemple ci-dessus. Nous prenons d'abord le côté supérieur de la boîte, qui est:
OOOO
Nous élargissons cela d'un point, nous obtenons donc:
OOOOO
C'est maintenant la partie supérieure et inférieure de la boîte. Après cela, nous faisons de même avec les côtés gauche et droit:
O
O
O
Devient:
O
O
O
O
Maintenant, nous remontons la boîte, ce qui se traduit par:
OOOOO
O O
O O
O O
O O
OOOOO
La tâche
Étant donné une boîte, agrandissez-la de 1. La boîte peut être donnée sur plusieurs lignes ou dans un tableau.
Cas de test
OOOO OOOOO
O O > O O
OOOO O O
OOOOO
XXXXXX XXXXXXX
X X > X X
X X X X
XXXXXX X X
XXXXXXX
~ ~~
~ ~ > ~ ~
~ ~ ~
~~
C'est du code-golf , donc la soumission avec le moins d'octets gagne!
Réponses:
V ,
65 octetsEssayez-le en ligne!
Il s'agit en fait d'un octet plus long qu'il ne devrait l'être. Cela aurait dû être:
Mais cela a un bug inconnu. :(
Explication:
la source
ä
est l'opérateur en double (essentiellement "y" et "p" ensemble dans un octet) toutäê
comme "colonne en double"Vim, 7 octets
où ♥ est Control-V.
la source
YP
deux fois pour plus de cohérence?p
pendant l'enregistrement de l'animation, donc je suis resté avec lors de la transcription de la réponse. Est-ce que ça importe? > _>;<C-v> G
etYP
. Cela fait que ma langue me semble bon marché. : /JavaScript (ES6),
575352 octetsExplication: Le premier regexp duplique la deuxième colonne et le deuxième regexp duplique la deuxième ligne, agrandissant ainsi la boîte comme vous le souhaitez. Edit: 4 octets enregistrés grâce à MartinEnder ♦.
la source
Python,
4942 octetsLambda anonyme:
-7 de xnor
La version précédente:
D est une fonction qui duplique le deuxième élément d'une séquence.
la source
lambda L:[s[:2]+s[1:]for s in L[:2]+L[1:]]
.map(D,D(s))
cela donnerait 43 à la placeRétine , 20 octets
Le nombre d'octets suppose un codage ISO 8859-1.
Essayez-le en ligne! (Il existe plusieurs lignes supplémentaires qui permettent une suite de tests où les cas de test sont séparés par deux sauts de ligne.)
Explication
1
est une limite qui empêche Retina d'appliquer la substitution uniquement à la première correspondance trouvée.¶
correspond à un seul saut de ligne, nous devons donc seulement envisager de remplacer le saut de ligne à la fin de la première ligne. Il est remplacé par¶$%'¶
, où$%'
insère la ligne entière après la correspondance (un élément de substitution spécifique à Retina). Par conséquent, cela duplique la deuxième ligne.Ici,
%
c'est le mode par ligne, donc chaque ligne est traitée individuellement, et les lignes sont à nouveau jointes par la suite.2=
est aussi une limite. Celui-ci signifie "n'appliquer la substitution qu'à la deuxième correspondance". La correspondance elle-même est un simple caractère unique et la substitution le duplique. Par conséquent, cette étape duplique la deuxième colonne.la source
Haskell, 24 octets
Utilise l' idée de RootTwo de dupliquer la deuxième ligne et la deuxième colonne. Le
map f
fait cela pour chaque ligne, puis lef.
fait pour les lignes.la source
PowerShell v2 +,
575352 octetsLégèrement similaire à la réponse JavaScript de Neil . Le premier remplacement correspond au début de la ligne et aux deux caractères suivants, et les remplace par le premier caractère et le deuxième caractère deux fois. Au lieu d'un deuxième remplacement, il est remplacé par l'indexation de tableau pour dupliquer la deuxième ligne. Prend l'entrée comme un tableau de chaînes. Les tranches de tableau résultantes sont laissées sur le pipeline et l'impression est implicite.
Sauvegardé 4 octets grâce à Martin.
Quelques exemples:
la source
Brachylog ,
2826 octets2 octets grâce à Fatalize.
Essayez-le en ligne!
la source
MATL , 12 octets
L'entrée est un tableau de caractères 2D, avec un point-virgule comme séparateur de ligne. Par exemple, le premier cas de test a une entrée
Essayez-le en ligne! Cas de test 1 , 2 , 3 .
Explication
Le code effectue les opérations suivantes deux fois: répétez la deuxième ligne du tableau et transposez.
Pour répéter la deuxième ligne d'un tableau
m
×n
, le vecteur[1 2 2 3 ... m]
est utilisé comme index de ligne. Ce vecteur est généré comme suit: plage[1 2 3 ... m]
, attacher un autre2
, trier.la source
Pyth , 10 octets
Essayez-le en ligne!
la source
SED
69 19(14 + 1 pour -r) 15la source
/.\(.\)/\0\1;2p
?2p
, j'ai pensé qu'il y avait un moyen de le faire, mais je ne l'ai pas trouvé. Merci!\0
référence arrière, car ils commencent à 1. Le manuel en ligne de GNU sed n'en parle pas. Cependant, l'utilisation&
est, je pense, équivalente et plus courte.\0
alors?CJam , 14 octets
Similaire à ma réponse MATL , mais répète l'avant-dernière ligne au lieu de la seconde.
Essayez-le en ligne!
Explication
la source
K, 15 octets
Prend l'entrée comme une matrice de caractères:
Appliquez une fonction deux fois (
2{…}/
) qui donne la transposition (+
) de l'argument de droite indexé (x@
) par le décodage incrémental de la longueur d'exécution (&
) de un plus (1+
) une liste des emplacements égaux à 1 (1=
) dans la plage de 0 à (!
) la taille de la dimension extérieure de l'argument de droite (#x
).Pas à pas,
Essayez-le ici avec oK.
la source
APL,
1715 octetsTester:
Explication:
la source
⌽⍉
ou⊖⍉
, mais dans ce cas, cela n'a pas d'importance.ListSharp , 326 octets
J'ai vraiment besoin d'ajouter l'imbrication des fonctions, mais cela fonctionne très bien
commentez si vous voulez une explication
la source
JavaScript,
160146141 octetsla source
Dyalog APL , 14 octets
Par exemple pour
on trouve les indices; {1, 2, 3} pour les lignes et {1, 2, 3, 4} pour les colonnes. Maintenant, nous supprimons les éléments initiaux pour obtenir {2, 3} et {2, 3, 4}, puis ajoutons {1, 2}, donnant {1, 2, 2, 3} et {1, 2, 2, 3, 4}. Enfin, nous l'utilisons pour sélectionner des lignes et des colonnes, doublant simultanément la ligne 2 et la colonne 2.
TryAPL en ligne!
la source
Rubis, 46 octets
Solution très simple, prenant l'entrée comme un tableau de lignes. Je n'aime pas les doublons
insert
, alors j'essaierai de jouer au golf.la source
C #,
127124 octetsCompile en un
Func<List<string>, List<string>>
.Version formatée:
la source