<commit_before>import collections

TAROK, KARO, SRCE, KRIZ, PIK, NEZNANA = 0, 1, 2, 3, 4, -1

def barvaVString(barva):
    return {TAROK:'T', KARO:'K', SRCE:'S', KRIZ:'R', PIK:'P', NEZNANA: 'X'}[barva]

def stringVBarvo(s):
    return {'T':TAROK, 'K':KARO, 'S':SRCE, 'R':KRIZ, 'P':PIK, 'X':NEZNANA}.get(s,-2)

# vidi: Karta implementira __eq__ in __hash__ iz BARVE/VREDNOSTI, tko da se bodo dogajale grde stvari
#       ce spreminjas barvo/vrednost medtem ko je uporabljena npr. za key!
class Karta:
    def __init__(self, *args):
        if len(args) == 2:
            self.barva = args[0]
            self.vrednost = args[1]
        else:
            self.barva,self.vrednost = -1,-1
            self.parse(args[0])

    def copy(self):
        return Karta(self.barva, self.vrednost)
            
    def stTock(self):
        if self.barva != TAROK:
            return {11:4,12:7,13:10,14:13}.get(self.vrednost, 1)
        else:
            return 13 if self.vrednost in (1,21,22) else 1
    
    def __repr__(self):
        return '%s%d' % (barvaVString(self.barva),self.vrednost)

    def __lt__(self, other):
        if self.barva == other.barva:
            if self.barva == TAROK:
                return self.vrednost < other.vrednost
            else:
                return self.vrednost > other.vrednost
        b = [TAROK, SRCE, PIK, KARO, KRIZ]
        return b.index(self.barva) < b.index(other.barva)

    def __eq__(self, other):
        if isinstance(other, Karta):
            return self.barva==other.barva and self.vrednost==other.vrednost
        else:
            return NotImplemented
    
    def __hash__(self):
        if not self: return 0
        return 23*self.barva + self.vrednost
    
    def parse(self, s):
        if not (self.barva==-1 and self.vrednost==-1): raise Exception("Nekdo spreminja hash vrednost instance!")
        self.barva = stringVBarvo(s[:1])
        self.vrednost = int(s[1:])
        if self.barva < 0 or (self.barva==TAROK and (self.vrednost<1 or self.vrednost>22)) or (self.barva in [KARO,SRCE,KRIZ,PIK] and (self.vrednost<7 or self.vrednost>14)):
            raise Exception('Neobstojeca karta ' + s)

class TipIgre:
    def __init__(self, *args):
        if len(args) == 3:
            self.stZalozenihKart = args[0]
            self.solo = args[1]
            self.klicaniKralj = args[2]
        else:
            self.parse(args[0])
    
    def vrednost(self):
        return 90*int(self.solo) + 30*(4-self.stZalozenihKart)
    
    def __repr__(self):
        # primeri: S1K, N3X, N2P, ...
        return '%s%d%s' % ( {True:'S', False:'N'}[self.solo], self.stZalozenihKart, barvaVString(self.klicaniKralj))
    
    def __eq__(self, other):
        if isinstance(other, TipIgre):
            return self.stZalozenihKart==other.stZalozenihKart and self.solo==other.solo and self.klicaniKralj==other.klicaniKralj
        else:
            return NotImplemented
    
    def __cmp__(self,other):            # S1 > S2 > S3 > N1 > N2 > N3
        return self.vrednost() - other.vrednost()

    def __lt__(self,other):
            return self.vrednost() < other.vrednost()
    
    def parse(self, s):
        self.stZalozenihKart,self.solo,self.klicaniKralj = int(s[1]),s[0]=='S',stringVBarvo(s[2])
<commit_msg>Spemenil vrednosti kart na 3.<commit_after>import collections

TAROK, KARO, SRCE, KRIZ, PIK, NEZNANA = 0, 1, 2, 3, 4, -1

def barvaVString(barva):
    return {TAROK:'T', KARO:'K', SRCE:'S', KRIZ:'R', PIK:'P', NEZNANA: 'X'}[barva]

def stringVBarvo(s):
    return {'T':TAROK, 'K':KARO, 'S':SRCE, 'R':KRIZ, 'P':PIK, 'X':NEZNANA}.get(s,-2)

# vidi: Karta implementira __eq__ in __hash__ iz BARVE/VREDNOSTI, tko da se bodo dogajale grde stvari
#       ce spreminjas barvo/vrednost medtem ko je uporabljena npr. za key!
class Karta:
    def __init__(self, *args):
        if len(args) == 2:
            self.barva = args[0]
            self.vrednost = args[1]
        else:
            self.barva,self.vrednost = -1,-1
            self.parse(args[0])

    def copy(self):
        return Karta(self.barva, self.vrednost)
            
    def stTock(self):
        if self.barva != TAROK:
            return {11:4/3,12:7/3,13:10/3,14:13/3}.get(self.vrednost, 1/3)
        else:
            return 13/3 if self.vrednost in (1,21,22) else 1
    
    def __repr__(self):
        return '%s%d' % (barvaVString(self.barva),self.vrednost)

    def __lt__(self, other):
        if self.barva == other.barva:
            if self.barva == TAROK:
                return self.vrednost < other.vrednost
            else:
                return self.vrednost > other.vrednost
        b = [TAROK, SRCE, PIK, KARO, KRIZ]
        return b.index(self.barva) < b.index(other.barva)

    def __eq__(self, other):
        if isinstance(other, Karta):
            return self.barva==other.barva and self.vrednost==other.vrednost
        else:
            return NotImplemented
    
    def __hash__(self):
        if not self: return 0
        return 23*self.barva + self.vrednost
    
    def parse(self, s):
        if not (self.barva==-1 and self.vrednost==-1): raise Exception("Nekdo spreminja hash vrednost instance!")
        self.barva = stringVBarvo(s[:1])
        self.vrednost = int(s[1:])
        if self.barva < 0 or (self.barva==TAROK and (self.vrednost<1 or self.vrednost>22)) or (self.barva in [KARO,SRCE,KRIZ,PIK] and (self.vrednost<7 or self.vrednost>14)):
            raise Exception('Neobstojeca karta ' + s)

class TipIgre:
    def __init__(self, *args):
        if len(args) == 3:
            self.stZalozenihKart = args[0]
            self.solo = args[1]
            self.klicaniKralj = args[2]
        else:
            self.parse(args[0])
    
    def vrednost(self):
        return 30*int(self.solo) + 10*(4-self.stZalozenihKart)
    
    def __repr__(self):
        # primeri: S1K, N3X, N2P, ...
        return '%s%d%s' % ( {True:'S', False:'N'}[self.solo], self.stZalozenihKart, barvaVString(self.klicaniKralj))
    
    def __eq__(self, other):
        if isinstance(other, TipIgre):
            return self.stZalozenihKart==other.stZalozenihKart and self.solo==other.solo and self.klicaniKralj==other.klicaniKralj
        else:
            return NotImplemented
    
    def __cmp__(self,other):            # S1 > S2 > S3 > N1 > N2 > N3
        return self.vrednost() - other.vrednost()

    def __lt__(self,other):
            return self.vrednost() < other.vrednost()
    
    def parse(self, s):
        self.stZalozenihKart,self.solo,self.klicaniKralj = int(s[1]),s[0]=='S',stringVBarvo(s[2])

{'fraction_non_alphanumeric': 0.13809378806333739, 'fraction_numerical': 0.022990255785627283, 'mean_word_length': 2.341302136317396, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 19, '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': '2784620', 'n_tokens_mistral': 2585, 'n_tokens_neox': 2504, 'n_words': 518}