(Inspiré assez fortement par ce défi )
Dans le défi d'origine, vous deviez faire une fermeture à glissière horizontale, cependant, en regardant mon sweat à capuche, ma fermeture à glissière est beaucoup plus verticale (et un peu cassée): P
Contribution
Vous recevrez une seule chaîne ( s
) et une paire d'entiers ( a
et b
) dans n'importe quel format. Où:
a < (length-of-s / 2)
b <= ((length-of-s / 2) - (a + 1)) / 6
Sortie et notation
Votre programme peut être un programme complet ou une fonction qui produit une seule chaîne avec la mise en forme correcte ou un tableau (un élément par ligne) que vous choisissez. Les espaces de début et de fin et les sauts de ligne sont facultatifs tant que les caractères de la sortie sont tous alignés. par exemple.
["f r"],["u e"],["l p"],["l p"],["y i"],[" o z "],[" p n "],[" e "]
ou
"f r\nu e\nl p\nl p\ny i\n o z \n p n \n e "
sont des sorties acceptables pour le cas de test 1
Les failles standard sont interdites et le code le plus court en octets l'emporte. Toute réponse sans explication ne pourra pas gagner.
Explication
Pour créer une fermeture éclair, vous devez d'abord supprimer les espaces ou les caractères de nouvelle ligne de la chaîne. Et puis pliez-le en deux comme ça (voir le cas de test 1 pour plus)
abcde fgh ij klmnopqr
devient les deux chaînes ci-dessous, notez que la seconde moitié est inversée.
abcdefghi
et rqponmlkj
Ensuite, en commençant au début de chaque chaîne, nous plaçons le même caractère indexé de chaque sous-chaîne sur une ligne avec l'espacement déterminé comme suit:
[0] a r -- (a-3) five spaces
[1] b q -- (a-2) three spaces
[2] c p -- (a-1) one space
[3] d -- (a)
[4] o
[5] e
[6] n
etc...
Cela fait la base de notre fermeture éclair. Maintenant, les entiers a
et b
.
a
est l'emplacement de notre zip. Pour déterminer où se trouve la fermeture éclair, nous utilisons l'index de nos lignes de sortie comme point de fermeture de notre fermeture éclair. par exemple, le carré entre crochets [3]
dans mon exemple ci-dessus est l'endroit où se trouve le zip.
Avant que notre fermeture à glissière n'atteigne une fermeture, la fermeture à glissière ci-dessus doit rester à un espace de cinq espaces jusqu'à ce qu'elle atteigne a-2
où elle se ferme à 3 espaces et a-1
où elle se ferme à 1 espace. Juste pour être clair, dans l'exemple ci-dessus a = 3
(indexé 0)
b
est le nombre de trous dans ma fermeture éclair. Pour créer un trou dans le zip, nous avons à nouveau divisé la chaîne avec un certain espacement.
En commençant par l'index du trou d'exemple lorsque h
nous augmentons l'espacement d' h-1
un espace, h
à 3 espaces et de h+1
retour à un espace, en laissant h-2
et h+2
avec un seul caractère par ligne car ils sont comptés comme faisant partie du trou.
Après le zip et entre chacun des trous, il doit y avoir un espace d'un caractère afin que notre zip semble entièrement connecté entre les trous.
Vous pouvez choisir les index des trous, mais ils doivent tous être présents dans la section «fermée» de la fermeture éclair.
Again using 'abcdefghi' and 'rqponmlkj'
[0] a r -- (open)
[1] b q -- (closing)
[2] c p -- (closing)
[3] d -- zip
[4] o -- gap
[5] e -- start of hole (h-2)
[6] n f -- one space (h-1)
[7] m g -- three spaces (hole h)
[8] l h -- one space (h+1)
[9] k -- end of hole (h+2)
[10] i -- gap
[11] j
J'espère que tout a du sens, sinon demandez loin. En prévision de questions, vous remarquerez peut-être que le personnage p
de mon deuxième exemple est présent dans la deuxième sous-chaîne, cependant, apparaît au début de sa ligne, cela est prévu, vous devez suivre la séquence de 1-2-1-2- 1-2, en prenant tour à tour un personnage de chaque moitié quelle que soit sa position dans la sortie.
Cas de test
"fully open zipper", 7, 0 | "fully closed zipper", 0, 0
fullyope reppizn | fullyclos reppizde
|
f r *Note: i particularly like this | f
u e example as it shows the reversing | r
l p of the second half of the string | u
l p causes the words to wrap from top | e
y i left to the bottom and back up | l
o z the right side | p
p n | l
e | p
| y
| i
| c
| z
| l
| d
| o
| e
| s
- Colonne 1: "Fermeture à glissière ininterrompue stupidement longue qui ne devrait pas exister sur un sweat à capuche décent", 24, 0
- Colonne 2: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris faucibus molestie mi. Aliquam nec fringilla ipsum", 15, 5
:
s e | L m
t i | o u
u d | r s
p o | e p
i o | m i
d h | i a
l t | p l
y n | s l
l e | u i
o c | m g
n e | d n
g d | o i
u y | l r
n n | o f
b a | r c
r n | s
o o | e
k t | i
e s | n t
n i | m a
z x | a m
i e | u
p t | e
p n | q
e | t
d | i
r | ,
l | l c
t | A o
u | . n
h | i
o | s
a | m
h | e e
t | c i
s | t t
| e
| s
| t
| s
| u
| l
| r
| o
| a
| m
| d
| s
| i
| u
| p
| b i
| i s
| c c
| u
| i
| a
| n
| f
| g
| s
| e
| i
| l r
| i u
| t a
| .
| M
EDIT: cas de test ajoutés
"abcde fgh ij klmnopqr","3","1"
a r
b q
c p
d
o
e
n f
m g
l h
k
i
j