免責事項:私はこのサイトを娯楽目的で今しばらく使用していますが、これは私の最初の質問ですので、小さなエラーはご容赦ください。
バックグラウンド
宿題を割り当てるとき、私の先生は本当に迷惑で、私たちが個々にしなければならないすべての問題を書きます。そのため、私がしなければならない問題をコピーするには永遠に時間がかかります。私は自分の人生をもっと楽にしたいと思ったので、問題のリストがより少ないスペースを占めるようにするプログラムを彼に送るでしょう。
ページ番号または問題番号のリストを書き留めながら、ダッシュを使用して範囲を示します。たとえば、に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, 10, 11, 12
Out: 3-5, 9-12
In: 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160
Out: 149-60
In: 1 2 3 4
Out: 1-4
For bonuses:
In: 109, 110, 111, 112, 113
Out: 109-3
In: 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29
Out: 19-9
In: -3, -2, -1, 0, 1, 2
Out: -3-2
In: -3, -2, -1
Out: -3--1
回答は2015年12月19日土曜日に受け付けられます。
GL HF!
149 150 151 152 153 154 155 156 157 178 159 160
ですか?
19-9
ていますが、テストケースはテキストが示すようにで19,20,...,29
はなく、と言い19-29
ます。どちらが正しいのですか?
1-4 9-2
ですか?