Alternatif , bir dize alma ve alternatif parantez içine yerleştirme eylemidir. Bir dizgiyi nasıl değiştireceğiniz aşağıda açıklanmıştır .
Bir uzunluk N dizesi için, orta N karakterlerini alın ve parantez içine alın. Eğer dizgimiz
Hello world!
(12 karakter) olsaydı , sonunda bitiririz.(Hello world!)
Ardından, kalan orta
n-2
karakterleri alın ve bunları köşeli parantez içine alın. Bu durumda, merkez 10 karakterello world
, yani bir sonraki yineleme:(H[ello world]!)
Dizenin ortasında ikiden fazla karakter kaldığı sürece,
()
ve arasında değişen son iki adımı tekrarlayın[]
. İşte son adımlar:(Hello world!) (H[ello world]!) (H[e(llo worl)d]!) (H[e(l[l(o[ w]o)r]l)d]!)
Son yinelemenin ortasında sadece iki karakter kaldığından, dururuz. Son dizgimiz
(H[e(l[l(o[ w]o)r]l)d]!)
Orta parantez içerisinde iki karakterin nasıl olduğuna dikkat edin. Bu, giriş düzgün bir uzunluk olduğunda gerçekleşir. Giriş tek bir uzunluktaysa (örneğin,
Hello, world!
virgül eklenmişse), ortada yalnızca bir karakter olacaktı:(H[e(l[l(o[,( )w]o)r]l)d]!)
Bugünün mücadelesi için, dizgeyi girdi olarak alan ve alternatifini değiştirerek yeni dizgeyi çıkaran bir program veya işlev yazmalısınız. İstediğiniz herhangi bir makul formatta girdi ve çıktı alabilirsiniz. Giriş her zaman en az bir karakter uzunluğunda olacak ve yalnızca yazdırılabilir ASCII içerecektir. Ayrıca giriş varsayabiliriz değil herhangi parantez veya köşeli ayraç içerir. Geleneksel diller için bu çok fazla önemli olmamalıdır, ancak bazı ezoterik diller için daha kolay olabilir.
Her zamanki gibi, bu bir kod-golf yarışmasıdır, bu nedenle seçtiğiniz dilde mümkün olan en kısa sürede yanıt vermeye çalışın. İyi eğlenceler!
Test IO
#Input #Output
"Alternesting is fun!" --> (A[l(t[e(r[n(e[s(t[in]g) ]i)s] )f]u)n]!)
"PPCG" --> (P[PC]G)
"Code-golf" --> (C[o(d[e(-)g]o)l]f)
"4 8 15 16 23 42" --> (4[ (8[ (1[5( [1]6) ]2)3] )4]2)
"a" --> (a)
"ab" --> (ab)
"abc" --> (a[b]c)
()
parantez ( []
) ile mi başlamalıyız, yoksa parantez ( ) ile başlayabilir miyiz ?
()
HelloWorld
.