#include <algorithm>
#include <vector>
#include <iostream>
#include <iomanip>
#include <memory>
#include <array>
using namespace std;

using dice_type = vector<int>;

const array<unique_ptr<const Score>, 3> score_types { make_unique<Ones>(),
                                                      make_unique<Twos>(),
                                                      make_unique<Pair>() };

void print_results(dice_type const & dice)
{
    for ( int die : dice )
    {
        cout << setw(2) << left << die;
    }
    cout << right;
    for ( auto const & score_type : score_types )
    {
        cout << setw(6) << score_type->score(dice);
    }
    cout << endl;
}

int main()
{
    cout << "Tärningar " << right;
    for ( auto const & score_type: score_types )
    {
        cout << setw(6) << score_type->name();
    }
    cout << '\n';
    dice_type dice {1,2,1,3,4};
    print_results(dice);
    dice.assign( {3,3,1,1,1} );
    print_results(dice);
    dice.assign( {5,5,6,6,3} );
    print_results(dice);
}