CandidateLaneRecipe.hpp

//------------------------------------------------------------------------------
/// @file
/// @author   ハル研究所プログラミングコンテスト実行委員会
///
/// @copyright  Copyright (c) 2018 HAL Laboratory, Inc.
/// @attention  このファイルの利用は、同梱のREADMEにある
///             利用条件に従ってください。
//------------------------------------------------------------------------------
#pragma once

//------------------------------------------------------------------------------
namespace hpc {

/// 生地置き場を構築するためのレシピ。
class CandidateLaneRecipe
{
public:
    /// @name コンストラクタ
    //@{
    CandidateLaneRecipe();
    CandidateLaneRecipe(
        int aMinSampleEdgeLength,
        int aMaxSampleEdgeLength,
        float aFoldPosRatioMin,
        float aFoldPosRatioTerm,
        int aMinPrimalScore,
        int aMaxPrimalScore,
        float aScoreCoeffMin,
        float aScoreCoeffTerm,
        int aVisiblePieceCount
        );
    //@}

    /// @name 問い合わせ
    //@{
    /// 基準正方形の一辺の長さの最小値。
    int minSampleEdgeLength() const;
    /// 基準正方形の一辺の長さの最大値。
    int maxSampleEdgeLength() const;
    /// 生地の長辺+短辺を折る位置の最小値。
    float foldPosRatioMin() const;
    /// 生地の長辺+短辺を折る位置の最大値。
    float foldPosRatioTerm() const;
    /// 原始スコアの最小値。
    int minPrimalScore() const;
    /// 原始スコアの最大値。
    int maxPrimalScore() const;
    /// スコア換算係数の最小値。
    float scoreCoeffMin() const;
    /// スコア換算係数の最大値。
    float scoreCoeffTerm() const;
    /// 見えている生地の最大数。
    int visiblePieceCount() const;
    //@}

private:
    /// @name プライベートメンバ変数
    //@{
    /// 基準正方形の一辺の長さの最小値。
    int mMinSampleEdgeLength;
    /// 基準正方形の一辺の長さの最大値。
    int mMaxSampleEdgeLength;
    /// 生地の長辺+短辺を折る位置の最小値。
    float mFoldPosRatioMin;
    /// 生地の長辺+短辺を折る位置の最大値。
    float mFoldPosRatioTerm;
    /// 原始スコアの最小値。
    int mMinPrimalScore;
    /// 原始スコアの最大値。
    int mMaxPrimalScore;
    /// スコア換算係数の最小値。
    float mScoreCoeffMin;
    /// スコア換算係数の最大値。
    float mScoreCoeffTerm;
    /// 見えている生地の最大数。
    int mVisiblePieceCount;
    //@}
};

} // namespace
// EOF