#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int rollDice(void);

int main() {
    int wins[22] = {0};
    int losses[22] = {0};
    int winSum = 0;
    long totalRolls = 0;

    srand(time(NULL));

    for (int i = 0; i < 1000000; i++) {
        int sum = rollDice();
        int rollCount = 1;
        int gameStatus;
        int point = 0;

        if (sum == 7 || sum == 11) {
            gameStatus = 1;
        } else if (sum == 2 || sum == 3 || sum == 12) {
            gameStatus = 2;
        } else {
            gameStatus = 0;
            point = sum;
        }

        while (gameStatus == 0) {
            sum = rollDice();
            rollCount++;
            
            if (sum == point) {
                gameStatus = 1;
            } else if (sum == 7) {
                gameStatus = 2;
            }
        }

        totalRolls += rollCount;
        
        if (rollCount > 21) {
            rollCount = 21;
        }

        if (gameStatus == 1) {
            wins[rollCount]++;
            winSum++;
        } else {
            losses[rollCount]++;
        }
    }

    for (int i = 1; i <= 20; i++) {
        printf("Won on roll %d: %d\n", i, wins[i]);
    }
    printf("Won after roll 20: %d\n\n", wins[21]);

    for (int i = 1; i <= 20; i++) {
        printf("Lost on roll %d: %d\n", i, losses[i]);
    }
    printf("Lost after roll 20: %d\n\n", losses[21]);

    printf("Chances of winning: %.2f%%\n", (winSum / 1000000.0) * 100);
    printf("Average game length: %.2f rolls\n", totalRolls / 1000000.0);

    return 0;
}

int rollDice(void) {
    int die1 = 1 + rand() % 6;
    int die2 = 1 + rand() % 6;
    return die1 + die2;
}