โจทย์ "ABC..."
กำหนดจำนวนเต็มบวก 3 จำนวน คือ A B และ C ซึ่งค่าที่กำหนดให้ทั้งสามตัวอาจจะไม่ได้เรียงลำดับไว้ให้ เพียงแต่เราทราบเป็นที่แน่นอนว่า A มีค่าน้อยกว่า B ส่วน B มีค่าน้อยกว่า C
โจทย์
จงเรียงตัวเลขทั้งสามตัวตามลำดับที่กำหนดมาให้
ข้อมูลนำเข้า
บรรทัดแรกประกอบด้วยตัวเลข 3 ตัว คือ A B และ C ซึ่งอาจจะไม่ได้เรียงลำดับไว้ โดยที่ตัวเลขทั้ง 3 ตัวเป็นตัวเลขจำนวนเต็มบวกที่มีค่าไม่เกิน 100
บรรทัดที่สองประกอบด้วยตัวอักษรภาษาอังกฤษ 3 ตัว คือ A B และ C โดยที่ไม่มีเว้นวรรคคั่นระหว่างตัวอักษรทั้งสาม ซึ่งแสดงถึงลำดับที่โจทย์ต้องการ
ข้อมูลส่งออก
มีทั้งหมด 1 บรรทัด แสดงตัวเลขทั้งหมดเว้นช่องว่างระหว่างตัวเลข 1 ช่อง และเรียงลำดับตามที่โจทย์ต้องการ
ที่มา: Croatian Open Competition in Informatics
contest 2 – November 25, 2006
ตัวอย่างข้อมูลนำเข้า ตัวอย่างข้อมูลส่งออก
1 5 3
ABC 1 3 5
6 4 2
CAB 6 2 4
ความช่วยเหลือ: ไม่มีคำใบ้สำหรับปัญหานี้
ที่มาของโจทย์: www.programming.in.th
วิเคราะห์โจทย์
- รับค่าข้อมูลจำนวน 2 ค่า คือค่า ตัวเลข เเละค่า ABC...
- ทำการเรียงข้อมูลตาม ABC... ซึ่ง A < B < C < D .... < Z
เเนวคิดในการเเก้โจทย์
- สร้าง Function 4 ขุด มีหน้าที่ในการ ตรวจสอบข้อมูลว่ามีขนาดเท่ากันหรือไม่ มีตัวซ้ำหรือไม่ เเปลงข้อมูลใส่ใน List เเละ หาตำเเหน่งของข้อมูล
Code Python
def strtodata(Input) :
List = []
Save = ""
for i in range(len(Input)):
if Input[i] == " " :
List.append(Save)
Save = ""
else :
Save = Save+Input[i]
List.append(Save)
List.sort()
return(List)
def Checkdouble(Input) :
for i in range(len(Input)):
for a in range(i+1,len(Input)):
if Input[i] == Input[a] :
print("Check new data you double\n")
return False
return True
def Checkdata(InputA,InputB) :
Save = 1
for i in range(len(InputA)) :
if InputA[i] == " " :
Save = Save + 1
if Save == len(InputB) :
return True
else :
print("Data error check input you\n")
return False
def ABC (abc,InputA):
for i in range(len(InputA)):
if abc == InputA[i] :
return i
while True :
InputA = raw_input("Input data number : ")
InputB = raw_input("Input data ACB... : ")
if Checkdata(InputA,InputB) == True and Checkdouble(strtodata(InputA)) == True and Checkdouble(InputB) == True :
Listnew = []
ListA = strtodata(InputA)
Save =""
for i in range(len(InputB)) :
Listnew.append(InputB[i])
Listnew.sort()
for a in range(len(InputB)):
Save = Save+str(ListA[ABC(InputB[a],Listnew)])+" "
print("Output is : "+Save+"\n")
ผลลัพธ์ที่ได้...
Input data number : 1 5 3
Input data ACB... : ABC
Output is : 1 3 5
Input data number : 6 4 2
Input data ACB... : CAB
Output is : 6 2 4
Input data number : 1 4 7 8 5 2 3 6 9
Input data ACB... : ABCDEFGHI
Output is : 1 2 3 4 5 6 7 8 9
Input data number : 1 4 7 2 5 8 3 6 9
Input data ACB... : IHGFEDCBA
Output is : 9 8 7 6 5 4 3 2 1
Input data number : 1 5 9 7 3 6 4 8 2
Input data ACB... : BACDEFGIH
Output is : 2 1 3 4 5 6 7 9 8
Input data number : 1 2 3 1
Input data ACB... : ABCD
Check new data you double
Input data number : 1 2 3 4
Input data ACB... : AABC
Check new data you double
ไม่มีความคิดเห็น:
แสดงความคิดเห็น