# ACSL Senior 5
Division
# Lexington High
School
# 2012-2013
Contest #4
# Jonathon Tidor
def sets(cards):
nums=setsf(cards)
aset=[]
for i in range(13):
aset.append(0)
if nums[i]==2 or nums[i]==3:
aset[i]=aset[i]+1
return aset
def setsf(cards):
nums=[]
for i in range(13):
nums.append(0)
for j in range(len(cards)):
if cards[j][1]==i:
nums[i]=nums[i]+1
return nums
def sort(cards):
suits=[]
for i in range(4):
suits.append([])
for j in range(13):
suits[i].append(0)
for k in range(len(cards)):
if cards[k][0]==i and
cards[k][1]==j:
suits[i][j]=suits[i][j]+1
return suits
def runs(cards):
suits=sort(cards)
arun=[]
for i in range(4):
arun.append([])
for j in range(13):
arun[i].append(0)
t1=0
rep=1
index=j
while rep==1:
index=index-1
if index<0:
rep=0
else:
if suits[i][index]==1:
t1=t1+1
else:
rep=0
t2=0
rep=1
index=j
while rep==1:
index=index+1
if index>=13:
rep=0
else:
if suits[i][index]==1:
t2=t2+1
else:
rep=0
if (t1<4 and t2<4 and
t1+t2>=2) or (t1>=4 and t2<4 and t1+t2>=6) or (t1<4 and t2>=4
and t1+t2>=6):
arun[i][j]=arun[i][j]+1
return arun
def
runsf(cards,x):
suits=sort(cards)
arun=[]
for i in range(4):
arun.append([])
for j in range(13):
arun[i].append(0)
t=0
if suits[i][j]==1:
t=1
rep=1
index=j
while rep==1:
index=index+1
if index>=13:
rep=0
else:
if suits[i][index]==1:
t=t+1
else:
rep=0
if t==x:
for k in range(x):
suits[i][j+k]=0
arun[i][j]=t
return arun
def
insert(cards,car):
if car!=[0,0]:
cards.append(car)
cardsf=[[],[],[[]]]
for i in range(13):
if setsf(cards)[i]>=4:
cardsf[0].append([])
for j in range(4):
cards.remove([3-j,i])
cardsf[0][-1].append([3-j,i])
for i in range(4):
for j in range(13):
if runsf(cards,4)[i][j]>=4:
cardsf[0].append([])
for k in range(4):
cards.remove([i,j+k])
cardsf[0][-1].append([i,j+k])
for i in range(13):
if setsf(cards)[i]==3:
cardsf[1].append([])
for j in range(4):
if [3-j,i] in cards:
cards.remove([3-j,i])
cardsf[1][-1].append([3-j,i])
for i in range(4):
for j in range(13):
if runsf(cards,3)[i][j]==3:
cardsf[0].append([])
for k in range(3):
cards.remove([i,j+k])
cardsf[0][-1].append([i,j+k])
if car!=[0,0]:
rep=1
if cards==[]:
for i in cardsf[0]:
cards.append(i[0])
for i in range(13):
for j in range(4):
if [j,i] in cards:
if rep==1:
for k in cardsf[0]:
if k[0]==[j,i]:
k.remove([j,i])
rep=0
cards=[]
else:
for i in range(13):
for j in range(4):
if [j,i] in cards:
if rep==1:
cards.remove([j,i])
rep=0
for i in range(13):
for j in range(4):
if [3-j,12-i] in cards:
cardsf[2][0].append([3-j,12-i])
return cardsf
def ret(cardsy):
n=0
string=""
nums=["A","2","3","4","5","6","7","8","9","T","J","Q","K"]
suits=["D","C","H","S"]
for i in cardsy:
for j in i:
for k in j:
string=string+nums[k[1]]
string=string+suits[k[0]]
n=n+1
if n<7:
string=string+", "
else:
print(string)
cards=[]
nums=["A","2","3","4","5","6","7","8","9","T","J","Q","K"]
suits=["D","C","H","S"]
for i in
range(7):
cards.append([])
c=str(input("Enter card in hand:
"))
for j in range(4):
if c[1]==suits[j]:
cards[i].append(j)
for j in range(13):
if c[0]==nums[j]:
cards[i].append(j)
for i in
range(5):
cardsx=[]
for i in range(7):
cardsx.append([])
cardsx[i].append(cards[i][0])
cardsx[i].append(cards[i][1])
rep=1
for j in range(5):
c=str(input("Enter card in deck:
"))
car=[]
for k in range(4):
if c[1]==suits[k]:
car.append(k)
for k in range(13):
if c[0]==nums[k]:
car.append(k)
if rep==1:
if sets(cardsx)[car[1]]==1 or
runs(cardsx)[car[0]][car[1]]==1:
cardsy=insert(cardsx,car)
if
len(cardsy[0])+len(cardsy[1])>=2:
rep=0
cardsx=cardsy[2][0]
for k in cardsy[0]:
cardsx=cardsx+k
for k in cardsy[1]:
cardsx=cardsx+k
ret(insert(cardsx,[0,0]))