การยกเลิกที่ผิดปกติ (จาก Wolfram Alpha):
การยกเลิกที่ผิดปกติคือ "การยกเลิก" ของตัวเลขของ a และ b ในตัวเศษและตัวหารของเศษส่วน a / b ซึ่งส่งผลให้เศษส่วนเท่ากับต้นฉบับ โปรดทราบว่าหากมีการนับจำนวนหลายหลัก แต่แตกต่างกันของตัวเลขหนึ่งหลักขึ้นไปในตัวเศษและตัวส่วนนั้นจะมีความกำกวมเกี่ยวกับตัวเลขที่จะยกเลิกดังนั้นจึงเป็นการง่ายที่สุดในการแยกกรณีดังกล่าวออกจากการพิจารณา ลิงค์
a / b
กล่าวง่ายๆว่าคุณมีเศษส่วน หากคุณสามารถยกเลิกตัวเลขในเศษส่วนเพื่อสร้างเศษส่วนอื่นc / d
ซึ่งเท่ากับต้นฉบับ ( a / b = c / d
) การยกเลิกแบบผิดปกติสามารถใช้เพื่อทำให้เศษส่วนนั้นง่ายขึ้น
ความท้าทายของคุณคือการสร้างโปรแกรมหรือฟังก์ชั่นที่ป้อนสตริงเศษส่วนในรูปแบบa/b
และเอาท์พุทหรือส่งกลับค่าความจริงหากเศษส่วนสามารถทำให้ง่ายขึ้นโดยใช้การยกเลิกแบบผิดปกติและค่าเท็จ a
และb
จะเป็นจำนวนเต็มบวกที่ไม่เป็นศูนย์เสมอ a
และb
จะมีตัวเลขสองหลักขึ้นไปเสมอ นอกจากนี้ตัวเลขทั้งหมดจากa
หรือb
จะไม่ถูกยกเลิก (คุณจะไม่ได้รับอินพุต12/21
) อย่างน้อยหนึ่งหลักจากa
และb
จะถูกยกเลิกในแต่ละครั้ง (คุณจะไม่ได้รับอินพุต43/21
) และผลลัพธ์สุดท้ายจะไม่เป็น0
เช่นนั้นหรือa
b
โปรแกรมของคุณจะต้องยกเลิกตัวเลขทั่วไปทั้งหมดระหว่างa
และb
(เช่นใน1231/1234
คุณต้องยกเลิก a 1
, a 2
และ a 3
) หากมีความเป็นไปได้หลายทางในการยกเลิกให้เลือกหลักซ้ายสุดก่อน (515/25 กลายเป็น 15/2 ไม่ใช่ 51/2)
ตัวอย่าง:
Input Output Why
1019/5095 true Remove the 0 and the 9 from both sides of the fraction to get 11/55, which is equivalent.
16/64 true Remove the 6 from both sides, and get 1/4.
14/456 false Remove the 4s. 14/456 is not equal to 1/56.
1234/4329 false Remove the 2s, 3s, and 4s. 1234/4329 is not equal to 1/9.
515/25 false Remove the first 5 from each side. 15/2 is not equal to 515/25.
นี่คือรหัส - กอล์ฟดังนั้นรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ!