Ejemplo n.º 1
0
def getImageLayerCheckSum(image):
    zeroCount = 0
    oneCount = 0
    twoCount = 0
    for digit in image:
        if digit == "0":
            zeroCount += 1
        elif digit == "1":
            oneCount += 1
        elif digit == "2":
            twoCount += 1
    return zeroCount, oneCount, twoCount


assertEqual((1, 1, 1), getImageLayerCheckSum("789012"))
assertEqual((2, 2, 3), getImageLayerCheckSum("709012122"))


def getImageLayerWithFewestZero(imageData, imageSize):
    minimumZeroCount = imageSize
    layerCheckSum = 0
    for i in range(int(len(imageData) / imageSize)):
        zeroCount, oneCount, twoCount = getImageLayerCheckSum(
            imageData[imageSize * i:imageSize * (i + 1)])
        if zeroCount < minimumZeroCount:
            minimumZeroCount = zeroCount
            layerCheckSum = oneCount * twoCount
    return minimumZeroCount, layerCheckSum

def getImageLayerCheckSum(image):
    zeroCount = 0
    oneCount = 0
    twoCount = 0
    for digit in image:
        if digit == "0":
            zeroCount += 1
        elif digit == "1":
            oneCount += 1
        elif digit == "2":
            twoCount += 1
    return zeroCount, oneCount*twoCount


assertEqual((1, 1), getImageLayerCheckSum("789012"))
assertEqual((2, 6), getImageLayerCheckSum("709012122"))


def getImageLayerWithFewestZero(imageData, imageSize):
    minimumZeroCount = imageSize
    layerCheckSum = 0
    for i in range(int(len(imageData)/imageSize)):
        zeroCount, checkSum = getImageLayerCheckSum(imageData[imageSize*i:imageSize*(i+1)])
        if zeroCount < minimumZeroCount:
            minimumZeroCount = zeroCount
            layerCheckSum = checkSum
    return minimumZeroCount, layerCheckSum


assertEqual((0, 1), getImageLayerWithFewestZero("123456789012", 6))
Ejemplo n.º 3
0
        parentOrbitCount = getOrbitCount(orbitMap, orbitCountMap, parentSpaceObject)+1
        orbitCountMap.update({spaceObject: parentOrbitCount})
        return parentOrbitCount


def totalNumberOfOrbits(orbitMapString):
    orbitMap = {}
    for orbitInfo in orbitMapString.split(","):
        # print(orbitInfo)
        spaceObjects = orbitInfo.split(")")
        # print(spaceObjects)
        orbitMap.update({spaceObjects[1]: spaceObjects[0]})
    orbitCountMap = {}
    for spaceObject in orbitMap.keys():
        # print(f"Calculating for : {spaceObject} map : {orbitMap}")
        if not spaceObject in orbitCountMap.keys():
            orbitCount = getOrbitCount(orbitMap, orbitCountMap, spaceObject)
            # print(f"Calculating for : {spaceObject}=> {orbitCount}")
            orbitCountMap.update({spaceObject: orbitCount})
        # print(orbitCountMap)

    # print(orbitMap)
    # print(orbitCountMap)
    return sum(orbitCountMap.values())


assertEqual(42, totalNumberOfOrbits("COM)B,B)C,C)D,D)E,E)F,B)G,G)H,D)I,E)J,J)K,K)L"))

print(totalNumberOfOrbits("VHH)H4D,7Z7)2V2,9VL)WC5,D57)9QN,RXY)RGM,V5T)MBC,RQ1)LG8,SPC)B3F,TKR)W9Y,JCN)ZZB,PHT)7GD,GCD)TC7,15Y)DMX,XG2)TFF,TDY)GXF,3S7)G1J,KNK)BYQ,BS4)CQL,F2V)V32,7CL)QWL,Q83)YXK,QQ1)92P,MXL)BG9,7K7)L35,1TR)XL9,6TM)J59,DJR)J4T,M82)BMN,YHL)3F8,95G)HKS,DHT)3M4,K8Q)W54,XL9)M1S,5F8)FV8,BMN)PT7,HDX)9L6,KNG)2RT,RDS)C7T,YX5)195,SM6)23G,LS5)VTX,4W4)457,D5F)P9C,YJF)6XF,XBH)XFK,5P6)1TR,K8F)LHV,Q63)7LM,HWW)F6Y,4S4)WQK,YK6)67K,CYM)W46,9KJ)CKM,DXZ)PH9,S2G)KR9,B9B)DYP,WC5)RKV,NL9)N3C,513)HH8,VX7)DSQ,QH7)MVC,GV2)F6K,VYX)CLL,PDN)QPL,PGM)H3L,Y2M)DH9,DK4)QRV,6C2)KZS,BQZ)CG5,T79)6L4,CHV)TGK,QSK)H4K,K38)Y2M,1S8)6ZT,GYK)GN2,7YQ)P31,2RG)TQW,HH8)QJJ,887)Y7R,ZFL)LYL,GJH)NLP,3DB)GF2,PKG)JH4,PTW)6YH,FNR)Y92,9Q3)7YQ,LHT)ZW5,T17)DRN,GMX)R91,PMH)R8S,GN2)52Z,457)9VD,9XL)W4M,XV7)6GN,LG8)FXT,TFB)JMG,JZR)HDV,RG3)PKT,MG4)P5Y,HDN)KNG,WDK)CB4,NL6)887,FQQ)NLQ,P2X)81C,L2J)BBK,8KM)WW9,J7Z)P1Z,C52)JH1,YG4)NTX,LL6)YX5,3Q8)F98,MD8)3Q8,F6K)BGQ,3Q2)T1W,M2P)J7Z,38D)176,ZXQ)2YD,BT3)PC1,CWB)1Z9,DRX)SJD,M95)Z47,MQZ)37G,F6F)9VJ,1WS)M7K,WQ1)8C4,DMX)GC3,BSW)SF5,JSG)RG3,5TX)Z9P,NCX)X3G,QPL)JV3,1DD)D5S,ZM8)5K6,WBW)7JY,RVR)NCH,11L)LGF,QNP)CGY,WZ9)C2Z,WJG)FCR,VG9)FLR,RCT)PXM,SY2)FT6,PDH)63H,74B)VNM,4K2)919,BMW)2J6,T42)931,1G8)TNK,SYJ)WV9,97W)HG1,5K6)G89,VTB)XL3,1CK)7MN,19D)SRY,SYL)62P,BYQ)G9X,ZR3)HZQ,9CF)GVX,XVW)2CN,VZX)BZ6,WQK)34H,QCH)P49,KN6)VW3,G8T)7RH,2RR)5VJ,1KB)MHZ,4PQ)XBC,K1C)NB7,LGF)G9T,H3L)PNR,H4K)N3S,VNM)RVR,RXY)FVY,LL6)M5D,TK5)BPR,9R6)996,RC7)VWF,K2X)6QW,4VH)L7H,6RM)2NX,QZR)8FG,HX1)R5Z,RWL)DGX,KHX)RDQ,822)3FK,2TV)16M,QW4)7Z7,DZG)K5T,WHR)T7X,LB7)QDG,1JN)V55,Z27)XDQ,DMS)Q6C,9ZG)PZ2,DFV)F6F,SD1)8Y7,F3L)ZJ8,N86)YMP,SQX)QT3,9V5)FFW,X31)FKY,FKY)7SP,B3F)JKC,XGH)CN2,VML)8Y9,7K7)T7W,78F)92Q,BYF)QWC,DSQ)WFH,1P6)4VR,JV3)C77,6FB)GMX,XQ7)QQP,QHV)B2P,BS5)W7F,PXM)JTQ,PZG)JKS,PKX)61B,KJT)Q21,C3Y)9MJ,3X9)1PH,FV8)191,WP2)Y29,BDJ)G6V,4PT)NBL,FVY)PGH,6DH)LG4,NM4)335,84X)6WB,FG5)WXD,WW9)5T9,6HH)RC8,RKV)VYX,1QV)327,F26)H5Q,926)3QK,YKX)L7F,W7F)QB2,7FT)JRH,W2L)78F,LMS)68G,FG9)332,GWG)LF8,CDG)HRB,719)LW3,RX5)9YC,DRN)1CZ,4H9)XRS,RNR)D66,VWG)GSN,Q6C)7HR,34J)J8P,KRP)2KL,TT5)7GM,4JS)ZT4,R5S)JVN,TQW)4CG,9CP)HFC,F8S)VFR,143)MSK,MRM)PJD,7MN)RM8,BWL)B96,R7M)VMX,9PN)NZ6,B2N)1GQ,NCH)SG1,WSY)244,KDR)5GG,H3L)4S4,TGK)BMX,3FK)2RR,LW3)RDS,81T)47Y,S43)8WC,FHW)81D,3KY)M95,VMX)ZDP,VRQ)K4D,B2P)ZTW,367)8W1,ML8)TFB,XD5)Z5D,YHL)NNJ,KYC)3S4,KDR)5YG,5S3)6M2,QXW)3K9,67K)SM8,RHM)X5M,7SP)FDS,2RT)C6X,SGK)HHC,HL2)1QW,C77)TKR,D2F)8HX,SJD)9YT,TWT)X6L,Z8D)9MC,WFR)FBW,PQC)KY2,ZSC)VC3,WP6)TPQ,HKS)83C,KR9)6CD,YP5)J16,Y7R)KXM,X1K)71D,3GG)F7K,3H1)761,1GX)LB7,T99)HWW,YTG)JVQ,7XN)2S3,TP6)HX1,PJ1)8FH,MSK)4D9,F2V)6TM,GPG)HD8,ZJP)V8Q,Z3T)XKB,X25)CS5,H6N)X9F,WZZ)WBD,P3X)1GW,81D)K8L,H9Q)6W2,4HP)DHX,Y3K)NT5,FLR)B6M,4K2)SV5,JVN)XD5,6WP)KZH,MBC)X3D,3S3)MQP,KRJ)C2B,DB8)LLR,KZH)NJ8,X8D)3H1,C6X)MXL,4T1)999,BD1)8PY,HHK)S43,H4D)YT6,QH5)KRP,SRY)QCH,S5Z)B4W,87B)N51,G82)DNV,ZKV)DPP,GHL)PRJ,MYQ)G5R,1CZ)24L,6TS)BJ1,HRB)FJM,T3K)K8P,P9C)BS4,MTZ)B7R,NVB)6PS,Y3K)FP8,KWZ)771,999)2LL,J8P)RKY,6W2)BSB,WSY)MQZ,2GK)JYX,TTG)FT9,FKM)9WJ,JD1)RSH,CZ6)QP6,JFS)7T6,KZ9)KWH,V2J)BWL,XG3)L9Z,NGT)QTX,9L6)75P,BLK)P2V,9VD)JXZ,DPP)RV6,TC7)W7M,4LC)2BG,9ZL)TMT,TRW)CVN,XHJ)NL9,6PS)Q98,3BN)9DS,RV6)RX5,WWZ)J51,WW2)JZR,9MJ)X8J,5MK)XYD,BYR)H7Q,CVN)LDK,NZ6)8Z4,KKR)WN6,YX3)81T,GQ7)D35,K4D)XSH,ZT4)VWJ,GCQ)2D6,YBY)3LF,RDQ)ZDM,F7D)MTZ,H4D)FZJ,JR7)2KP,YQ8)H6H,C9X)7BK,81H)VP4,QQ1)3KY,HHC)P2X,CNJ)TCD,4ST)W4T,G5B)SYT,J92)J2P,MBB)N8W,HY5)XBR,5TS)B35,WV9)LG7,SN2)QNP,N5C)BJP,P1J)X81,JDR)PR6,NNJ)VX3,K8H)BSS,NHX)36R,BD2)HZT,YK6)8B8,D5Y)X7N,YV5)4JD,14L)W36,MZG)KNC,DMS)SGK,BZ6)MZP,WNG)6C1,DJL)GKQ,63W)2RL,MSP)C9X,Z12)WX8,75P)75F,T9Q)XNF,1LX)GS5,Z66)R6G,3FK)MRJ,ZD7)1P5,W36)X8L,KY2)VZX,667)H8H,CHV)TV1,TJ9)XQ7,BGQ)88G,NWG)Z8D,MVC)T7S,C9T)MNW,QR5)MZ3,YQ5)76Q,R5T)WMR,8MP)2SW,D66)KWZ,6GN)ZJV,CN5)WQ1,54L)XQG,G26)CM3,37T)9PN,JKS)49R,ZB9)KHC,X5M)BSW,NB7)QQF,8HX)HYJ,TTJ)SBX,G9X)VQV,67M)YPS,W54)DZ2,66K)5BW,D78)F96,SXM)PZG,FM2)VXB,VQV)GR7,FCR)WYD,T7W)C49,KJT)G26,2D6)JGB,5TN)LWV,YJW)TJ9,H5Q)671,F2X)ND7,VFR)1RP,B6D)SYJ,FBW)F3V,8Y9)Y3K,82B)KG7,8FN)LKP,LPS)3YY,JGF)RG9,H8L)PDV,JH1)3R6,1P5)B4P,S2G)ZX4,QQ9)FG5,3LF)3JY,1SZ)NG2,LSP)VQD,9WJ)Y4L,YCY)Z5C,J2S)6DP,6C6)4WK,JZR)3S3,H7Q)19N,GQJ)55P,YRF)JWB,HFT)F59,NX3)MBB,LLR)LWG,D7F)BYR,13Z)5Z2,VSD)6W3,Z1J)5TX,7D1)396,RR4)JDR,X64)P6Y,QWC)BH2,QT3)R95,QB2)LK2,L3M)866,Y7V)7CL,QRT)H19,NWW)SAN,6WW)75X,FHR)P8R,W4T)JHZ,G1J)XDG,G1K)3BN,QQF)1FB,JGT)L2J,4TF)LSP,XN3)4LC,RYH)F4C,PFQ)YT2,SQ9)YC3,CNV)DVP,C2Z)8V8,LCS)QVC,GF2)6LT,M1S)56W,47Y)SY2,V85)D7F,CM3)4T1,XZV)JD3,26V)5TQ,QBL)RSN,GV3)1MS,5BW)4MX,8Y7)PCQ,TQP)LS9,1KL)YYN,SSF)719,9VN)5KS,GJL)8X9,YMP)DHK,68G)XTD,761)7FT,T5F)2TP,W3G)67M,GSN)6MR,R33)363,H3Z)RYH,H1Y)JZP,BM1)RXY,8TL)QPY,RSH)MSP,LCQ)5K8,CHD)T2Q,JV3)MBW,NGT)TR3,G8B)SXW,T2Q)SSF,SF5)38D,J8P)8PJ,BKD)4B7,R7B)DZG,R84)YJT,5LZ)G5B,JHZ)J92,2SW)BM1,PT7)6HH,PC1)G8B,32C)NPM,V73)J9T,DGX)D78,4B7)FRL,QJX)QTF,PLV)ZDT,SG1)K2C,L16)H8L,LHV)XTS,1WF)6CP,QS6)J2S,H8H)H7L,HFC)Z58,WXF)WC1,1PH)VG5,D5S)ZNK,8S3)T17,Y2Z)HL2,48K)GY4,T7H)BKD,MHH)KZ9,Q4H)DRX,ZPD)TTG,B3F)H6N,6MR)KH5,ZGT)TRW,YPW)6RR,MZ3)LWT,PCQ)728,8PJ)KDR,FP3)VRZ,3LT)WFR,P6Y)2QT,BL5)C75,TTZ)DRY,YGP)DW5,7RH)6ZY,7RZ)557,J2P)GSQ,DB1)1GX,S5D)X3J,6RM)45B,JXZ)8WS,RGM)Y3P,2QT)B94,XKB)Z1J,3KK)SZF,LG7)ZGH,J51)QR5,T1R)B6D,TF9)RHM,2TV)1TS,W9Y)14L,CG5)C62,452)15Y,BG9)66K,V29)QSK,3NF)1SZ,3JS)5V2,TNK)QRT,YYN)RQ1,2TL)DB1,X8J)4KL,6DP)R53,Y3P)1JN,R7B)9KJ,4T8)158,73T)T2V,W7M)PYN,RDR)9Q3,VWF)7NH,MHZ)M57,2DD)QXW,M8V)FZ1,NLQ)T7H,6YH)PCF,VZD)ZJP,TLZ)LSG,YST)JCN,1GW)PQC,W46)RVW,1TS)8TT,58W)K8F,PDV)6C2,2LL)PDH,MFS)S2G,Q1Q)L8C,MQP)4T8,4Q7)VX7,D51)QSN,G5K)4TF,9VB)NPY,ZP7)Y8X,537)8J3,F1P)8JD,TV1)PTW,2YD)PNW,ZD2)NWG,15Y)QDY,BLW)FKM,V8H)GHL,7VY)BLK,WW2)L4J,3F8)98R,KGR)D1M,5RF)WPK,J16)YMR,R8W)WWZ,CXC)8HN,K1Z)F1F,5TQ)8CK,3S7)T5F,6VM)JWP,XCC)CNV,YXK)X75,Q6C)R7B,MNW)G39,5K8)2JS,WPB)ZD7,P49)8TL,H7L)CHJ,BCT)FX2,V32)3LT,3R6)B9B,CH2)KRJ,3KK)JSG,M35)Q48,C6C)NQN,HG4)BLS,K2C)P99,7MJ)MQY,TNX)16H,PZ2)F26,6CP)X8D,2GH)4M5,J6M)H3V,QL5)P1J,KXJ)JLJ,VPZ)D5F,4GX)KNK,CV9)KL9,K8L)76C,W9Y)X7L,ZQK)13Z,Z5C)HXM,X3J)T3B,B75)BR6,189)PTR,RG9)T6C,MD8)4ST,D35)GZZ,Z9P)LWW,XL3)W3G,QXW)3RZ,SZF)1TF,ZTW)63W,37G)WXT,XP6)YTG,MGZ)3D6,LG1)XBH,XPW)5F5,ZDM)G8N,WMR)P3G,KWH)HQW,CSH)R7M,919)6TS,9YT)BYF,XYQ)HVX,41B)TXP,HLQ)1G8,PBK)B64,4FC)DFV,X15)Q4H,Q98)CBH,61B)HX4,JLJ)D51,NB7)4HG,F18)CN5,16M)1BN,VRC)FL6,DK3)6VM,TMT)H1Y,KZN)XFC,CJ1)CH2,B35)PKX,73R)PGM,D5F)423,5LK)G8T,6WB)M9J,H2P)C7W,H3V)QLN,YZ6)KKR,PSN)ZYM,F6K)CTK,TDY)QD5,JRH)5TS,NPM)JC1,28L)QW4,HZT)87B,D1M)CZ6,8C4)MD8,8PG)1LX,JTZ)T7B,JD3)SMC,T2V)TW7,KGF)K8Q,L91)ZRN,Z5D)2N3,KS7)SD1,512)D5C,W29)YHL,S65)HS9,XBC)9T2,C7T)GWG,C49)4FC,RLW)YQ5,Z58)Z5B,VLS)MK1,R1X)3MM,2WP)KCY,SN3)JP1,JVQ)HNP,QLN)4K2,5F5)7FN,V8Q)H2P,4S5)ML8,6C6)34J,JKC)V29,QRV)ZHP,BG1)P65,51Q)8PG,CLL)VHH,HG1)LS3,K8F)KR2,Y7B)W29,JR9)D1L,ZZB)ZLL,95W)9XX,R53)S98,BRC)C6C,MKH)QQQ,MC9)WNG,BTF)R1X,C7W)R84,KLC)KFF,L9Z)DFJ,C62)Q9J,GR7)86R,VKB)PMH,RM8)TP6,TTB)SJP,G5K)VD1,PJB)K2X,XV8)RNR,5YT)TT5,J32)5TN,YJT)FNR,MKC)95W,R82)WW2,C96)FRC,Z19)WBW,PNR)N86,DYQ)KDX,FZ1)RR4,363)S38,5Z2)V73,NSZ)X97,9DS)5PL,D5S)L16,LYL)73X,BSS)GML,L35)JGL,G8N)SQ9,GJH)189,BW5)B75,8J3)5G3,RC8)W2L,5G3)TNX,K8P)SN2,3S4)PT5,XFC)QVY,8TP)P78,VYF)JK4,6YV)LGY,GKQ)NM4,WXD)RC7,HR4)PFQ,JYY)5NX,JH4)C96,R2Q)5C6,N7H)RNW,55P)D5Y,GC1)1KL,4YX)382,V63)XZV,XSK)5YL,TQT)12Y,Q9J)9R6,X97)4CY,FDG)8S4,NM4)TGG,244)54L,VLH)M82,VP9)537,JTQ)YWW,19N)N3J,QVC)5CG,2LZ)2SK,98R)FP3,FL6)VNK,PTW)81H,KFF)8MP,N9T)XN3,FX2)82Q,8W8)951,KYC)KLN,PFQ)JBS,N3S)SM6,QPT)KGR,YPS)F9M,PT5)GKY,RVW)9M2,2TP)JLP,MRJ)XG2,F96)2LZ,2JS)LS5,8CK)48K,ZTW)DJR,BSD)5NF,LRY)BT5,P31)7SK,2HT)B6V,5PL)BD1,5G1)HBX,JZM)FWT,KG7)ZSC,WYD)MGZ,F6J)KL5,HDV)NSZ,LX6)B7J,BMX)VTB,GSQ)PBK,71D)Z3T,7JY)NHX,9XX)37T,8S4)19D,RC2)HFT,ZYM)F1P,B7J)DG2,78R)PHV,P8R)BH1,RGM)YJW,WPB)XQ2,7GD)WRW,NGQ)B2N,SKS)R5T,BT5)9KC,JFS)MKC,M3J)JN1,QTX)S9Q,YC3)3VJ,Y3M)JZM,TCK)RWF,3QK)ZB9,WFH)CXC,RYH)Y3Q,NNB)G8H,SV5)SL2,JBS)T9Q,SX9)YK6,MZP)MG4,4CG)3JS,XKP)MC9,DVP)SYL,BBK)N2F,D9R)KD2,CGY)S8Z,VYZ)7CG,SJP)9VN,ZJ8)3NF,68G)2X3,B7J)LHT,TFP)YZ6,DZ2)5MK,RR4)23R,DF6)QFS,3NN)GPG,LWG)7NV,YQQ)VSD,VXB)Q29,Q29)QLF,N3J)KGF,G89)YRF,NCR)VYF,BPJ)NGX,L7H)R2Q,N5J)1DD,PNP)KN6,SSF)2HT,2KP)4W4,X8J)GV3,TFF)1NV,7T6)GC1,F2Y)K38,SSD)2GK,QTD)YLN,557)CSH,216)2DD,SBV)NW3,83C)QQ1,52Z)SSD,H1Y)DK3,RSN)73T,YT6)JFS,HCB)8TP,QDG)BXM,4HG)H3Z,SYT)HYH,D5C)PNV,5TM)9V5,X8D)WSY,ZNK)4JS,85R)6FB,JLP)HF9,PTX)26V,4M5)DB8,9QN)7MJ,GS5)6DH,C8M)ZR3,24L)7K7,SKS)LKF,KH5)VRQ,R5Z)NVR,1Z9)HR6,LKF)1D6,K38)VPZ,8JD)W1M,GVX)YV5,T5H)KTP,T3B)41B,SXW)TS7,XTS)SN3,NRX)5G1,1W2)HDX,9VD)VRC,B9D)XGH,V55)QJX,VRZ)CDC,QFS)X64,RL4)TMP,J2P)Y7V,671)GYK,B7R)LX6,M5D)J32,RVY)7RZ,DRY)1W2,YWF)XVH,KXM)F18,J6M)Y3M,7PH)Q1Q,5WS)Z38,VWG)ZXQ,H4K)HR4,BPR)PDN,728)NX5,NBL)ZM8,CB4)MGJ,V9G)PLV,SMC)555,BH2)W84,23R)Q83,XJ1)HDW,B72)YQQ,BTR)12J,VHX)3GG,ZX4)SBV,B6M)CR2,BMS)D4C,TW7)9TH,PDW)RDR,5NF)GJH,HH8)51Q,332)1QV,K2L)HQR,DRY)G82,NLP)M3J,Z2G)72V,QNH)B9D,HP3)3NN,9ZL)G5K,F6Y)2GH,4VR)DHT,CD7)G3W,QCH)QHV,LGF)3Z6,23G)3GY,7NH)N5C,LBC)SX9,S38)6WW,C2B)2WP,RPS)V85,P1Z)TWT,WRW)WHR,45B)TTB,N2F)2RG,2SQ)NPV,HZQ)VKW,ZHP)SHF,8WC)VZD,PYN)HLL,82Q)KXJ,X8L)3JC,5MK)PNP,VWJ)Z66,996)C52,SBX)MZG,6H9)YPW,LS9)HDN,NPV)QNH,X7N)BMS,BLK)DF6,GXF)ZKV,XNT)XP6,KLN)VDL,TTB)TF9,WC1)CD7,5HL)Z19,F1F)6H9,X9F)VKB,ZW5)YWF,MBW)XYQ,8WS)JYY,BR6)KS7,XFK)M2P,XQG)F2X,X81)7VY,FHZ)VBG,7CG)LBC,YBT)JW6,FRL)82B,VS3)7D1,S8Z)SXM,TPQ)3NV,B64)R5S,2BG)RVY,7SK)XJ1,771)C9T,ZDT)CQ3,C62)C4Z,RT8)WP2,B9Z)NVB,9QN)QZR,TGG)5X6,ZRN)3GN,4D9)2DJ,XNF)K5H,6XF)VML,G2V)5LZ,WYD)74B,P5Y)T42,8FG)DMS,PNL)8W8,435)5F8,3RZ)1S8,KLC)V2J,PYN)5HL,5V2)32C,1QW)KX1,1D6)78R,76C)8WW,4WK)M13,CQL)XHJ,297)2SQ,F3V)9DC,T2Q)SDL,1BN)SBP,TZB)9QR,W4V)T1T,81C)VG9,J9T)49L,27L)NGQ,JP1)3K5,DHK)MHH,M13)4VH,XYH)4GX,7Q3)GCQ,423)PJ1,1TF)F6J,NTX)LJJ,RNW)FDG,951)W1W,HQW)FG9,6M2)F1B,34Y)3SR,9MC)XV7,3YH)JZ1,M9J)ST7,LF8)PJB,SHF)ZHS,9QR)KZN,X1K)35X,JYX)BG1,QVY)G2N,FJM)LMS,DHX)TZB,TCD)M8V,WXT)T3K,C8V)8FN,CS5)ZPD,191)L3M,3MM)HLQ,KZS)K1C,FZJ)BVC,8WH)QDC,VC3)TK5,35X)C8M,G8H)Z5P,3WZ)7Q3,QSL)XSK,XRS)DK4,JZP)DST,L7F)84X,K5T)GQ7,NW4)ZQK,3GY)BLJ,2DB)NB9,H19)3DB,M57)WHG,LSG)926,SM6)MQH,Y4L)KHX,VTX)BQZ,2X3)Y2R,51Q)BPJ,2N2)3KK,ND7)VHX,NX5)5RF,ZLL)G2V,H4V)MKH,73T)435,LGD)W4V,2KL)WPB,CDM)NCX,513)VLS,JW6)BTR,KHC)8R5,YN2)NCR,62P)667,J92)3X9,8FH)HHK,KR2)SZX,G8B)VP9,73X)QSQ,1RP)R2H,7MJ)7W3,QWL)4YX,WL2)5MD,5L8)18G,HBX)NSF,Z73)4P1,9HZ)YZV,42L)YKX,T5F)KJT,7RN)QS6,7HS)BL5,7HR)7XN,Y2R)SPC,ZM7)G1K,MQH)X1K,KDX)YBT,KL9)3BZ,Y3Q)9ZL,DST)D9R,TS7)YOU,LWV)RLW,GML)367,2VB)V34,WN6)6RM,195)VWQ,23C)9VB,FFW)R33,S98)B9Z,B4P)YG4,QSK)BS5,XBR)3C2,49R)DLH,Z38)LRY,8Y7)4Q7,5VJ)CHD,HVX)7HS,LGY)SQX,3K5)MYQ,T3B)N5J,R95)69G,2CN)WP6,VBG)TCK,V34)NLB,39B)QBL,YWW)27L,SBP)YJF,PKT)PXR,2GV)T5H,4KL)XYH,BKV)FHR,VNK)H9Q,3GN)2GV,JN1)GQJ,J59)BMY,QL5)CHV,3NV)LPS,FJM)GM8,PTR)6WP,DF1)58W,7LM)XG3,DJR)CLY,PJD)S73,12J)LCQ,P2V)RQC,XTD)F8S,VZX)CNJ,L9W)CNL,XDG)QPT,86R)6YV,FDS)RC2,HDW)JGT,ZDP)CDM,LK2)YX3,HR6)T79,9YC)4Y7,X7L)V63,Z5P)B72,NPY)TQP,W4M)TNP,VMR)GJL,HYJ)NWW,ZJV)HCB,76Q)77Q,N89)Y2Z,5NX)78B,SRJ)Q28,TR3)4HP,T79)5L8,JBS)BKV,3SR)C8V,ZT8)T99,NQN)8QP,7R8)NL6,CSH)73R,FDG)JSS,435)LCS,RKY)PKG,HYH)GCD,T1T)FQQ,ZNK)K8H,KL5)BLW,TXP)K1Z,NSF)CV9,12Y)CDG,78B)YN2,HF9)XCC,NGX)6C6,YX5)LGD,XYD)T2P,RK4)YCY,CBH)FM2,BVC)2TL,LHT)FHZ,3YY)2TV,CHJ)DF1,VX3)1P6,8R5)FVB,18G)7R8,CLY)5P6,BR4)NW4,TNK)512,SDL)V5T,JCN)DJL,C75)DK1,WWR)BW5,GM8)KYC,8B8)QL5,FVB)143,6C1)S65,Q21)BTF,VW3)MRM,3S3)N89,HHK)QQ9,3BZ)S5D,6RR)2DB,452)42L,8TT)3WZ,7GM)JR9,N51)MQC,T2P)CWB,HQR)WZ9,X75)WL2,9T2)N7H,T1W)TQT,5TX)X15,PR6)ZGT,36R)VMR,X3D)X31,PNV)5S3,92Q)34Y,X74)3S7,6G3)P3X,858)T89,H8H)XKP,DK1)MFS,NJ8)LVJ,5X6)216,TNP)2N2,VD1)WDK,DG2)Q63,QQP)95G,VZ2)Z12,Z5B)RL4,4MX)F2Y,S9Q)NX3,DY8)YST,3VJ)RT8,MGZ)BCT,MQY)QVJ,X3G)JW1,8QP)858,PGH)BD2,GXF)K2L,JK4)95C,6ZY)VS3,P99)BR4,1DD)PDW,BLS)8S3,2GH)SRJ,DYP)581,LDK)JR7,VWQ)J6M,4JD)6P1,CN2)7RN,X5M)F2V,N8W)Y7B,B6V)QH5,JWP)F3L,H6H)CDV,HD8)XV8,BJ1)PSN,Q28)PBC,437)BRC,NNB)T1R,HLL)Z2G,F5S)TTZ,JSS)TLZ,YQ5)3SC,92P)HG4,HLQ)TTJ,49L)4PT,PQC)CJ1,BJ1)ZT8,G39)S5Z,F7K)73H,KX1)QSL,QD5)L91,HXM)BMW,QTF)YBY,V5T)Z73,3D6)WWR,8TT)1KB,VG5)4PQ,95C)297,K5H)V9G,BMY)QTD,JC1)RPS,PH9)X25,QPY)BT3,YLN)YQ8,YZV)NRX,P65)3DL,LK2)F5S,DLH)KLC,COM)XVW,QP6)5TM,WHG)DY8,Y29)DYQ,2RL)PHT,MZ3)SKS,2V2)YP5,CDC)5WS,QVJ)JGF,X6L)D2F,LJJ)7PH,T7X)TFP,FXT)LG1,VKW)3YH,34H)8WH,1NV)QP2,JWB)513,8HN)BSD,QDY)9CF,GY4)2VB,931)Z27,B96)9XL,CYM)437,382)WXF,23C)RCT,FHZ)85R,56W)Q3C,VW1)R82,72V)C3Y,VRZ)V3G,FRC)QH7,LKP)LL6,F4C)H4V,WPK)VWG,7NV)VWW,YMR)1WF,PCF)NNB,FP8)VYZ,DNV)TDY,ZFL)F7D,6CD)ZD2,CKM)8KM,P78)GV2,QJJ)28L,PDH)3Q2,G5R)BDJ,CTK)6G3,Z5D)9ZG,C4Z)5LK,LS3)ZP7,QLF)23C,1FB)452,SZX)1CK,NW3)V8H,Q21)XNT,G2Y)5YT,MK1)RK4,DH9)JD1,C4Z)N9T,7BK)2KF,PXR)WZZ,DW5)Q43,6P1)XPW,T7B)FHW,X3D)PTX,CNL)1WS,QDC)ZFL,335)ZM7,557)NGT,YT2)CYM,MQC)PNL,SN3)WJG,Y7B)53N,RWF)L9W,5YG)G2Y,6W3)822,77Q)DXZ,6L4)HP3,S9Q)9HZ,3Z6)39B,VDL)JTZ,158)M35,GZZ)11L,BVC)RWL,88G)R8W,P3G)HY5,8X9)X74,5CG)9CP,6ZT)4S5,F98)97W,VQD)VW1,KNC)YGP,CWB)4H9,2HT)D57,N3C)9VL,FWT)VZ2,QP6)PFX,LVJ)VLH"))

Ejemplo n.º 4
0
        # print(f"After {i} steps:")
        # for moon in moons:
        #     print(moon)

    totalEnergy = 0
    for moon in moons:
        # print(moon.energy())
        totalEnergy += moon.energy()

    return totalEnergy


assertEqual(
    179,
    calculateMoonEnergyAfterTime(10, [
        Moon((-1, 0, 2)),
        Moon((2, -10, -7)),
        Moon((4, -8, 8)),
        Moon((3, 5, -1))
    ]))

assertEqual(
    1940,
    calculateMoonEnergyAfterTime(100, [
        Moon((-8, -10, 0)),
        Moon((5, 5, 10)),
        Moon((2, -7, 3)),
        Moon((9, -8, -3))
    ]))

print(
    calculateMoonEnergyAfterTime(1000, [
Ejemplo n.º 5
0
    lastAmplifierResult = 0
    while True:
        for amplifier in amplifierList:
            result = amplifier.runIntComputerForOutputForGiven(nextInput)
            if result == "HLT":
                break
            nextInput = result
        if result == "HLT":
            break
        lastAmplifierResult = result
    return lastAmplifierResult


assertEqual(
    139629729,
    runAllAmplifierInFeedBackLoop([
        3, 26, 1001, 26, -4, 26, 3, 27, 1002, 27, 2, 27, 1, 27, 26, 27, 4, 27,
        1001, 28, -1, 28, 1005, 28, 6, 99, 0, 0, 5
    ], (9, 8, 7, 6, 5)))


def maximumAmplifierOutputWithFeedbackLoop(amplifierProgram):
    maximumOutput = 0
    maximumOutputPhaseSettings = []
    for phaseSettings in generateAmplifierPhaseSettings(5, 10):
        outPut = runAllAmplifierInFeedBackLoop(amplifierProgram, phaseSettings)
        if outPut > maximumOutput:
            maximumOutput = outPut
            maximumOutputPhaseSettings = phaseSettings
    return maximumOutput, maximumOutputPhaseSettings

Ejemplo n.º 6
0
                            sourceName, 0)
                    # print(f"newFormula : {newFormula}")
            else:
                newFormula[
                    sourceProduct] = formula[sourceProduct] + newFormula.get(
                        sourceProduct, 0)
            # print(newFormula)
        formula = newFormula
        if substitutionCompleted:
            break
    return formula


assertEqual(
    31,
    calculateNumberOfOreRequired([
        "10 ORE => 10 A", "1 ORE => 1 B", "7 A, 1 B => 1 C", "7 A, 1 C => 1 D",
        "7 A, 1 D => 1 E", "7 A, 1 E => 1 FUEL"
    ]))

assertEqual(
    165,
    calculateNumberOfOreRequired([
        "9 ORE => 2 A",
        "8 ORE => 3 B",
        "7 ORE => 5 C",
        "3 A, 4 B => 1 AB",
        "5 B, 7 C => 1 BC",
        "4 C, 1 A => 1 CA",
        "2 AB, 3 BC, 4 CA => 1 FUEL",
    ]))
Ejemplo n.º 7
0
    return nextInput


def maximumAmplifierOutput(computerProgram):
    maximumOutput = 0
    maximumOutputPhaseSettings = []
    for phaseSettings in generateAmplifierPhaseSettings(0, 5):
        outPut = runAllAmplifierInSeries(computerProgram, phaseSettings)
        if outPut > maximumOutput:
            maximumOutput = outPut
            maximumOutputPhaseSettings = phaseSettings
    return maximumOutput, maximumOutputPhaseSettings


assertEqual(
    (43210, (4, 3, 2, 1, 0)),
    maximumAmplifierOutput(
        [3, 15, 3, 16, 1002, 16, 10, 16, 1, 16, 15, 15, 4, 15, 99, 0, 0]))
assertEqual((54321, (0, 1, 2, 3, 4)),
            maximumAmplifierOutput([
                3, 23, 3, 24, 1002, 24, 10, 24, 1002, 23, -1, 23, 101, 5, 23,
                23, 1, 24, 23, 23, 4, 23, 99, 0, 0
            ]))
assertEqual(
    (65210, (1, 0, 4, 3, 2)),
    maximumAmplifierOutput([
        3, 31, 3, 32, 1002, 32, 10, 32, 1001, 31, -2, 31, 1007, 31, 0, 33,
        1002, 33, 7, 33, 1, 33, 31, 31, 1, 32, 31, 31, 4, 31, 99, 0, 0, 0
    ]))

print(
    maximumAmplifierOutput([
                    # print(f"output>>{[(direction, x, y), printedPanels[(x, y)], output]}")
                    if output == 0:
                        direction, x, y = turnLeft[direction](x, y)
                    else:
                        direction, x, y = turnRight[direction](x, y)
            elif opCode in self.instructionMap.keys():
                self.opcodeIndex = self.instructionMap[opCode]()


turnLeft = {
    "^": lambda x, y: ("<", x-1, y),
    "<": lambda x, y: ("v", x, y+1),
    "v": lambda x, y: (">", x+1, y),
    ">": lambda x, y: ("^", x, y-1),
}
assertEqual(("<", 0, 1), turnLeft["^"](1, 1))
assertEqual(("v", 1, 2), turnLeft["<"](1, 1))
assertEqual((">", 2, 1), turnLeft["v"](1, 1))
assertEqual(("^", 1, 0), turnLeft[">"](1, 1))

turnRight = {
    "^": lambda x, y: (">", x+1, y),
    "<": lambda x, y: ("^", x, y-1),
    ">": lambda x, y: ("v", x, y+1),
    "v": lambda x, y: ("<", x-1, y),
}

assertEqual((">", 2, 1), turnRight["^"](1, 1))
assertEqual(("^", 1, 0), turnRight["<"](1, 1))
assertEqual(("v", 1, 2), turnRight[">"](1, 1))
assertEqual(("<", 0, 1), turnRight["v"](1, 1))
from Common import assertEqual
import math


def calculateVisibilityAngle(astroidA, astroidB):
    ax, ay = astroidA
    bx, by = astroidB
    degree = math.degrees(math.atan2((bx - ax), (ay - by)))
    if degree < 0:
        degree += 360
    return degree


assertEqual(0, calculateVisibilityAngle((10, 10), (10, 0)))
assertEqual(90, calculateVisibilityAngle((10, 10), (20, 10)))
assertEqual(180, calculateVisibilityAngle((10, 10), (10, 20)))
assertEqual(270, calculateVisibilityAngle((10, 10), (0, 10)))


def distanseSqr(pointA, pointB):
    ax, ay = pointA
    bx, by = pointB
    return (ax - bx)**2 + (ay - by)**2


def getAstroidOrderbyVisibilityAngles(coordinate, astroidCoordinates):
    visibilityAngles = {}
    for astroidCoordinate in astroidCoordinates:
        if astroidCoordinate != coordinate:
            angle = calculateVisibilityAngle(coordinate, astroidCoordinate)
            if angle in visibilityAngles.keys():
Ejemplo n.º 10
0
        spaceObjects = orbitInfo.split(")")
        # print(spaceObjects)
        orbitMap.update({spaceObjects[1]: spaceObjects[0]})
    youToCOM = buildPathToCOM(orbitMap, "YOU", [])
    sanToCOM = buildPathToCOM(orbitMap, "SAN", [])
    youToCOM.reverse()
    sanToCOM.reverse()
    # print(youToCOM)
    # print(sanToCOM)
    maxCount = min(len(youToCOM), len(sanToCOM))
    for index in range(maxCount):
        if (youToCOM[0] == sanToCOM[0]):
            youToCOM.pop(0)
            sanToCOM.pop(0)
        else:
            break
    # print(youToCOM)
    # print(sanToCOM)
    return len(youToCOM) + len(sanToCOM)


assertEqual(
    4,
    totalNumberOfOrbitsTransfer(
        "COM)B,B)C,C)D,D)E,E)F,B)G,G)H,D)I,E)J,J)K,K)L,K)YOU,I)SAN"))

print(
    totalNumberOfOrbitsTransfer(
        "VHH)H4D,7Z7)2V2,9VL)WC5,D57)9QN,RXY)RGM,V5T)MBC,RQ1)LG8,SPC)B3F,TKR)W9Y,JCN)ZZB,PHT)7GD,GCD)TC7,15Y)DMX,XG2)TFF,TDY)GXF,3S7)G1J,KNK)BYQ,BS4)CQL,F2V)V32,7CL)QWL,Q83)YXK,QQ1)92P,MXL)BG9,7K7)L35,1TR)XL9,6TM)J59,DJR)J4T,M82)BMN,YHL)3F8,95G)HKS,DHT)3M4,K8Q)W54,XL9)M1S,5F8)FV8,BMN)PT7,HDX)9L6,KNG)2RT,RDS)C7T,YX5)195,SM6)23G,LS5)VTX,4W4)457,D5F)P9C,YJF)6XF,XBH)XFK,5P6)1TR,K8F)LHV,Q63)7LM,HWW)F6Y,4S4)WQK,YK6)67K,CYM)W46,9KJ)CKM,DXZ)PH9,S2G)KR9,B9B)DYP,WC5)RKV,NL9)N3C,513)HH8,VX7)DSQ,QH7)MVC,GV2)F6K,VYX)CLL,PDN)QPL,PGM)H3L,Y2M)DH9,DK4)QRV,6C2)KZS,BQZ)CG5,T79)6L4,CHV)TGK,QSK)H4K,K38)Y2M,1S8)6ZT,GYK)GN2,7YQ)P31,2RG)TQW,HH8)QJJ,887)Y7R,ZFL)LYL,GJH)NLP,3DB)GF2,PKG)JH4,PTW)6YH,FNR)Y92,9Q3)7YQ,LHT)ZW5,T17)DRN,GMX)R91,PMH)R8S,GN2)52Z,457)9VD,9XL)W4M,XV7)6GN,LG8)FXT,TFB)JMG,JZR)HDV,RG3)PKT,MG4)P5Y,HDN)KNG,WDK)CB4,NL6)887,FQQ)NLQ,P2X)81C,L2J)BBK,8KM)WW9,J7Z)P1Z,C52)JH1,YG4)NTX,LL6)YX5,3Q8)F98,MD8)3Q8,F6K)BGQ,3Q2)T1W,M2P)J7Z,38D)176,ZXQ)2YD,BT3)PC1,CWB)1Z9,DRX)SJD,M95)Z47,MQZ)37G,F6F)9VJ,1WS)M7K,WQ1)8C4,DMX)GC3,BSW)SF5,JSG)RG3,5TX)Z9P,NCX)X3G,QPL)JV3,1DD)D5S,ZM8)5K6,WBW)7JY,RVR)NCH,11L)LGF,QNP)CGY,WZ9)C2Z,WJG)FCR,VG9)FLR,RCT)PXM,SY2)FT6,PDH)63H,74B)VNM,4K2)919,BMW)2J6,T42)931,1G8)TNK,SYJ)WV9,97W)HG1,5K6)G89,VTB)XL3,1CK)7MN,19D)SRY,SYL)62P,BYQ)G9X,ZR3)HZQ,9CF)GVX,XVW)2CN,VZX)BZ6,WQK)34H,QCH)P49,KN6)VW3,G8T)7RH,2RR)5VJ,1KB)MHZ,4PQ)XBC,K1C)NB7,LGF)G9T,H3L)PNR,H4K)N3S,VNM)RVR,RXY)FVY,LL6)M5D,TK5)BPR,9R6)996,RC7)VWF,K2X)6QW,4VH)L7H,6RM)2NX,QZR)8FG,HX1)R5Z,RWL)DGX,KHX)RDQ,822)3FK,2TV)16M,QW4)7Z7,DZG)K5T,WHR)T7X,LB7)QDG,1JN)V55,Z27)XDQ,DMS)Q6C,9ZG)PZ2,DFV)F6F,SD1)8Y7,F3L)ZJ8,N86)YMP,SQX)QT3,9V5)FFW,X31)FKY,FKY)7SP,B3F)JKC,XGH)CN2,VML)8Y9,7K7)T7W,78F)92Q,BYF)QWC,DSQ)WFH,1P6)4VR,JV3)C77,6FB)GMX,XQ7)QQP,QHV)B2P,BS5)W7F,PXM)JTQ,PZG)JKS,PKX)61B,KJT)Q21,C3Y)9MJ,3X9)1PH,FV8)191,WP2)Y29,BDJ)G6V,4PT)NBL,FVY)PGH,6DH)LG4,NM4)335,84X)6WB,FG5)WXD,WW9)5T9,6HH)RC8,RKV)VYX,1QV)327,F26)H5Q,926)3QK,YKX)L7F,W7F)QB2,7FT)JRH,W2L)78F,LMS)68G,FG9)332,GWG)LF8,CDG)HRB,719)LW3,RX5)9YC,DRN)1CZ,4H9)XRS,RNR)D66,VWG)GSN,Q6C)7HR,34J)J8P,KRP)2KL,TT5)7GM,4JS)ZT4,R5S)JVN,TQW)4CG,9CP)HFC,F8S)VFR,143)MSK,MRM)PJD,7MN)RM8,BWL)B96,R7M)VMX,9PN)NZ6,B2N)1GQ,NCH)SG1,WSY)244,KDR)5GG,H3L)4S4,TGK)BMX,3FK)2RR,LW3)RDS,81T)47Y,S43)8WC,FHW)81D,3KY)M95,VMX)ZDP,VRQ)K4D,B2P)ZTW,367)8W1,ML8)TFB,XD5)Z5D,YHL)NNJ,KYC)3S4,KDR)5YG,5S3)6M2,QXW)3K9,67K)SM8,RHM)X5M,7SP)FDS,2RT)C6X,SGK)HHC,HL2)1QW,C77)TKR,D2F)8HX,SJD)9YT,TWT)X6L,Z8D)9MC,WFR)FBW,PQC)KY2,ZSC)VC3,WP6)TPQ,HKS)83C,KR9)6CD,YP5)J16,Y7R)KXM,X1K)71D,3GG)F7K,3H1)761,1GX)LB7,T99)HWW,YTG)JVQ,7XN)2S3,TP6)HX1,PJ1)8FH,MSK)4D9,F2V)6TM,GPG)HD8,ZJP)V8Q,Z3T)XKB,X25)CS5,H6N)X9F,WZZ)WBD,P3X)1GW,81D)K8L,H9Q)6W2,4HP)DHX,Y3K)NT5,FLR)B6M,4K2)SV5,JVN)XD5,6WP)KZH,MBC)X3D,3S3)MQP,KRJ)C2B,DB8)LLR,KZH)NJ8,X8D)3H1,C6X)MXL,4T1)999,BD1)8PY,HHK)S43,H4D)YT6,QH5)KRP,SRY)QCH,S5Z)B4W,87B)N51,G82)DNV,ZKV)DPP,GHL)PRJ,MYQ)G5R,1CZ)24L,6TS)BJ1,HRB)FJM,T3K)K8P,P9C)BS4,MTZ)B7R,NVB)6PS,Y3K)FP8,KWZ)771,999)2LL,J8P)RKY,6W2)BSB,WSY)MQZ,2GK)JYX,TTG)FT9,FKM)9WJ,JD1)RSH,CZ6)QP6,JFS)7T6,KZ9)KWH,V2J)BWL,XG3)L9Z,NGT)QTX,9L6)75P,BLK)P2V,9VD)JXZ,DPP)RV6,TC7)W7M,4LC)2BG,9ZL)TMT,TRW)CVN,XHJ)NL9,6PS)Q98,3BN)9DS,RV6)RX5,WWZ)J51,WW2)JZR,9MJ)X8J,5MK)XYD,BYR)H7Q,CVN)LDK,NZ6)8Z4,KKR)WN6,YX3)81T,GQ7)D35,K4D)XSH,ZT4)VWJ,GCQ)2D6,YBY)3LF,RDQ)ZDM,F7D)MTZ,H4D)FZJ,JR7)2KP,YQ8)H6H,C9X)7BK,81H)VP4,QQ1)3KY,HHC)P2X,CNJ)TCD,4ST)W4T,G5B)SYT,J92)J2P,MBB)N8W,HY5)XBR,5TS)B35,WV9)LG7,SN2)QNP,N5C)BJP,P1J)X81,JDR)PR6,NNJ)VX3,K8H)BSS,NHX)36R,BD2)HZT,YK6)8B8,D5Y)X7N,YV5)4JD,14L)W36,MZG)KNC,DMS)SGK,BZ6)MZP,WNG)6C1,DJL)GKQ,63W)2RL,MSP)C9X,Z12)WX8,75P)75F,T9Q)XNF,1LX)GS5,Z66)R6G,3FK)MRJ,ZD7)1P5,W36)X8L,KY2)VZX,667)H8H,CHV)TV1,TJ9)XQ7,BGQ)88G,NWG)Z8D,MVC)T7S,C9T)MNW,QR5)MZ3,YQ5)76Q,R5T)WMR,8MP)2SW,D66)KWZ,6GN)ZJV,CN5)WQ1,54L)XQG,G26)CM3,37T)9PN,JKS)49R,ZB9)KHC,X5M)BSW,NB7)QQF,8HX)HYJ,TTJ)SBX,G9X)VQV,67M)YPS,W54)DZ2,66K)5BW,D78)F96,SXM)PZG,FM2)VXB,VQV)GR7,FCR)WYD,T7W)C49,KJT)G26,2D6)JGB,5TN)LWV,YJW)TJ9,H5Q)671,F2X)ND7,VFR)1RP,B6D)SYJ,FBW)F3V,8Y9)Y3K,82B)KG7,8FN)LKP,LPS)3YY,JGF)RG9,H8L)PDV,JH1)3R6,1P5)B4P,S2G)ZX4,QQ9)FG5,3LF)3JY,1SZ)NG2,LSP)VQD,9WJ)Y4L,YCY)Z5C,J2S)6DP,6C6)4WK,JZR)3S3,H7Q)19N,GQJ)55P,YRF)JWB,HFT)F59,NX3)MBB,LLR)LWG,D7F)BYR,13Z)5Z2,VSD)6W3,Z1J)5TX,7D1)396,RR4)JDR,X64)P6Y,QWC)BH2,QT3)R95,QB2)LK2,L3M)866,Y7V)7CL,QRT)H19,NWW)SAN,6WW)75X,FHR)P8R,W4T)JHZ,G1J)XDG,G1K)3BN,QQF)1FB,JGT)L2J,4TF)LSP,XN3)4LC,RYH)F4C,PFQ)YT2,SQ9)YC3,CNV)DVP,C2Z)8V8,LCS)QVC,GF2)6LT,M1S)56W,47Y)SY2,V85)D7F,CM3)4T1,XZV)JD3,26V)5TQ,QBL)RSN,GV3)1MS,5BW)4MX,8Y7)PCQ,TQP)LS9,1KL)YYN,SSF)719,9VN)5KS,GJL)8X9,YMP)DHK,68G)XTD,761)7FT,T5F)2TP,W3G)67M,GSN)6MR,R33)363,H3Z)RYH,H1Y)JZP,BM1)RXY,8TL)QPY,RSH)MSP,LCQ)5K8,CHD)T2Q,JV3)MBW,NGT)TR3,G8B)SXW,T2Q)SSF,SF5)38D,J8P)8PJ,BKD)4B7,R7B)DZG,R84)YJT,5LZ)G5B,JHZ)J92,2SW)BM1,PT7)6HH,PC1)G8B,32C)NPM,V73)J9T,DGX)D78,4B7)FRL,QJX)QTF,PLV)ZDT,SG1)K2C,L16)H8L,LHV)XTS,1WF)6CP,QS6)J2S,H8H)H7L,HFC)Z58,WXF)WC1,1PH)VG5,D5S)ZNK,8S3)T17,Y2Z)HL2,48K)GY4,T7H)BKD,MHH)KZ9,Q4H)DRX,ZPD)TTG,B3F)H6N,6MR)KH5,ZGT)TRW,YPW)6RR,MZ3)LWT,PCQ)728,8PJ)KDR,FP3)VRZ,3LT)WFR,P6Y)2QT,BL5)C75,TTZ)DRY,YGP)DW5,7RH)6ZY,7RZ)557,J2P)GSQ,DB1)1GX,S5D)X3J,6RM)45B,JXZ)8WS,RGM)Y3P,2QT)B94,XKB)Z1J,3KK)SZF,LG7)ZGH,J51)QR5,T1R)B6D,TF9)RHM,2TV)1TS,W9Y)14L,CG5)C62,452)15Y,BG9)66K,V29)QSK,3NF)1SZ,3JS)5V2,TNK)QRT,YYN)RQ1,2TL)DB1,X8J)4KL,6DP)R53,Y3P)1JN,R7B)9KJ,4T8)158,73T)T2V,W7M)PYN,RDR)9Q3,VWF)7NH,MHZ)M57,2DD)QXW,M8V)FZ1,NLQ)T7H,6YH)PCF,VZD)ZJP,TLZ)LSG,YST)JCN,1GW)PQC,W46)RVW,1TS)8TT,58W)K8F,PDV)6C2,2LL)PDH,MFS)S2G,Q1Q)L8C,MQP)4T8,4Q7)VX7,D51)QSN,G5K)4TF,9VB)NPY,ZP7)Y8X,537)8J3,F1P)8JD,TV1)PTW,2YD)PNW,ZD2)NWG,15Y)QDY,BLW)FKM,V8H)GHL,7VY)BLK,WW2)L4J,3F8)98R,KGR)D1M,5RF)WPK,J16)YMR,R8W)WWZ,CXC)8HN,K1Z)F1F,5TQ)8CK,3S7)T5F,6VM)JWP,XCC)CNV,YXK)X75,Q6C)R7B,MNW)G39,5K8)2JS,WPB)ZD7,P49)8TL,H7L)CHJ,BCT)FX2,V32)3LT,3R6)B9B,CH2)KRJ,3KK)JSG,M35)Q48,C6C)NQN,HG4)BLS,K2C)P99,7MJ)MQY,TNX)16H,PZ2)F26,6CP)X8D,2GH)4M5,J6M)H3V,QL5)P1J,KXJ)JLJ,VPZ)D5F,4GX)KNK,CV9)KL9,K8L)76C,W9Y)X7L,ZQK)13Z,Z5C)HXM,X3J)T3B,B75)BR6,189)PTR,RG9)T6C,MD8)4ST,D35)GZZ,Z9P)LWW,XL3)W3G,QXW)3RZ,SZF)1TF,ZTW)63W,37G)WXT,XP6)YTG,MGZ)3D6,LG1)XBH,XPW)5F5,ZDM)G8N,WMR)P3G,KWH)HQW,CSH)R7M,919)6TS,9YT)BYF,XYQ)HVX,41B)TXP,HLQ)1G8,PBK)B64,4FC)DFV,X15)Q4H,Q98)CBH,61B)HX4,JLJ)D51,NB7)4HG,F18)CN5,16M)1BN,VRC)FL6,DK3)6VM,TMT)H1Y,KZN)XFC,CJ1)CH2,B35)PKX,73R)PGM,D5F)423,5LK)G8T,6WB)M9J,H2P)C7W,H3V)QLN,YZ6)KKR,PSN)ZYM,F6K)CTK,TDY)QD5,JRH)5TS,NPM)JC1,28L)QW4,HZT)87B,D1M)CZ6,8C4)MD8,8PG)1LX,JTZ)T7B,JD3)SMC,T2V)TW7,KGF)K8Q,L91)ZRN,Z5D)2N3,KS7)SD1,512)D5C,W29)YHL,S65)HS9,XBC)9T2,C7T)GWG,C49)4FC,RLW)YQ5,Z58)Z5B,VLS)MK1,R1X)3MM,2WP)KCY,SN3)JP1,JVQ)HNP,QLN)4K2,5F5)7FN,V8Q)H2P,4S5)ML8,6C6)34J,JKC)V29,QRV)ZHP,BG1)P65,51Q)8PG,CLL)VHH,HG1)LS3,K8F)KR2,Y7B)W29,JR9)D1L,ZZB)ZLL,95W)9XX,R53)S98,BRC)C6C,MKH)QQQ,MC9)WNG,BTF)R1X,C7W)R84,KLC)KFF,L9Z)DFJ,C62)Q9J,GR7)86R,VKB)PMH,RM8)TP6,TTB)SJP,G5K)VD1,PJB)K2X,XV8)RNR,5YT)TT5,J32)5TN,YJT)FNR,MKC)95W,R82)WW2,C96)FRC,Z19)WBW,PNR)N86,DYQ)KDX,FZ1)RR4,363)S38,5Z2)V73,NSZ)X97,9DS)5PL,D5S)L16,LYL)73X,BSS)GML,L35)JGL,G8N)SQ9,GJH)189,BW5)B75,8J3)5G3,RC8)W2L,5G3)TNX,K8P)SN2,3S4)PT5,XFC)QVY,8TP)P78,VYF)JK4,6YV)LGY,GKQ)NM4,WXD)RC7,HR4)PFQ,JYY)5NX,JH4)C96,R2Q)5C6,N7H)RNW,55P)D5Y,GC1)1KL,4YX)382,V63)XZV,XSK)5YL,TQT)12Y,Q9J)9R6,X97)4CY,FDG)8S4,NM4)TGG,244)54L,VLH)M82,VP9)537,JTQ)YWW,19N)N3J,QVC)5CG,2LZ)2SK,98R)FP3,FL6)VNK,PTW)81H,KFF)8MP,N9T)XN3,FX2)82Q,8W8)951,KYC)KLN,PFQ)JBS,N3S)SM6,QPT)KGR,YPS)F9M,PT5)GKY,RVW)9M2,2TP)JLP,MRJ)XG2,F96)2LZ,2JS)LS5,8CK)48K,ZTW)DJR,BSD)5NF,LRY)BT5,P31)7SK,2HT)B6V,5PL)BD1,5G1)HBX,JZM)FWT,KG7)ZSC,WYD)MGZ,F6J)KL5,HDV)NSZ,LX6)B7J,BMX)VTB,GSQ)PBK,71D)Z3T,7JY)NHX,9XX)37T,8S4)19D,RC2)HFT,ZYM)F1P,B7J)DG2,78R)PHV,P8R)BH1,RGM)YJW,WPB)XQ2,7GD)WRW,NGQ)B2N,SKS)R5T,BT5)9KC,JFS)MKC,M3J)JN1,QTX)S9Q,YC3)3VJ,Y3M)JZM,TCK)RWF,3QK)ZB9,WFH)CXC,RYH)Y3Q,NNB)G8H,SV5)SL2,JBS)T9Q,SX9)YK6,MZP)MG4,4CG)3JS,XKP)MC9,DVP)SYL,BBK)N2F,D9R)KD2,CGY)S8Z,VYZ)7CG,SJP)9VN,ZJ8)3NF,68G)2X3,B7J)LHT,TFP)YZ6,DZ2)5MK,RR4)23R,DF6)QFS,3NN)GPG,LWG)7NV,YQQ)VSD,VXB)Q29,Q29)QLF,N3J)KGF,G89)YRF,NCR)VYF,BPJ)NGX,L7H)R2Q,N5J)1DD,PNP)KN6,SSF)2HT,2KP)4W4,X8J)GV3,TFF)1NV,7T6)GC1,F2Y)K38,SSD)2GK,QTD)YLN,557)CSH,216)2DD,SBV)NW3,83C)QQ1,52Z)SSD,H1Y)DK3,RSN)73T,YT6)JFS,HCB)8TP,QDG)BXM,4HG)H3Z,SYT)HYH,D5C)PNV,5TM)9V5,X8D)WSY,ZNK)4JS,85R)6FB,JLP)HF9,PTX)26V,4M5)DB8,9QN)7MJ,GS5)6DH,C8M)ZR3,24L)7K7,SKS)LKF,KH5)VRQ,R5Z)NVR,1Z9)HR6,LKF)1D6,K38)VPZ,8JD)W1M,GVX)YV5,T5H)KTP,T3B)41B,SXW)TS7,XTS)SN3,NRX)5G1,1W2)HDX,9VD)VRC,B9D)XGH,V55)QJX,VRZ)CDC,QFS)X64,RL4)TMP,J2P)Y7V,671)GYK,B7R)LX6,M5D)J32,RVY)7RZ,DRY)1W2,YWF)XVH,KXM)F18,J6M)Y3M,7PH)Q1Q,5WS)Z38,VWG)ZXQ,H4K)HR4,BPR)PDN,728)NX5,NBL)ZM8,CB4)MGJ,V9G)PLV,SMC)555,BH2)W84,23R)Q83,XJ1)HDW,B72)YQQ,BTR)12J,VHX)3GG,ZX4)SBV,B6M)CR2,BMS)D4C,TW7)9TH,PDW)RDR,5NF)GJH,HH8)51Q,332)1QV,K2L)HQR,DRY)G82,NLP)M3J,Z2G)72V,QNH)B9D,HP3)3NN,9ZL)G5K,F6Y)2GH,4VR)DHT,CD7)G3W,QCH)QHV,LGF)3Z6,23G)3GY,7NH)N5C,LBC)SX9,S38)6WW,C2B)2WP,RPS)V85,P1Z)TWT,WRW)WHR,45B)TTB,N2F)2RG,2SQ)NPV,HZQ)VKW,ZHP)SHF,8WC)VZD,PYN)HLL,82Q)KXJ,X8L)3JC,5MK)PNP,VWJ)Z66,996)C52,SBX)MZG,6H9)YPW,LS9)HDN,NPV)QNH,X7N)BMS,BLK)DF6,GXF)ZKV,XNT)XP6,KLN)VDL,TTB)TF9,WC1)CD7,5HL)Z19,F1F)6H9,X9F)VKB,ZW5)YWF,MBW)XYQ,8WS)JYY,BR6)KS7,XFK)M2P,XQG)F2X,X81)7VY,FHZ)VBG,7CG)LBC,YBT)JW6,FRL)82B,VS3)7D1,S8Z)SXM,TPQ)3NV,B64)R5S,2BG)RVY,7SK)XJ1,771)C9T,ZDT)CQ3,C62)C4Z,RT8)WP2,B9Z)NVB,9QN)QZR,TGG)5X6,ZRN)3GN,4D9)2DJ,XNF)K5H,6XF)VML,G2V)5LZ,WYD)74B,P5Y)T42,8FG)DMS,PNL)8W8,435)5F8,3RZ)1S8,KLC)V2J,PYN)5HL,5V2)32C,1QW)KX1,1D6)78R,76C)8WW,4WK)M13,CQL)XHJ,297)2SQ,F3V)9DC,T2Q)SDL,1BN)SBP,TZB)9QR,W4V)T1T,81C)VG9,J9T)49L,27L)NGQ,JP1)3K5,DHK)MHH,M13)4VH,XYH)4GX,7Q3)GCQ,423)PJ1,1TF)F6J,NTX)LJJ,RNW)FDG,951)W1W,HQW)FG9,6M2)F1B,34Y)3SR,9MC)XV7,3YH)JZ1,M9J)ST7,LF8)PJB,SHF)ZHS,9QR)KZN,X1K)35X,JYX)BG1,QVY)G2N,FJM)LMS,DHX)TZB,TCD)M8V,WXT)T3K,C8V)8FN,CS5)ZPD,191)L3M,3MM)HLQ,KZS)K1C,FZJ)BVC,8WH)QDC,VC3)TK5,35X)C8M,G8H)Z5P,3WZ)7Q3,QSL)XSK,XRS)DK4,JZP)DST,L7F)84X,K5T)GQ7,NW4)ZQK,3GY)BLJ,2DB)NB9,H19)3DB,M57)WHG,LSG)926,SM6)MQH,Y4L)KHX,VTX)BQZ,2X3)Y2R,51Q)BPJ,2N2)3KK,ND7)VHX,NX5)5RF,ZLL)G2V,H4V)MKH,73T)435,LGD)W4V,2KL)WPB,CDM)NCX,513)VLS,JW6)BTR,KHC)8R5,YN2)NCR,62P)667,J92)3X9,8FH)HHK,KR2)SZX,G8B)VP9,73X)QSQ,1RP)R2H,7MJ)7W3,QWL)4YX,WL2)5MD,5L8)18G,HBX)NSF,Z73)4P1,9HZ)YZV,42L)YKX,T5F)KJT,7RN)QS6,7HS)BL5,7HR)7XN,Y2R)SPC,ZM7)G1K,MQH)X1K,KDX)YBT,KL9)3BZ,Y3Q)9ZL,DST)D9R,TS7)YOU,LWV)RLW,GML)367,2VB)V34,WN6)6RM,195)VWQ,23C)9VB,FFW)R33,S98)B9Z,B4P)YG4,QSK)BS5,XBR)3C2,49R)DLH,Z38)LRY,8Y7)4Q7,5VJ)CHD,HVX)7HS,LGY)SQX,3K5)MYQ,T3B)N5J,R95)69G,2CN)WP6,VBG)TCK,V34)NLB,39B)QBL,YWW)27L,SBP)YJF,PKT)PXR,2GV)T5H,4KL)XYH,BKV)FHR,VNK)H9Q,3GN)2GV,JN1)GQJ,J59)BMY,QL5)CHV,3NV)LPS,FJM)GM8,PTR)6WP,DF1)58W,7LM)XG3,DJR)CLY,PJD)S73,12J)LCQ,P2V)RQC,XTD)F8S,VZX)CNJ,L9W)CNL,XDG)QPT,86R)6YV,FDS)RC2,HDW)JGT,ZDP)CDM,LK2)YX3,HR6)T79,9YC)4Y7,X7L)V63,Z5P)B72,NPY)TQP,W4M)TNP,VMR)GJL,HYJ)NWW,ZJV)HCB,76Q)77Q,N89)Y2Z,5NX)78B,SRJ)Q28,TR3)4HP,T79)5L8,JBS)BKV,3SR)C8V,ZT8)T99,NQN)8QP,7R8)NL6,CSH)73R,FDG)JSS,435)LCS,RKY)PKG,HYH)GCD,T1T)FQQ,ZNK)K8H,KL5)BLW,TXP)K1Z,NSF)CV9,12Y)CDG,78B)YN2,HF9)XCC,NGX)6C6,YX5)LGD,XYD)T2P,RK4)YCY,CBH)FM2,BVC)2TL,LHT)FHZ,3YY)2TV,CHJ)DF1,VX3)1P6,8R5)FVB,18G)7R8,CLY)5P6,BR4)NW4,TNK)512,SDL)V5T,JCN)DJL,C75)DK1,WWR)BW5,GM8)KYC,8B8)QL5,FVB)143,6C1)S65,Q21)BTF,VW3)MRM,3S3)N89,HHK)QQ9,3BZ)S5D,6RR)2DB,452)42L,8TT)3WZ,7GM)JR9,N51)MQC,T2P)CWB,HQR)WZ9,X75)WL2,9T2)N7H,T1W)TQT,5TX)X15,PR6)ZGT,36R)VMR,X3D)X31,PNV)5S3,92Q)34Y,X74)3S7,6G3)P3X,858)T89,H8H)XKP,DK1)MFS,NJ8)LVJ,5X6)216,TNP)2N2,VD1)WDK,DG2)Q63,QQP)95G,VZ2)Z12,Z5B)RL4,4MX)F2Y,S9Q)NX3,DY8)YST,3VJ)RT8,MGZ)BCT,MQY)QVJ,X3G)JW1,8QP)858,PGH)BD2,GXF)K2L,JK4)95C,6ZY)VS3,P99)BR4,1DD)PDW,BLS)8S3,2GH)SRJ,DYP)581,LDK)JR7,VWQ)J6M,4JD)6P1,CN2)7RN,X5M)F2V,N8W)Y7B,B6V)QH5,JWP)F3L,H6H)CDV,HD8)XV8,BJ1)PSN,Q28)PBC,437)BRC,NNB)T1R,HLL)Z2G,F5S)TTZ,JSS)TLZ,YQ5)3SC,92P)HG4,HLQ)TTJ,49L)4PT,PQC)CJ1,BJ1)ZT8,G39)S5Z,F7K)73H,KX1)QSL,QD5)L91,HXM)BMW,QTF)YBY,V5T)Z73,3D6)WWR,8TT)1KB,VG5)4PQ,95C)297,K5H)V9G,BMY)QTD,JC1)RPS,PH9)X25,QPY)BT3,YLN)YQ8,YZV)NRX,P65)3DL,LK2)F5S,DLH)KLC,COM)XVW,QP6)5TM,WHG)DY8,Y29)DYQ,2RL)PHT,MZ3)SKS,2V2)YP5,CDC)5WS,QVJ)JGF,X6L)D2F,LJJ)7PH,T7X)TFP,FXT)LG1,VKW)3YH,34H)8WH,1NV)QP2,JWB)513,8HN)BSD,QDY)9CF,GY4)2VB,931)Z27,B96)9XL,CYM)437,382)WXF,23C)RCT,FHZ)85R,56W)Q3C,VW1)R82,72V)C3Y,VRZ)V3G,FRC)QH7,LKP)LL6,F4C)H4V,WPK)VWG,7NV)VWW,YMR)1WF,PCF)NNB,FP8)VYZ,DNV)TDY,ZFL)F7D,6CD)ZD2,CKM)8KM,P78)GV2,QJJ)28L,PDH)3Q2,G5R)BDJ,CTK)6G3,Z5D)9ZG,C4Z)5LK,LS3)ZP7,QLF)23C,1FB)452,SZX)1CK,NW3)V8H,Q21)XNT,G2Y)5YT,MK1)RK4,DH9)JD1,C4Z)N9T,7BK)2KF,PXR)WZZ,DW5)Q43,6P1)XPW,T7B)FHW,X3D)PTX,CNL)1WS,QDC)ZFL,335)ZM7,557)NGT,YT2)CYM,MQC)PNL,SN3)WJG,Y7B)53N,RWF)L9W,5YG)G2Y,6W3)822,77Q)DXZ,6L4)HP3,S9Q)9HZ,3Z6)39B,VDL)JTZ,158)M35,GZZ)11L,BVC)RWL,88G)R8W,P3G)HY5,8X9)X74,5CG)9CP,6ZT)4S5,F98)97W,VQD)VW1,KNC)YGP,CWB)4H9,2HT)D57,N3C)9VL,FWT)VZ2,QP6)PFX,LVJ)VLH"
    ))
Ejemplo n.º 11
0
from Common import assertEqual
import math


def calculateVisibilityAngle(astroidA, astroidB):
    ax, ay = astroidA
    bx, by = astroidB
    return math.atan2((bx - ax), (by - ay))


assertEqual(math.atan2(2, 3), calculateVisibilityAngle((2, 3), (6, 9)))
assertEqual(math.atan2(0, 1), calculateVisibilityAngle((2, 3), (2, 9)))
assertEqual(math.atan2(1, 0), calculateVisibilityAngle((2, 3), (5, 3)))


def getVisibleAstroidCount(coordinate, astroidCoordinates):
    visibilityAngles = []
    for astroidCoordinate in astroidCoordinates:
        if astroidCoordinate != coordinate:
            visibilityAngles.append(
                calculateVisibilityAngle(coordinate, astroidCoordinate))
    return len(set(visibilityAngles))


assertEqual(2, getVisibleAstroidCount((0, 1), [(0, 1), (0, 4), (1, 2)]))


def getAstroidCoordinateWIthMaximumVisibility(inputMap):
    astroidList = []
    for row in range(len(inputMap)):
        for col in range(len(inputMap[row])):
import math


def calculateVelocityChange(a, b):
    return 0 if a == b else (1 if a < b else -1)


def getLCM(a, b):
    return a * b // math.gcd(a, b)


def getCycleTimeForMoon(x, y, z):
    return getLCM(getLCM(x, y), z)


assertEqual(30, getCycleTimeForMoon(6, 10, 15))


def getCycleTimeForAllMoons(a, b, c, d):
    return getLCM(getLCM(getLCM(a, b), c), d)


class Point:
    def __init__(self, position):
        self.position = self.initialPosition = position
        self.velocity = self.initialVelocity = 0
        self.cycleStepsCount = 0

    def calculateEffectiveVelocity(self, effectingPoints):
        for point in effectingPoints:
            if self != point: