การลดเศษส่วนในทางที่ผิด
ในการแข่งขันกอล์ฟรหัสคุณต้องหาเศษส่วนที่สามารถลดความผิดได้ แต่ยังคงอยู่ในหมายเลขเดียวกัน
หมายเหตุ:การลดเศษส่วนในทางที่ผิดจะมีคำจำกัดความที่แน่นอนดูรายละเอียด
ตัวอย่าง:
64/16 = 6 4/1 6 = 4/1 = 4
แน่นอนว่าคุณไม่สามารถหยุดทั้ง 6es ได้ แต่ที่นี่คุณยังคงได้รับคุณค่าที่ถูกต้อง ในการท้าทายนี้คุณจะต้องค้นหาตัวอย่างเช่นนี้
รายละเอียด
คุณต้องเขียนฟังก์ชัน / โปรแกรมที่รับจำนวนเต็มบวกหนึ่งตัวn
เป็นอินพุตและเอาต์พุต / ส่งคืนรายการ / อาร์เรย์ของเศษส่วนในรูปแบบ
numerator1,denominator1,numerator2,denominator2,...
โปรแกรมที่มีเพื่อหาสำหรับแต่ละส่วนa/b
ด้วยa+b=n
และa,b>0
ไม่ว่าจะสามารถลดลงได้ทางที่ผิด (ไม่สำคัญว่าจะลดลงในแบบปกติหรือมีความเป็นไปได้หลายอย่างในการลดมันก็ต้องมีความเป็นไปได้ที่จะลดลงในลักษณะที่ผิดอย่างน้อยหนึ่งวิธี)
คำจำกัดความของ วิธีที่ไม่ถูกต้อง:เศษส่วนสามารถลดลงได้ในทางที่ผิดถ้าหากต่อเนื่องกันของตัวเลขที่ต่อเนื่องกันปรากฏใน a และ b และถ้าค่าของเศษส่วนยังคงเหมือนเดิมหากคุณลบสตริงย่อย
ตัวอย่าง: 1536/353 สามารถ 'ลด' เพื่อ 16/3 แต่ทั้งสองค่าไม่เท่ากันดังนั้นคุณจึงไม่สามารถลดส่วนนี้ทางที่ผิด
โปรดทราบว่าคำจำกัดความของการลดวิธีที่ผิดนี้อาจรวมถึงเศษส่วนที่ลดลงในวิธีที่ถูกต้อง: 110/10 = 11/1
อยู่ในคำนิยามของการลดวิธีที่ไม่ถูกต้องแม้ว่าจะเป็นขั้นตอนที่ถูกต้องก็ตาม
เกณฑ์การให้คะแนน
จำนวนไบต์น้อยที่สุดชนะ คุณสามารถเขียนฟังก์ชั่นหรือโปรแกรมที่รับจำนวนเต็มและส่งกลับอาร์เรย์หรือโปรแกรมที่ใช้ stdin / stdout หรือคุณสามารถพิจารณา n บันทึกไว้ในตัวแปรและในตอนท้ายของโปรแกรมรายการจะต้องบันทึกไว้ในตัวแปรอื่น
กรณีทดสอบ
โปรดรวมการทดสอบต่อไปนี้ (บอกฉันทีว่าควรเพิ่มอะไรฉันไม่ทราบว่าเศษส่วนเหล่านั้นมีเท่าไร / มีกี่ตัวอย่างที่คาดหวัง)
n=80 (64/16 should be in this list)
n=147 (98/49 should be in this list)
n=500 (294/196 should be in this list) WRONG since 294+196 != 500 Thanks Falko
1010/10 = 101/1 && 1010/10 /= 110/1
n=147
) ไม่ถูกต้อง: 49/89 != 4/8
.