Yalnızca ASCII yazdırılabilir karakterler içeren ve *
-string olarak adlandırılan başka bir dizeden tek bir dize çekmek için aşağıdaki kuralları kullandığımızı varsayalım . Dize, işlem durmadan önce biterse, bu bir hatadır ve bu durumda işlemin sonucu tanımsızdır:
- İle başla
d=1, s=""
- A ile karşılaştığınızda
*
, 2 ile çarpınd
. Başka bir karakterle karşılaştığınızda, karakteri sonuna kadar bitirins
ve 1'den çıkartınd
. Şimdid=0
ise durun ve geri dönüns
Tanımlanmış Örnekler :
d->d
769->7
abcd56->a
*abcd56->ab
**abcd56->abcd
*7*690->769
***abcdefghij->abcdefgh
Tanımsız Örnekler : (boş dizenin de bunlardan biri olacağını unutmayın)
*7
**769
*7*
*a*b
*
İşiniz bir dize alıp *
o dizeyi üreten en kısa dizeyi döndürmektir .
Program Örnekleri :
7->7
a->a
ab->*ab
abcd->**abcd
769->*7*69
Programınız en az bir karakter ve yalnızca *
ASCII olmayan yazdırılabilir karakterler içeren tüm dizeleri işlemelidir. İşlemin tanımsız olduğu dizeleri asla döndüremezsiniz, çünkü tanım gereği HERHANGİ dizge üretemezler.
Standart boşluklar ve G / Ç kuralları geçerlidir.
*
?