---
# System prepended metadata

title: CheckReadyHand.py
tags: [UnitTest_FileProcess]

---

# CheckReadyHand.py
###### tags: `UnitTest_FileProcess`
```
#array = [230, 231, 240, 252, 263, 312, 323, 333, 372, 380]
#arr1 = [120, 133, 141, 221, 222, 261, 270]
#arr2 = [220, 232, 241, 281, 283, 341, 351, 353, 370, 373, 393]
#arr3 = [143, 223, 243, 271, 282, 331, 340, 343, 352, 360, 361, 362, 383]
#tile_to_test = 280

def hu_test(tile_arr, test_tile):
    def del_rep():
        cnt = 0
        rep = [0]
        to_del = []
        for tile in arr_cpy:
            #print(f"{arr_cpy}\nrep test: {tile}v{rep[0]} {int(tile/10) != int(rep[0]/10)}")
            if int(tile/10) != int(rep[0]/10):
                cnt = 0
                rep = [0]
                rep[0] = tile
            else:
                cnt += 1
                rep.append(tile)
                if cnt == 2:
                    to_del.extend(rep)
                    cnt = 0
                    rep = [0]
            #print(f"rep: {rep}\nto_del {to_del}")

        for t in to_del:
            arr_cpy.remove(t)

    def del_num():
        cnt = 0
        num = [0]
        numflag = True
        while numflag:
            numflag = False
            for tile in arr_cpy:
                if int(tile/10) == int(num[cnt]/10):
                    continue
                elif int(tile/10) != int(num[cnt]/10) +1:
                    cnt = 0
                    num = [0]
                    num[0] = tile
                else:
                    cnt += 1
                    num.append(tile)
                    if cnt == 2:
                        for t in num:
                            arr_cpy.remove(t)
                        cnt = 0
                        num = [0]
                        numflag = True

                #print(f"num: {num}")

    arr = tile_arr.copy()
    arr.append(test_tile)
    arr.sort()
    #print('arr =', arr)

    eye_idx = -1
    eye = [0]
    while 1:
        eye = [0]
        eye_flag = False

        eye_idx += 1
        for new_eye in arr[eye_idx:]:
            if int(new_eye/10) != int(eye[0]/10):
                eye[0] = new_eye
            else:
                eye_flag = True
                eye.append(new_eye)
                break
            eye_idx += 1

        #print(eye)

        if eye_flag == False:
            return False    #若無牌眼 則不可能胡

        arr_cpy = arr.copy()
        arr_cpy.remove(eye[0])
        arr_cpy.remove(eye[1])
        #print(arr_cpy)
        # 抓刻子
        del_rep()
        #print(f"\nrepped{arr_cpy}")
        # 抓順子
        del_num()
        #print(f"nummed{arr_cpy}\n")

        if len(arr_cpy) != 0:
            arr_cpy = arr.copy()
            arr_cpy.remove(eye[0])
            arr_cpy.remove(eye[1])
            #print(arr_cpy)
            # 抓順子
            del_num()
            #print(f"nummed{arr_cpy}")
            # 抓刻子
            del_rep()
            #print(f"repped{arr_cpy}\n")
        
        if len(arr_cpy) == 0:
            return True


#print(hu_test(array, tile_to_test))
#print(hu_test(arr1, tile_to_test))
#print(hu_test(arr2, tile_to_test))
#print(hu_test(arr3, tile_to_test))
'''
for i in range(11, 48):
    if i%10 == 0: continue
    x = i*10 +1
    if hu_test(array, x):
        print(i)
'''