( Bu meydan okumadan oldukça ilham aldı )
Orijinal meydan okumada, yatay bir fermuar yapacaktınız, ancak, kapüşonuma bakarken, fermuarım çok daha dikey (ve biraz kırık): P
Giriş
Herhangi bir biçimde size tek bir dize ( s
) ve bir çift tamsayı ( a
ve b
) verilir. Nerede:
a < (length-of-s / 2)
b <= ((length-of-s / 2) - (a + 1)) / 6
Çıktı ve Puanlama
Programınız tam bir program veya doğru biçimlendirmeye sahip tek bir dize veya seçtiğiniz bir dizi (satır başına bir öğe) üreten bir işlev olabilir. Çıktı karakterleri aynı hizaya geldiği sürece, öndeki ve sondaki boşluklar ve satırsonları isteğe bağlıdır. Örneğin.
["f r"],["u e"],["l p"],["l p"],["y i"],[" o z "],[" p n "],[" e "]
veya
"f r\nu e\nl p\nl p\ny i\n o z \n p n \n e "
vaka 1 için kabul edilebilir çıktılar
Standart Loopholes yasaktır ve bayt cinsinden en kısa kod kazanır. Açıklamasız herhangi bir cevap kazanamaz.
açıklama
Bir fermuar yapmak için önce dizeden boşluk veya yeni satır karakterlerini kaldırmanız gerekir. Ve sonra ikiye katlayın (daha fazla bilgi için test örneği 1'e bakın)
abcde fgh ij klmnopqr
aşağıdaki iki dize olur, ikinci yarının tersine döndüğüne dikkat edin.
abcdefghi
ve rqponmlkj
Daha sonra, her dizenin başlangıcından başlayarak, her bir alt dizeden aynı dizine alınmış karakteri bir satır üzerine aşağıdaki gibi belirlenen aralıklarla yerleştiririz:
[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...
Bu fermuarımızın temelini oluşturur. Şimdi tamsayılar a
ve b
.
a
bizim zip konumudur. Fermuarın nerede olduğunu belirlemek için fermuarımızı kapatma noktası olarak çıkış hatlarımızın dizinini kullanıyoruz. Örneğin, [3]
yukarıdaki örneğimde köşeli parantez fermuarın bulunduğu yerdir.
Fermuarımız kapanmadan önce, yukarıdaki fermuarın a-2
3 boşluğa ve a-1
1 boşluğa kapandığı yere ulaşana kadar beş boşlukta kalması gerekir . Sadece açık olmak gerekirse, yukarıdaki örnekte a = 3
(0 dizinli)
b
fermuarımdaki delik sayısı. Fermuarda bir delik oluşturmak için, dizeyi bir miktar boşlukla tekrar ayırırız.
Olarak, örneğin, deliğin indeksi ile başlayarak h
biz arasındaki mesafenin artırılması h-1
, bir boşluğa h
3 boşluklar ve h+1
geri bir boşluk bırakarak, h-2
ve h+2
bunlar deliğin bir parçası olarak kabul edilir olarak hat başına sadece tek bir karakter.
Fermuardan sonra ve deliklerin her biri arasında bir karakter boşluğu olmalıdır, böylece fermuarımız delikler arasında tamamen bağlı görünür.
Deliklerin indekslerini seçersiniz, ancak hepsinin fermuarın 'kapalı' bölümünde bulunması gerekir.
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
Ben sormak değilse, her şeyin mantıklı olmasını umuyorum. Soruların beklentisiyle p
, ikinci örneğimdeki karakterin ikinci alt dize içinde bulunduğunu fark edebilirsiniz , ancak satırının başında görünür, bu amaçlanmıştır, 1-2-1-2- dizisini takip etmelisiniz 1-2, çıktıdaki konumuna bakılmaksızın sırayla her yarıdan bir karakter alır.
Test Durumları
"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
- Sütun 1: "Herhangi bir iyi kapüşonda olmaması gereken aptalca uzun kesintisiz fermuar", 24, 0
- Sütun 2: "Lorem ipsum dolor sit amet, 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: Eklenen Test Durumları
"abcde fgh ij klmnopqr","3","1"
a r
b q
c p
d
o
e
n f
m g
l h
k
i
j