ผลต่างระหว่างรุ่นของ "Fario2013"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
 
(ไม่แสดง 2 รุ่นระหว่างกลางโดยผู้ใช้คนเดียวกัน)
แถว 20: แถว 20:
 
หลังจากที่เธอได้ย้ายตัวเองไปที่เครื่องรับการเทเลพอร์ทใดแล้ว เครื่องรับนั้นจะสูญเสียพลังงานไปจนหมด และจะไม่สามารถใช้ได้อีก ดังนั้น Maria จะสามารถเคลื่อนย้ายตัวเองไปยังเครื่องรับแต่ละเครื่องได้เพียงครั้งเดียวเท่านั้น
 
หลังจากที่เธอได้ย้ายตัวเองไปที่เครื่องรับการเทเลพอร์ทใดแล้ว เครื่องรับนั้นจะสูญเสียพลังงานไปจนหมด และจะไม่สามารถใช้ได้อีก ดังนั้น Maria จะสามารถเคลื่อนย้ายตัวเองไปยังเครื่องรับแต่ละเครื่องได้เพียงครั้งเดียวเท่านั้น
  
ด้วยสาเหต
+
ด้วยเหตุผลที่ไม่สามารถอธิบายได้ การเดินทางของ Maria จะต้องมีการไปเก็บเหรียญทอง  ที่วางอยู่บนเส้นตรงยาว (เรียกว่า platform)  บน platform นั้นจะมีเครื่องรับการเทเลพอร์ทอย่างน้อยหนึ่งเครื่อง  Maria จะต้องเคลื่อนย้ายตนเองไปยังเครื่องรับการเทเลพอร์ทบางเครื่อง เพราะว่าเมื่อเริ่มต้นเธอยังไม่ได้อยู่บน platform  จากนั้นเธอจึงสามารถใช้พลังมหัศจรรย์ของเธอในการเคลื่อนที่ไปมาและเก็บเหรียญทองทั้งหมด  Maria ไม่ชอบการวิ่งไปมาเหมือนช่างซ่อมท่อน้ำงี่เง่า เธอจึงขอให้คุณเขียนโปรแกรมคำนวณหาระยะการวิ่งที่สั้นที่สุดที่เธอต้องใช้ในการเก็บเหรียญทั้งหมด
  
For some unexplained reason, Maria’s quest requires her to collect a sequence of gold coins
+
Maria ไม่สนใจว่าเครื่องรับเครื่องใดจะเป็นเครื่องแรกที่เธอเคลื่อนย้ายไป และเธอก็ไม่สนใจด้วยว่าเธอจะอยู่ตำแหน่งใดบน platform เมื่อเก็บเหรียญเสร็จ  ไม่มีเหรียญสองอันอยู่บนตำแหน่งเดียวกัน และไม่มีเครื่องรับสองเครื่องอยู่บนตำแหน่งเดียวกัน (อย่างไรก็ตาม เหรียญและเครื่องรับการเทเลพอร์ทอาจจะอยู่ช่องเดียวกันได้)
which are conveniently lying on a flat straight line (a platform). There is also at least one teleport
 
receiver on this platform. Maria needs to first teleport to one of the receivers as she is not
 
initially on the platform, then use her three super-powers to move around and collect all the coins.
 
Maria doesn’t like running around on a platform collecting things like some silly plumber, so she
 
has asked you to write a program to calculate the minimum total distance she must run.
 
  
Maria doesn’t care which receiver she starts from, or where she ends up on the platform after
+
== Torusia ==
collecting all the coins. No two coins will be at the same position and no two receivers will be at
+
 
the same position (however a coin and a receiver may share a position).
+
Alison และ Bill นักวิทยาศาสตร์สองคนอยู่ระหว่างการสำรวจดาวเคราะห์ Torusia  ระหว่างสำรวจ นักวิทยาศาสตร์ทั้งสองถูกทำให้แยกจากกัน และลมสุริยะทำให้อุปกรณ์การสื่อสารของพวกเขาเสียหาย และทำให้พวกเขาไม่ทราบว่าอีกคนอยู่ที่ตำแหน่งใด  โชคยังดีที่พวกเขามีอุปกรณ์สำหรับทดลองทางวิทยาศาสตร์ที่น่าจะช่วยเขาพวกเขากลับมาเจอกันได้
 +
 
 +
Alison และ Bill มองดาวเคราะห์ Torusia ว่าเป็นตารางกริดขนาด 4096 x 4069 โดยที่มุมบนซ้ายคือจุด (0,0) ตารางกริดนี้มีลักษณะวนรอบ (wrap around) ที่ขอบ นั่นคือเส้นในแนวนอนไม่ใช่แค่เส้นตารางในแนวนอน แต่จริง ๆ แล้ว เป็นวงกลม เช่นเดียวกับเส้นในแนวตั้ง  จุดด้านตะวันออกของจุด (4095,34) คือจุด (0,34) และจุดด้านบนของจุด (17,0) คือจุด (17,4095)
 +
 
 +
Alison จะพิจารณาจุดของเธอว่าเป็นจุด (0,0) ในขณะที่ Bill จะพิจารณาว่าจุดที่เขาอยู่เป็นจุด (0,0) เช่นเดียวกัน แต่ในความเป็นจริงแล้ว พิกัดโดยสัมบูรณ์ของทั้งคู่จะไม่เท่ากัน (นั่นคือระบบพิกัดของทั้งสองคนนั้นไม่ได้วางทับกันพอดี)  อย่างไรก็ตาม ระบบทิศทางของทั้งสองคนนั้นเหมือนกัน  นั่นคือถ้า Alison อยู่ที่ตำแหน่ง xA เมตรไปทางทิศตะวันออก และ yA เมตรไปทางทิศใต้ของ Bill จุดที่ Alison เรียกว่าจุด (x,y) จะเป็นจุด ((x+xA) mod 4096, (y+yA) mod 4096) ของ Bill
  
== Torusia ==
+
Alison มีเครื่องมือที่ทำงานดังนี้:
 +
 
 +
* '''mark(x, y)''' สร้างเครื่องหมายคลื่นแม่เหล็กไฟฟ้าที่ตำแหน่ง x เมตรไปทางตะวันออกและ y เมตรไปทางใต้ของตำแหน่งของเธอ  การเรียก '''mark(x,y)''' ที่ช่องเที่เคยทำเครื่องหมายแล้วจะไม่ทำให้เกิดเครื่องหมายเพิ่มขึ้นอีก  เธอต้องรับประกันว่า 0 <= x,y <= 4095
 +
 
 +
Bill มีเครื่องมือที่สามารถดำเนินการได้สองแบบคือ:
 +
 
 +
* '''numRow(y)'''  นับจำนวนเครื่องหมายบนแถวที่ y ไปทางทิศใต้  Bill ต้องรับประกันว่า 0 <= y <= 4095
 +
 
 +
* '''numColumn(x)''' นับจำนวนเครื่องหมายบนคอลัมน์ x ในทิศตะวันออกของตำแหน่งของเขา  Bill ต้องรับประกันว่า 0 <= y <= 4095
 +
 
 +
ในแต่ละนาที Alison และ Bill จะใช้เครื่องมือของพวกเขาทำงานได้หนึ่งอย่าง  Alison จะเริ่มทำงานก่อน Bill เล็กน้อย ดังนั้นคุณจะสามารถพิจารณาได้ว่าเครื่องหมายที่เธอทำ จะปรากฏก่อนการตรวจวัดของ Bill
 +
 
 +
คุณสามารถส่งโปรแกรมให้กับ Alison และ Bill เพื่อช่วย Alison ทำเครื่องหมาย และ Bill ตรวจวัด เพื่อที่ Bill จะสามารถหาตำแหน่งของ Alison ได้เร็วที่สุดเท่าที่จะทำได้

รุ่นแก้ไขปัจจุบันเมื่อ 05:33, 19 พฤษภาคม 2556

Source: [1]

Algo-fu

คุณกำลังเดินทางเพื่อไปฝึกวิชา Algo-fu ที่วัดแห่งหนึ่งกลางภูเขาใหญ่ ก่อนที่คุณจะได้ฝึกฝน คุณจะต้องพิสูจน์ตัวเองก่อนว่า เป็นผู้มีจิตใจที่บริสุทธิ์

คุณได้รับแผนที่ที่แทนพื้นที่เขาในรูปของตารางกริดสี่เหลี่ยม แต่ละช่องจะมีความสูง คุณจะสามารถเคลื่อนที่จากช่องที่คุณอยู่ไปยังช่องที่ติดกันได้ (ติดกันในสี่ทิศคือตะวันออก ตะวันตก เหนือ หรือใต้) ตราบเท่าที่ความสูงของช่องเหล่านั้นต่ำกว่าหรือเท่ากับระดับความบริสุทธิ์ของจิตใจคุณ

เมื่อคุณไปถึงจุดมุมบนซ้าย (แถวที่ 1 คอลัมน์ที่ 1, และจะมีความสูงเท่ากับ 0) จิตใจของคุณนั้นถูกแปดเปื้อนจากอารยธรรมสมัยใหม่ ดังนั้น จิตใจของคุณจะมีระดับความบริสุทธิ์ที่ 0 บางช่องในแผนที่จะมีกิจกรรมให้คุณทำเพื่อจะเพิ่มความบริสุทธิ์ให้กับจิตใจของคุณ ทำให้คุณสามารถเดินสูงเพิ่มขึ้นได้ เป้าหมายของคุณคือหาทางฝึกกิจกรรมให้น้อยครั้งที่สุด แต่ให้ยังสามารถเดินทางถึงวัดเพื่อฝึก Algo-fu ได้

Super Maria

Maria เป็นช่างไฟฟ้าที่อยู่ที่ Fungus Republic ทุก ๆ ไม่กี่ปีจะมีเหตุร้ายเกิดขึ้น และ Maria ก็ต้องเป็นผู้กอบกู้สถานการณ์ทุกครั้งไป ในปีนี้น้องสาวผู้ชั่วร้ายของเธอ Waria ได้ลักพาตัวองค์ชาย Nectarine ไป ทำให้ Maria จะต้องผจญภัยเพื่อไปช่วยองค์ชาย

คนเรียก Maria ว่า Super Maria เพราะว่าเธอมีพลังมหัศจรรย์สามอย่าง คือ

  • ความสามารถอันมหัศจรรย์ที่จะวิ่งไปทางซ้าย
  • ความสามารถอันมหัศจรรย์ที่จะวิ่งไปทางขวา
  • ความสามารถธรรมดาที่จะย้ายตัวเองแบบฉับพลันไปยังเครื่องรับการเทเลพอร์ท

หลังจากที่เธอได้ย้ายตัวเองไปที่เครื่องรับการเทเลพอร์ทใดแล้ว เครื่องรับนั้นจะสูญเสียพลังงานไปจนหมด และจะไม่สามารถใช้ได้อีก ดังนั้น Maria จะสามารถเคลื่อนย้ายตัวเองไปยังเครื่องรับแต่ละเครื่องได้เพียงครั้งเดียวเท่านั้น

ด้วยเหตุผลที่ไม่สามารถอธิบายได้ การเดินทางของ Maria จะต้องมีการไปเก็บเหรียญทอง ที่วางอยู่บนเส้นตรงยาว (เรียกว่า platform) บน platform นั้นจะมีเครื่องรับการเทเลพอร์ทอย่างน้อยหนึ่งเครื่อง Maria จะต้องเคลื่อนย้ายตนเองไปยังเครื่องรับการเทเลพอร์ทบางเครื่อง เพราะว่าเมื่อเริ่มต้นเธอยังไม่ได้อยู่บน platform จากนั้นเธอจึงสามารถใช้พลังมหัศจรรย์ของเธอในการเคลื่อนที่ไปมาและเก็บเหรียญทองทั้งหมด Maria ไม่ชอบการวิ่งไปมาเหมือนช่างซ่อมท่อน้ำงี่เง่า เธอจึงขอให้คุณเขียนโปรแกรมคำนวณหาระยะการวิ่งที่สั้นที่สุดที่เธอต้องใช้ในการเก็บเหรียญทั้งหมด

Maria ไม่สนใจว่าเครื่องรับเครื่องใดจะเป็นเครื่องแรกที่เธอเคลื่อนย้ายไป และเธอก็ไม่สนใจด้วยว่าเธอจะอยู่ตำแหน่งใดบน platform เมื่อเก็บเหรียญเสร็จ ไม่มีเหรียญสองอันอยู่บนตำแหน่งเดียวกัน และไม่มีเครื่องรับสองเครื่องอยู่บนตำแหน่งเดียวกัน (อย่างไรก็ตาม เหรียญและเครื่องรับการเทเลพอร์ทอาจจะอยู่ช่องเดียวกันได้)

Torusia

Alison และ Bill นักวิทยาศาสตร์สองคนอยู่ระหว่างการสำรวจดาวเคราะห์ Torusia ระหว่างสำรวจ นักวิทยาศาสตร์ทั้งสองถูกทำให้แยกจากกัน และลมสุริยะทำให้อุปกรณ์การสื่อสารของพวกเขาเสียหาย และทำให้พวกเขาไม่ทราบว่าอีกคนอยู่ที่ตำแหน่งใด โชคยังดีที่พวกเขามีอุปกรณ์สำหรับทดลองทางวิทยาศาสตร์ที่น่าจะช่วยเขาพวกเขากลับมาเจอกันได้

Alison และ Bill มองดาวเคราะห์ Torusia ว่าเป็นตารางกริดขนาด 4096 x 4069 โดยที่มุมบนซ้ายคือจุด (0,0) ตารางกริดนี้มีลักษณะวนรอบ (wrap around) ที่ขอบ นั่นคือเส้นในแนวนอนไม่ใช่แค่เส้นตารางในแนวนอน แต่จริง ๆ แล้ว เป็นวงกลม เช่นเดียวกับเส้นในแนวตั้ง จุดด้านตะวันออกของจุด (4095,34) คือจุด (0,34) และจุดด้านบนของจุด (17,0) คือจุด (17,4095)

Alison จะพิจารณาจุดของเธอว่าเป็นจุด (0,0) ในขณะที่ Bill จะพิจารณาว่าจุดที่เขาอยู่เป็นจุด (0,0) เช่นเดียวกัน แต่ในความเป็นจริงแล้ว พิกัดโดยสัมบูรณ์ของทั้งคู่จะไม่เท่ากัน (นั่นคือระบบพิกัดของทั้งสองคนนั้นไม่ได้วางทับกันพอดี) อย่างไรก็ตาม ระบบทิศทางของทั้งสองคนนั้นเหมือนกัน นั่นคือถ้า Alison อยู่ที่ตำแหน่ง xA เมตรไปทางทิศตะวันออก และ yA เมตรไปทางทิศใต้ของ Bill จุดที่ Alison เรียกว่าจุด (x,y) จะเป็นจุด ((x+xA) mod 4096, (y+yA) mod 4096) ของ Bill

Alison มีเครื่องมือที่ทำงานดังนี้:

  • mark(x, y) สร้างเครื่องหมายคลื่นแม่เหล็กไฟฟ้าที่ตำแหน่ง x เมตรไปทางตะวันออกและ y เมตรไปทางใต้ของตำแหน่งของเธอ การเรียก mark(x,y) ที่ช่องเที่เคยทำเครื่องหมายแล้วจะไม่ทำให้เกิดเครื่องหมายเพิ่มขึ้นอีก เธอต้องรับประกันว่า 0 <= x,y <= 4095

Bill มีเครื่องมือที่สามารถดำเนินการได้สองแบบคือ:

  • numRow(y) นับจำนวนเครื่องหมายบนแถวที่ y ไปทางทิศใต้ Bill ต้องรับประกันว่า 0 <= y <= 4095
  • numColumn(x) นับจำนวนเครื่องหมายบนคอลัมน์ x ในทิศตะวันออกของตำแหน่งของเขา Bill ต้องรับประกันว่า 0 <= y <= 4095

ในแต่ละนาที Alison และ Bill จะใช้เครื่องมือของพวกเขาทำงานได้หนึ่งอย่าง Alison จะเริ่มทำงานก่อน Bill เล็กน้อย ดังนั้นคุณจะสามารถพิจารณาได้ว่าเครื่องหมายที่เธอทำ จะปรากฏก่อนการตรวจวัดของ Bill

คุณสามารถส่งโปรแกรมให้กับ Alison และ Bill เพื่อช่วย Alison ทำเครื่องหมาย และ Bill ตรวจวัด เพื่อที่ Bill จะสามารถหาตำแหน่งของ Alison ได้เร็วที่สุดเท่าที่จะทำได้