Tidakkah Anda menyukai diagram tampilan meledak di mana mesin atau objek dipisahkan menjadi bagian terkecil?
Mari kita lakukan itu untuk sebuah string!
Tantangan
Tulis program atau fungsi itu
- memasukkan string yang hanya berisi karakter ASCII yang dapat dicetak ;
- membedah string menjadi kelompok karakter yang sama tanpa spasi ("bagian" dari string);
- mengeluarkan grup-grup tersebut dalam format yang mudah, dengan beberapa pemisah antar grup .
Misalnya diberi string
Ah, abracadabra!
output akan menjadi kelompok-kelompok berikut:
! , SEBUAH aaaaa bb c d h rr
Setiap grup dalam output berisi karakter yang sama, dengan spasi dihapus. Baris baru telah digunakan sebagai pemisah antar kelompok. Lebih lanjut tentang format yang diizinkan di bawah.
Aturan
The masukan harus string atau array karakter. Ini hanya akan berisi karakter ASCII yang dapat dicetak (rentang inklusif dari ruang hingga tilde). Jika bahasa Anda tidak mendukung hal itu, Anda dapat mengambil input dalam bentuk angka yang mewakili kode ASCII.
Anda dapat mengasumsikan bahwa input berisi setidaknya satu karakter non-spasi .
The Output harus terdiri dari karakter (bahkan jika input adalah dengan cara kode ASCII). Harus ada pemisah yang jelas antara kelompok-kelompok , berbeda dari karakter non-spasi yang mungkin muncul dalam input.
Jika output melalui fungsi kembali, itu juga bisa berupa array atau string, atau array array chars, atau struktur serupa. Dalam hal ini struktur menyediakan pemisahan yang diperlukan.
Pemisah antara karakter masing-masing grup adalah opsional . Jika ada, aturan yang sama berlaku: tidak boleh berupa karakter non-spasi yang mungkin muncul dalam input. Juga, itu tidak bisa menjadi pemisah yang sama seperti yang digunakan antar kelompok.
Selain itu, formatnya fleksibel. Berikut ini beberapa contohnya:
Grup mungkin dipisahkan oleh string baris baru, seperti yang ditunjukkan di atas.
Grup dapat dipisahkan oleh karakter non-ASCII, seperti
¬
. Output untuk input di atas adalah string:!¬,¬A¬aaaaa¬bb¬c¬d¬h¬rr
Grup dapat dipisahkan oleh n > 1 spasi (bahkan jika n adalah variabel), dengan karakter di antara masing-masing grup dipisahkan oleh satu ruang:
! , A a a a a a b b c d h r r
Outputnya juga bisa berupa array atau daftar string yang dikembalikan oleh suatu fungsi:
['!', 'A', 'aaaaa', 'bb', 'c', 'd', 'h', 'rr']
Atau larik array arang:
[['!'], ['A'], ['a', 'a', 'a', 'a', 'a'], ['b', 'b'], ['c'], ['d'], ['h'], ['r', 'r']]
Contoh format yang tidak diizinkan, sesuai aturan:
- Koma tidak dapat digunakan sebagai pemisah (
!,,,A,a,a,a,a,a,b,b,c,d,h,r,r
), karena input mungkin mengandung koma. - Tidak diterima untuk menjatuhkan pemisah antar grup (
!,Aaaaaabbcdhrr
) atau menggunakan pemisah yang sama antara grup dan di dalam grup (! , A a a a a a b b c d h r r
).
Grup dapat muncul dalam urutan apa pun dalam output. Sebagai contoh: urutan abjad (seperti dalam contoh di atas), urutan penampilan pertama dalam string, ... Urutan tidak perlu konsisten atau bahkan deterministik.
Perhatikan bahwa input tidak dapat berisi karakter baris baru, dan A
dan a
merupakan karakter yang berbeda (pengelompokan bersifat case-sentitive ).
Kode terpendek dalam byte menang.
Uji kasus
Dalam setiap kasus uji, baris pertama adalah input, dan baris yang tersisa adalah output, dengan masing-masing kelompok di baris yang berbeda.
Uji kasus 1:
Ah, abracadabra! ! , SEBUAH aaaaa bb c d h rr
Uji kasus 2:
\ o / \ o / \ o / /// \\\ ooo
Uji kasus 3:
Seorang pria, sebuah rencana, sebuah kanal: Panama! ! ,, : SEBUAH P aaaaaaaaa c ll mm nnnn hal
Uji kasus 4:
"Tunjukkan padaku bagaimana kamu melakukan trik itu, yang membuatku menjerit," katanya "" , S aaaaa cc DD eeeeeee hhhhhh ii kk mmmm n ooooo rr ssss tttttt kamu ww y