โจทย์ " MJEHURIC "
Goran มีท่อนไม้ 5 ชิ้นเรียงกันตามลำดับ ท่อนไม้แต่ละชิ้นจะมีตัวเลขที่มีค่าจาก 1-5 สลักอยู่ด้านบน ดังนั้น ค่าของตัวเลขที่กำกับอยู่ด้านบนของท่อนไม้ในแต่ละชิ้นจะปรากฏแค่เพียงครั้งเดียวเท่านั้น Goran ต้องการที่จะเรียงลำดับท่อนไม้แต่ละชิ้นให้มีค่า 1 2 3 4 5 ตามลำดับ โดยกระทำด้วยวิธีการดังนี้
1. ถ้าตัวเลขบนไม้ท่อนแรกมีค่ามากกว่าตัวเลขบนไม้ท่อนที่สอง ให้สลับที่กัน
2. ถ้าตัวเลขบนไม้ท่อนที่สองมีค่ามากกว่าตัวเลขบนไม้ท่อนที่สาม ให้สลับที่กัน
3. ถ้าตัวเลขบนไม้ท่อนที่สามมีค่ามากกว่าตัวเลขบนไม้ท่อนที่สี่ ให้สลับที่กัน
4. ถ้าตัวเลขบนไม้ท่อนที่สี่มีค่ามากกว่าตัวเลขบนไม้ท่อนที่ห้า ให้สลับที่กัน
5. ถ้าท่อนไม้ทั้งหมดยังไม่เรียงกันตามลำดับ 1 2 3 4 5 ให้กลับไปทำขั้นที่ 1 ใหม่
งานของคุณ
จงเขียนโปรแกรมเพื่อรับค่าของตัวเลขบนท่อนไม้ตามลำดับในตอนเริ่มต้น และแสดงผลค่าของตัวเลขบนท่อนไม้ตามลำดับที่ได้หลังจากการสลับที่ในแต่ละครั้ง
ข้อมูลนำเข้า
ในบรรทัดแรก ประกอบด้วยค่าของตัวเลขบนท่อนไม้ทั้ง 5 ท่อน ตามลำดับ ซึ่งแยกกันโดยใช้ช่องว่าง 1 ช่อง ตัวเลขทั้งหมดจะต้องมีค่าจาก 1 ถึง 5 และไม่มีตัวเลขใดมีค่าซ้ำกัน ค่าของตัวเลขบนท่อนไม้ในตอนเริ่มต้น จะต้องไม่ใช่ 1 2 3 4 และ 5 ตามลำดับ
ข้อมูลส่งออก
หลังจากท่อนไม้ 2 ท่อนใด ๆ ถูกสลับที่กัน ให้แสดงผลค่าของตัวเลขบนท่อนไม้เหล่านั้นซึ่งเรียงกันตามลำดับ ลงบนบรรทัดเดียวกัน โดยใช้ช่องว่างแยกตัวเลขแต่ละตัวออกจากกัน
ที่มา: COCI 2008/2009, Contest #4 – January 17, 2009
1. ถ้าตัวเลขบนไม้ท่อนแรกมีค่ามากกว่าตัวเลขบนไม้ท่อนที่สอง ให้สลับที่กัน
2. ถ้าตัวเลขบนไม้ท่อนที่สองมีค่ามากกว่าตัวเลขบนไม้ท่อนที่สาม ให้สลับที่กัน
3. ถ้าตัวเลขบนไม้ท่อนที่สามมีค่ามากกว่าตัวเลขบนไม้ท่อนที่สี่ ให้สลับที่กัน
4. ถ้าตัวเลขบนไม้ท่อนที่สี่มีค่ามากกว่าตัวเลขบนไม้ท่อนที่ห้า ให้สลับที่กัน
5. ถ้าท่อนไม้ทั้งหมดยังไม่เรียงกันตามลำดับ 1 2 3 4 5 ให้กลับไปทำขั้นที่ 1 ใหม่
งานของคุณ
จงเขียนโปรแกรมเพื่อรับค่าของตัวเลขบนท่อนไม้ตามลำดับในตอนเริ่มต้น และแสดงผลค่าของตัวเลขบนท่อนไม้ตามลำดับที่ได้หลังจากการสลับที่ในแต่ละครั้ง
ข้อมูลนำเข้า
ในบรรทัดแรก ประกอบด้วยค่าของตัวเลขบนท่อนไม้ทั้ง 5 ท่อน ตามลำดับ ซึ่งแยกกันโดยใช้ช่องว่าง 1 ช่อง ตัวเลขทั้งหมดจะต้องมีค่าจาก 1 ถึง 5 และไม่มีตัวเลขใดมีค่าซ้ำกัน ค่าของตัวเลขบนท่อนไม้ในตอนเริ่มต้น จะต้องไม่ใช่ 1 2 3 4 และ 5 ตามลำดับ
ข้อมูลส่งออก
หลังจากท่อนไม้ 2 ท่อนใด ๆ ถูกสลับที่กัน ให้แสดงผลค่าของตัวเลขบนท่อนไม้เหล่านั้นซึ่งเรียงกันตามลำดับ ลงบนบรรทัดเดียวกัน โดยใช้ช่องว่างแยกตัวเลขแต่ละตัวออกจากกัน
ที่มา: COCI 2008/2009, Contest #4 – January 17, 2009
ตัวอย่างข้อมูลนำเข้า | ตัวอย่างข้อมูลส่งออก |
2 1 5 3 4 | 1 2 5 3 4 1 2 3 5 4 1 2 3 4 5 |
2 3 4 5 1 | 2 3 4 1 5 2 3 1 4 5 2 1 3 4 5 1 2 3 4 5 |
ความช่วยเหลือ: ไม่มีคำใบ้สำหรับปัญหานี้
ที่มาของโจทย์ www.programming.in.th
วิเคราะห์โจทย์
1. ถ้าตัวเลขบนไม้ท่อนแรกมีค่ามากกว่าตัวเลขบนไม้ท่อนที่สอง ให้สลับที่กัน
2. ถ้าตัวเลขบนไม้ท่อนที่สองมีค่ามากกว่าตัวเลขบนไม้ท่อนที่สาม ให้สลับที่กัน
3. ถ้าตัวเลขบนไม้ท่อนที่สามมีค่ามากกว่าตัวเลขบนไม้ท่อนที่สี่ ให้สลับที่กัน
4. ถ้าตัวเลขบนไม้ท่อนที่สี่มีค่ามากกว่าตัวเลขบนไม้ท่อนที่ห้า ให้สลับที่กัน
5. ถ้าท่อนไม้ทั้งหมดยังไม่เรียงกันตามลำดับ 1 2 3 4 5 ให้กลับไปทำขั้นที่ 1 ใหม่
เเนวคิดในการเเก้โจทย์
Code Python
def NewData (Input) : ListData = [] for i in range(len(Input)) : if Input[i] == " " : ListData.append(Input[i-1]) ListData.append(Input[len(Input)-1]) return ListData 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 is you double") return False return True def Checkdata (Input) : for i in range(len(Input)-1) : if Input[i] > Input[i+1] : return True return False def Sortdata(Input) : Save = 0 for i in range(len(Input)-1) : if Input[i] > Input[i+1] : Save = Input[i] Input[i] = Input[i+1] Input[i+1] = Save print Input if Checkdata(Input) == True : Sortdata(Input) return Input while True : Input = raw_input("Input data is : ") if len(Input) == 9 and Checkdouble(NewData(Input)) : if Checkdata(NewData(Input)) == True : Sortdata(NewData(Input)) else : print ("Check new data no input 1 2 3 4 5") print("Error input check now") else : print("Error input check now")
ผลลัพธ์ที่ได้
Input data is : 12345 Error input check now Input data is : 123456 Error input check now Input data is : 1 2 3 4 5 Check new data no input 1 2 3 4 5 Error input check now Input data is : 1 2 1 3 4 Check new data is you double Error input check now Input data is : 2 1 5 3 4 ['1', '2', '5', '3', '4'] ['1', '2', '3', '5', '4'] ['1', '2', '3', '4', '5'] Input data is : 2 3 4 5 1 ['2', '3', '4', '1', '5'] ['2', '3', '1', '4', '5'] ['2', '1', '3', '4', '5'] ['1', '2', '3', '4', '5']
ไม่มีความคิดเห็น:
แสดงความคิดเห็น