Puzzlingに関するこの投稿に触発されました。そのパズルのネタバレは以下にあります。
入力として3つの正の整数が与えられた場合(x, y, z)、包括的範囲を構築し、その範囲[x, y]を連結してから、z不必要に連続した数字を削除して、可能な最大および最小の正の整数を生成します。先行ゼロは許可されません(つまり、数字はで始まる必要があります[1-9])。これらの2つの数値をいずれかの順序で出力します。
Puzzling投稿の例では、入力に対して(1, 100, 100)、可能な最大数は99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100で
あり、最小数はで10000012340616263646566676869707172737475767778798081828384858687888990919293949596979899100、そこに投稿されたjafeの回答
からの以下のロジックに従います。
- 数値の長さに影響を与えることはできません(固定の桁数があります)。したがって、値を最大化するには、最初の最大桁、次に2番目の桁などを取ります。
- 84の最初の9以外を削除します(16桁を削除します):
999995051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 - 次の17桁内の最大数は7であるため、ここから、答えの次の桁は最大で7になります(16桁を超える数字は削除できません)。したがって、15個の非7を削除します(削除するために残っている1桁):
999997585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 - ここから、次の数字は最大8になるため、中央から8以外を1つ削除します。
99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100 - 同様のロジックですが、最小数では逆になります(つまり、先行
1sではなく先行sが必要です9)。
以下に小さな例を示します(1, 10, 5)。
範囲を構築し、可能な最大数を残して削除できる桁を12345678910決定し5ます。明らかに、これは出力の長さに影響を与えることができないため、先行桁を最大化することを意味します。したがって、削除する場合12345、が残り、678910これが作成できる最大のサイズになります。代わりに中央から数字を抜き取り、123410可能な限り小さいままにしておくことができるため、最小にするのは少し複雑です。
にとって (20, 25, 11)、これはかなりのように、退屈さ5と1。
最後に、先行ゼロを試みる回答を除外するに(9, 11, 3)は、91011たターン利回り91と10最大値と最小など。
I / Oとルール
9, 11, 3するだろうと思います。