機械やオブジェクトを最小の断片に分解した分解図が好きではありませんか?
それを文字列にしましょう!
チャレンジ
以下のプログラムまたは関数を作成します
- 印刷可能なASCII文字のみを含む文字列を入力します。
- 文字列を非スペースの等しい文字(文字列の「断片」)のグループに分割します。
- これらのグループを便利な形式で出力します。グループ間にはセパレータがあります。
たとえば、与えられた文字列
Ah, abracadabra!
出力は次のグループになります。
! 、 A ああああ bb c d h rr
出力の各グループには、スペースが削除された等しい文字が含まれています。グループ間の区切り文字として改行が使用されています。許可されている形式については、以下をご覧ください。
ルール
入力は、文字列または文字の配列であるべきです。印刷可能なASCII文字(スペースからチルダまでの範囲)のみが含まれます。ご使用の言語でサポートされていない場合は、ASCIIコードを表す数字の形式で入力を取得できます。
入力には少なくとも1つの非スペース文字が含まれると想定できます。
出力は、からなるべき文字(入力がASCIIコードによるものである場合でも)。グループ間には、入力に現れるスペース以外の文字とは異なる明確な区切り文字が必要です。
出力が関数の戻り値を介している場合、配列または文字列、または文字の配列の配列、または同様の構造体である可能性があります。その場合、構造は必要な分離を提供します。
各グループの文字間の区切り文字はオプションです。ある場合、同じルールが適用されます。入力に現れる可能性のあるスペース以外の文字は使用できません。また、グループ間で使用されるのと同じセパレーターであってはなりません。
それ以外は、フォーマットは柔軟です。ここではいくつかの例を示します。
上記のように、グループは改行で区切られた文字列です。
グループは、などの非ASCII文字で区切ることができます
¬
。上記の入力の出力は文字列になります。!¬,¬A¬aaaaa¬bb¬c¬d¬h¬rr
グループはn > 1スペースで区切ることができます(nが可変であっても)。各グループ間の文字は1つのスペースで区切られます。
! , A a a a a a b b c d h r r
出力は、関数によって返される文字列の配列またはリストでもあります。
['!', 'A', 'aaaaa', 'bb', 'c', 'd', 'h', 'rr']
またはchar配列の配列:
[['!'], ['A'], ['a', 'a', 'a', 'a', 'a'], ['b', 'b'], ['c'], ['d'], ['h'], ['r', 'r']]
規則に従って許可されていない形式の例:
!,,,A,a,a,a,a,a,b,b,c,d,h,r,r
入力にコンマが含まれている可能性があるため、コンマをセパレーター()として使用することはできません。- グループ間で区切り文字を削除する(
!,Aaaaaabbcdhrr
)か、グループ間およびグループ内で同じ区切り文字を使用する()ことは許可されません! , A a a a a a b b c d h r r
。
グループは、出力に任意の順序で表示されます。例:アルファベット順(上記の例のように)、文字列に最初に現れる順序、...順序は一貫していたり、決定的であったりする必要はありません。
入力は、改行文字が含まれ、そしてできないことに注意してくださいA
とa
異なる文字(グループがある場合、sentitive)。
バイト単位の最短コードが優先されます。
テストケース
各テストケースでは、最初の行が入力され、残りの行は出力であり、各グループは異なる行にあります。
テストケース1:
ああ、アブラカダブラ! ! 、 A ああああ bb c d h rr
テストケース2:
\ o / \ o / \ o / /// \\\ おー
テストケース3:
男、計画、運河:パナマ! ! 、、 : A P aaaaaaaaa c ll mm nnnn p
テストケース4:
「あなたがそのトリックをどのように行うかを見せてください。 「」 、 S ああああ cc dd eeeeeee うん ii kk んー n ああ rr ssss tttttt あなたは ww y