C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++で文字列から結果の色の組み合わせを求める方法

プログラミングの問題の中には、与えられたルールに従って文字列を順番に処理し、最終的な結果を導き出すものがあります。本記事では、3つの色(GBY)からなる文字列が与えられたとき、以下の関係式に基づいて最終的に得られる色をC++で求める方法を解説します。

問題の定義

色と色を組み合わせたときの結果は、次のルールで決まります。

  • B × G = Y
  • Y × B = G
  • G × Y = B

例えば、文字列が「GBYGB」であれば結果は B になり、「BYB」であれば結果は Y になります。

アルゴリズムの考え方

アプローチは非常にシンプルです。

  1. 文字列の先頭の文字を初期の結果色として設定します。
  2. 2文字目以降の各文字について、現在の結果色と順番に比較していきます。
  3. 両者が異なる場合は、上記の組み合わせルールに従って新しい結果色を求めます。
  4. すべての文字を処理し終えた時点の結果色が答えとなります。

C++での実装例

#include <iostream>
using namespace std;

char combination(string s) {
    char color = s[0];
    for (int i = 1; i < s.length(); i++) {
        if (color != s[i]) {
            if ((color == 'B' || color == 'G') && (s[i] == 'G' || s[i] == 'B'))
                color = 'Y';
            else if ((color == 'B' || color == 'Y') && (s[i] == 'Y' || s[i] == 'B'))
                color = 'G';
            else
                color = 'B';
        }
    }
    return color;
}

int main() {
    string color_str = "GBYBGY";
    cout << "Color Combination Result: " << combination(color_str);
}

実行結果

Color Combination Result: B

コードの解説

関数 combination() では、まず文字列の最初の文字を変数 color に格納します。その後、残りの文字を先頭から順に走査し、現在の結果色と異なる文字が出てきたタイミングで、組み合わせのルールに基づいて結果色を更新していきます。

  • 現在の色と対象の文字が「B」と「G」の組み合わせなら、結果は「Y」になります。
  • 「B」と「Y」の組み合わせなら、結果は「G」になります。
  • それ以外(「G」と「Y」の組み合わせ)なら、結果は「B」になります。
  • 同じ色同士が続いた場合は、結果色はそのまま維持されます。

このアルゴリズムの計算量は O(n)(nは文字列の長さ)であり、文字列を一度だけ走査するため、非常に効率的に処理できるのが特徴です。

  1. C++で三角形の重心を求めるプログラムの作成方法

    この記事では、三角形の3つの頂点の座標を格納した2次元配列が与えられたときに、その三角形の重心を求めるC++プログラムの作成方法を解説します。 三角形の重心とは、三角形の3本の中線がすべて交わる点のことです。 また、三角形の中線とは、ある頂点と、その対辺(向かい合う辺)の中点を結ぶ線分のことを指します。 それでは、具体的な例を使って問題を確認してみましょう。 入力 (-3, 1), (1.5, 0), (-3, -4) 出力 (-1.5, -1) 説明 重心 (x, y) = ((-3 + 1.5 - 3) / 3, (1 + 0 - 4) / 3) = (-1.5, -1) 解法のアプロ

  2. C++で平行四辺形の面積を求めるプログラムの作成方法

    この記事では、平行四辺形の底辺と高さを表す2つの値が与えられたとき、C++を使ってその面積を求めるプログラムを作成する方法を解説します。 平行四辺形とは? 平行四辺形とは、4つの辺からなる閉じた図形であり、向かい合う2組の辺がそれぞれ長さが等しく、互いに平行になっている四角形のことです。 問題を理解するための具体例 入力 B = 20, H = 15 出力 300 説明 平行四辺形の面積 = 底辺 × 高さ = 20 × 15 = 300 解決アプローチ この問題を解くには、平行四辺形の面積を求める幾何学の公式を使用します。 面積 = 底辺 × 高さ つまり、与えられた底辺と高さを掛け合わせ