これらのページ番号を圧縮してください!
免責事項:私はこのサイトを娯楽目的で今しばらく使用していますが、これは私の最初の質問ですので、小さなエラーはご容赦ください。 バックグラウンド 宿題を割り当てるとき、私の先生は本当に迷惑で、私たちが個々にしなければならないすべての問題を書きます。そのため、私がしなければならない問題をコピーするには永遠に時間がかかります。私は自分の人生をもっと楽にしたいと思ったので、問題のリストがより少ないスペースを占めるようにするプログラムを彼に送るでしょう。 ページ番号または問題番号のリストを書き留めながら、ダッシュを使用して範囲を示します。たとえば、に19-21なり19, 20, 21ます。間にギャップがある場合、2カンマで区切られた範囲が使用される:19-21, 27-31なります19, 20, 21, 27, 28, 29, 30, 31。 今、あなたはおそらく「これはかなり些細なことだ」と考えているでしょう。実際、これはすでにこことここで回答されています。 ただし、キャッチがあります。連続する数字が等しい範囲がある場合、繰り返される数字は省略できます。例:に15, 16, 17なり15-7、に107, 108, 109なり107-9ます。ボーナスの場合、最後の連続する等しい数字が1より大きい場合、上限の最後の数字が下限の数字以下である場合、以下は省略できます(混乱して聞こえるかもしれませんが、おそらくいくつかの例で解決できます) 。109-113となり109-3下の最後の桁は10秒の場所を増やす意味として、。 チャレンジ プログラムは、入力を介して整数のリストを取得する必要があります(言語または関数の標準は何でも)。このリストをコンマ区切り、スペース区切り、または実際のリスト/配列として決定できます。 出力最短方法(第一の範囲の数でソートし、次に範囲に含まれる文字の和)は、この表記法を使用して、そのリストを表現します。各破線範囲は同じ行になければなりませんが、範囲はコンマまたは改行で区切ることができます(末尾の改行またはコンマは許可されます)。これらの範囲は適切でなければなりません。 私たちの学校のWi-Fiはひどいので、ファイルをできるだけ小さくして彼に送信する必要があります。最短のコード(バイト単位)が優先されます。 ボーナス 私の先生はだらしないので、彼を助けるいくつかのことがあります。複数のボーナスは乗算によってスタックされます。たとえば、-10%ボーナス(x 90%)と-25%(x 75%)ボーナス= 90%* 75%= x 67.5%(-32.5%ボーナス)。 時々、彼はそれらを間違った順番に並べます(彼は数学の先生ではありません)。プログラムが最小から最大にソートされていない整数を受け入れることができる場合、-20%のボーナスを受け取ります。 私たちの本は奇妙で、各セクションは-10で問題を数え始めます。プログラムが負の数を受け入れることができる場合、-25%を取ります。 下の桁が10の位の増加、たとえばに25-32減少するというボーナスを受け入れる場合25-2、-50%のボーナスを受け取ります。 テストケース In: 1, 2, 3, 4, 5 Out: 1-5 In: 3, 4, 5, 9, …