<commit_before>module hypoport.game {
    export enum Machbarkeit {
        gruen,
        gelb,
        rot
    }

    export class Angebot {
        public zins:number;
        public bindung:number;
        public betrag:number;
        public machbarkeit:Machbarkeit;

        public zinsString() {
            var zs = Math.round(this.zins * 100).toString();
            return zs.slice(0, -2) + "," + zs.slice(-2);
        }
    }

    export class AngebotGenerator {
        static ZINS_BASE = 200;
        static ZINS_VARIANCE = 200;
        static BINDUNG_BASE = 15;
        static  BINDUNG_VARIANCE = 5;
        static BETRAG_BASE = 100;
        static  BETRAG_VARIANCE = 40;

        public createRandomAngebot():Angebot {
            var angebot = new Angebot();
            angebot.machbarkeit = (<any>Machbarkeit)[Machbarkeit[Math.floor(3 * (Math.random()))]];
            angebot.zins = AngebotGenerator.createRandomInteger(AngebotGenerator.ZINS_BASE, AngebotGenerator.ZINS_VARIANCE) / 100;
            angebot.bindung = AngebotGenerator.createRandomInteger(AngebotGenerator.BINDUNG_BASE, AngebotGenerator.BINDUNG_VARIANCE);
            angebot.betrag = AngebotGenerator.createRandomInteger(AngebotGenerator.BETRAG_BASE, AngebotGenerator.BETRAG_VARIANCE) * 1000;
            return  angebot;
        }

        static createRandomInteger(base:number, variance:number):number {
            return base + Math.floor((Math.random() - .5) * variance);
        }
    }
}<commit_msg>Angebot extended with score calculation<commit_after>module hypoport.game {
    export enum Machbarkeit {
        gruen,
        gelb,
        rot
    }

    export class Angebot {
        public zins:number;
        public bindung:number;
        public betrag:number;
        public machbarkeit:Machbarkeit;

        public zinsString() {
            var zs = Math.round(this.zins * 100).toString();
            return zs.slice(0, -2) + "," + zs.slice(-2);
        }

        public score():number {
            var machbarFaktor:number;
            if (this.machbarkeit === Machbarkeit.gelb) {machbarFaktor = .75;}
            else if (this.machbarkeit === Machbarkeit.rot) {machbarFaktor = .6;}
            else {machbarFaktor = 1;}

            return Math.floor(this.bindung / (10 * this.zins) * this.betrag * machbarFaktor);
        }
    }

    export class AngebotGenerator {
        static ZINS_BASE = 200;
        static ZINS_VARIANCE = 200;
        static BINDUNG_BASE = 15;
        static  BINDUNG_VARIANCE = 5;
        static BETRAG_BASE = 100;
        static  BETRAG_VARIANCE = 40;

        public createRandomAngebot():Angebot {
            var angebot = new Angebot();
            angebot.machbarkeit = (<any>Machbarkeit)[Machbarkeit[Math.floor(3 * (Math.random()))]];
            angebot.zins = AngebotGenerator.createRandomInteger(AngebotGenerator.ZINS_BASE, AngebotGenerator.ZINS_VARIANCE) / 100;
            angebot.bindung = AngebotGenerator.createRandomInteger(AngebotGenerator.BINDUNG_BASE, AngebotGenerator.BINDUNG_VARIANCE);
            angebot.betrag = AngebotGenerator.createRandomInteger(AngebotGenerator.BETRAG_BASE, AngebotGenerator.BETRAG_VARIANCE) * 1000;
            return  angebot;
        }

        static createRandomInteger(base:number, variance:number):number {
            return base + Math.floor((Math.random() - .5) * variance);
        }
    }
}
{'fraction_non_alphanumeric': 0.09872893881170558, 'fraction_numerical': 0.018918120011823827, 'mean_word_length': 2.3873873873873874, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4066338', 'n_tokens_mistral': 1138, 'n_tokens_neox': 1067, 'n_words': 188}