#create variables
N = int(input("Amount of water stations : "))
totaldist = 0
allstation = []
#สร้างฟังก์ชั่น เพื่อใช้คำนวณระยะห่างระหว่างสองสถานีใดๆ
def dist_btw_stn(start,end):
global totaldist
distanceX = abs(allstation[start][0]-allstation[end][0])
distanceY = abs(allstation[start][1]-allstation[end][1])
totaldist = distanceX + distanceY
print ('distance between',start,'to',end,'=',totaldist)
return totaldist
#สร้างฟังก์ชั่น สำหรับสร้างหมายเลขประจำสถานีต่างๆ
def createStationIndex():
line()
global stationIndex
stationIndex=[]
for i in range(N):
stationIndex.append(i)
print('station index:',stationIndex)
line()
def line():
print('.............................................')
createStationIndex()
line()
#กำหนดค่า x,y ให้กับสถานีต่างๆ ทั้้งหมด
for i in range (N):
eachstation = []
print('x&y of station:',i+1)
eachstation.append(int(input('Please put x: ')))
eachstation.append(int(input('Please put y: ')))
allstation.append(eachstation)
line()
print('All stations are:',allstation)
createStationIndex()
allmainPair = []
main2 = N-1
pairNum = 1
finalAccum = 0
winnerPair = []
#การหยิบลำดับสถานีออกมา 2 อันเพื่อเป็นสถานีหลัก ในแบบต่างๆ
for i in range(N-1):
for j in range(main2):
createStationIndex()
tempMainPair = []
tempMainPair.append(stationIndex[i])
tempMainPair.append(stationIndex[i+j+1])
#print('temp main pair:',tempMainPair)
#ลบ index ที่นำมาเป็น main pair แล้ว ออกจาก stationIndex
if tempMainPair[0] in stationIndex:
#print('remove main1')
stationIndex.remove(tempMainPair[0])
if tempMainPair[1] in stationIndex:
#print('remove main2')
stationIndex.remove(tempMainPair[1])
tempchildStation = stationIndex
print('2 main:',tempMainPair,'rest children:',tempchildStation)
#เปรียบเทียบระยะทางจาก child to each main และเลือกระยะสั้นที่สุดไปสะสมรวม (ยังอยู่ภายใต้ for j)
accumDistance = 0
for k in range(len(tempchildStation)):
toMain1 = dist_btw_stn(tempMainPair[0],tempchildStation[k])
toMain2 = dist_btw_stn(tempMainPair[1],tempchildStation[k])
if toMain1 < toMain2:
accumDistance += toMain1
else:
accumDistance += toMain2
print('Add to Accumulate distance:',accumDistance)
print('Accumulate distance for main pair#',pairNum,':',accumDistance)
if finalAccum==0:
finalAccum = accumDistance
winnerPair = tempMainPair
elif accumDistance < finalAccum:
finalAccum = accumDistance
winnerPair = tempMainPair
print('-------------------------------')
print ('Final accummulation distance:', finalAccum)
print ('Winner pair:',winnerPair)
print('===============================')
pairNum += 1
main2 -= 1 #ยังอยู่ภายใต้ for i
# ระวังเรื่องการย่อหน้าให้ถูกต้องครับ
rows = []
columns = []
output_row = []
print("please enter '#' as blocks and '.' or otherwise as spaces")
n = int(input("please enter the number of columns and rows"))
# count blocks in a row
for i in range(n):
block_num = 0
row_input = input()
for j in row_input:
if j == '#':
block_num += 1
rows.append(block_num)
print(rows)
# print execution no.1
for i in rows:
print('#'*i + '.'*(n-i))
print("")
# find number of blocks in the columns
for i in rows:
for j in range(i):
try:
columns[j] += 1
except:
columns.append(1)
#convert number of blocks in column to row again
for i in columns:
for j in range(i):
try:
output_row[j] += 1
except:
output_row.append(1)
#print output if not enough rows (a blank roll) it will add
for i in range(n-1,-1,-1):
try:
print('#'*output_row[i] + '.'*(n-output_row[i]))
except:
print('.'*n)