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
- 同様のロジックですが、最小数では逆になります(つまり、先行
1
sではなく先行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
するだろうと思います。