Bir makinenin veya nesnenin en küçük parçalarına bölündüğü patlamış görünüm diyagramlarını sevmiyor musunuz ?
Bunu bir dizeye yapalım!
Meydan okuma
Bir program veya fonksiyon yazmak
- yalnızca yazdırılabilir ASCII karakterlerini içeren bir dize girdi ;
- dizgiyi boşluk olmayan eşit karakter gruplarına ( dizginin "parçaları") ayırır;
- Bu grupları, gruplar arasında bir ayırıcıyla , uygun herhangi bir biçimde çıkarır .
Örneğin, dize verilen
Ah, abracadabra!
çıktı aşağıdaki gruplar olacaktır:
! , bir aaaaa bb c d h rr
Çıktıdaki her grup, boşluk kaldırılmış olarak eşit karakterler içerir. Gruplar arasında ayırıcı olarak bir newline kullanılmıştır. Aşağıdaki izin verilen biçimler hakkında daha fazla bilgi.
kurallar
Giriş , bir ip ya da karakter dizisi olmalıdır. Yalnızca yazdırılabilir ASCII karakterlerini içerecektir (uzaydan tilde dahil olan). Diliniz bunu desteklemiyorsa, girişi ASCII kodlarını temsil eden sayılar şeklinde alabilirsiniz.
Girişin en az bir boşluk olmayan karakter içerdiğini varsayabilirsiniz .
Çıkış oluşmalıdır karakter (giriş ASCII kod vasıtasıyla olsa bile). Girişte görünebilecek boşluk olmayan karakterlerden farklı olarak gruplar arasında belirsiz bir ayırıcı olmalıdır .
Çıktı, işlev dönüşü üzerinden gerçekleştiriliyorsa, bir dizi veya dizeler veya bir karakter dizisi dizisi veya benzer bir yapı da olabilir. Bu durumda yapı gerekli ayrımı sağlar.
Her grubun karakterleri arasında bir ayırıcı isteğe bağlıdır . Bir kural varsa, aynı kural geçerlidir: girişte görünebilecek boşluk olmayan bir karakter olamaz. Ayrıca, gruplar arasında kullanılanla aynı ayırıcı olamaz.
Bunun dışında format esnek. İşte bazı örnekler:
Gruplar yukarıda gösterildiği gibi yeni satırlarla ayrılmış dizeler olabilir.
Gruplar, gibi ASCII olmayan herhangi bir karakterle ayrılabilir
¬
. Yukarıdaki giriş için çıktı dizge olacaktır:!¬,¬A¬aaaaa¬bb¬c¬d¬h¬rr
Gruplar n > 1 boşluklarla ayrılabilir ( n değişken olsa bile ), her grup arasındaki karakter sayısı tek bir boşlukla ayrılabilir:
! , A a a a a a b b c d h r r
Çıktı, bir işlev tarafından döndürülen bir dize dizisi veya listesi de olabilir:
['!', 'A', 'aaaaa', 'bb', 'c', 'd', 'h', 'rr']
Veya bir dizi char dizisi:
[['!'], ['A'], ['a', 'a', 'a', 'a', 'a'], ['b', 'b'], ['c'], ['d'], ['h'], ['r', 'r']]
Kurallara göre izin verilmeyen format örnekleri:
!,,,A,a,a,a,a,a,b,b,c,d,h,r,r
Girdi virgül içerebileceğinden virgül ayırıcı ( ) olarak kullanılamaz .- Ayırıcıyı gruplar (
!,Aaaaaabbcdhrr
) arasına düşürmek veya aynı ayırıcıyı gruplar arasında ve gruplar içinde (! , A a a a a a b b c d h r r
) kullanmak kabul edilmez .
Gruplar çıktıda herhangi bir sırada görünebilir . Örneğin: alfabetik sıra (yukarıdaki örneklerde olduğu gibi), dizedeki ilk görünüm sırası, ... Düzenin tutarlı veya hatta deterministik olması gerekmez.
Girdilerin yeni satır karakterleri içeremediğiniA
ve a
farklı karakterler olduklarını unutmayın (gruplama büyük / küçük harfe duyarlıdır ).
Bayt cinsinden en kısa kod kazanır.
Test durumları
Her test durumunda, ilk satır giriş ve kalan satırlar her grup farklı bir satırda çıktı olarak verilir.
Test durumu 1:
Ah, abrakadabra! ! , bir aaaaa bb c d h rr
Test durumu 2:
\ O / \ / o \ o / /// \\\ ooo
Test durumu 3:
Bir adam, bir plan, bir kanal: Panama! ! ,, : bir P aaaaaaaaa c ll aa nnnn p
Test durumu 4:
“Bana bu numarayı nasıl yaptığını göster, beni çığlık atan şey” "" , S aaaaa cc gg eeeeeee hhhhhh ii kK mmmm n ooooo rr ssss tttttt u ww y