(これは私の最初のコードゴルフの質問です)
私が子供の頃、父と私は、車にあるナンバープレートがいくつかの単純なルールに基づいて特定のポイントを与えることができるゲームを発明しました。
同じ文字または数字のX個の量は、X-1ポイントを与えます。例:
22 = 1 point
aa = 1 point
5555 = 3 points
数字は互いに隣り合っている必要があるため3353
、5は3のシーケンスを中断するため、1ポイントしか与えません。
昇順または降順のX番号のシーケンス、最低3、Xポイントを与えます、例:
123 = 3 points
9753 = 4 points
147 = 3 points
ポイントシステムは1桁の数字に対してのみ機能するため1919
、ポイントは与え14710
ず、3(147)だけを与えます。
シーケンスを組み合わせて、より多くのポイントを作成できます。例:
1135 = 4 points (1 point for 11 and 3 points for 135)
34543 = 6 points (3 points for 345 and 3 points for 543)
ただし、追加のポイントのために、大きなシーケンスを2つの小さなシーケンスに分割する1234 = 123, 234 (6 points)
ことは許可されていません:許可されていません。
タスクは、シーケンスが与えられ、ナンバープレートが与えるポイントの数を決定します。
デンマークでは、ナンバープレートは次のように構成されています。CCII III、Cは文字、Iは整数です。したがって、入力例はこの構造を反映しています。必要に応じて、シーケンスを独自の構造に適合させることができます。または、本当に冒険したい場合は、プログラムにナンバープレートの構造を分析させ、世界中のあらゆるタイプのナンバープレートで機能させることができます。ただし、回答で使用することにした構造を明示的に述べてください。
入力は任意の方法で取得できます。文字列または配列のいずれかが、私にとって最も理にかなっているようです。
テスト入力| 出力:
AA 11 111 | 5
AB 15 436 | 3
OJ 82 645 | 0
UI 65 456 | 6
HH 45 670 | 5
YH 00 244 | 5
AJ 00 754 | 1
独自の構造を選択する性質、またはすべての構造をカバーする性質上、勝者を明示的に決定する方法は必ずしもわかりません。勝者は、構造上決定した最短バイトになると思います。(CICICのように入力するのはやめて、自分で簡単にできるようにします)
編集:
コメントを求めるため、共有する情報がいくつかあります。昇順または降順のシーケンスは算術シーケンスを参照するため、X +/- a * 0、X +/- a * 1、... X +/- a * nなど。したがって、たとえば3-5-7は3 + 2 * 0、3 + 2 * 1、3 + 2 * 2です。ただし、シーケンスは0で開始したり、終了したりする必要はありません。 0。
さらに編集:
任意の方法で入力を行うことができます。スペース、ダッシュ、またはナンバープレートを読みやすくするその他のものを入力する必要はありません。大文字などを受け入れるだけでバイトを節約できる場合は、それも可能です。唯一の要件は、プログラムが文字と数字の両方を含む文字列/配列/任意のものを取り、記述された規則に従って正しい量のポイントを出力できることです。
XX 87 654
。すべてのテストケースで正しいが、このテストケースでは何らかの形で正しくないものを思いつきました。
CCIIIII
スペースを使用しないことをお勧めします)。そうしないと、この問題には客観的な勝利基準がありません。現状のまま(「CICICのように入力しないで、自分で簡単にするため」)は非常に主観的です。許容される構造とは何ですか?
IA99999
数字ではなくコードポイントの減少シーケンスが含まれています)。