Неправильне зменшення дробів
У цьому виклику коду-гольфу ви повинні знайти фракції, які можна зменшити неправильно, але все-таки закінчитись у тій же кількості.
Примітка: неправильне зменшення дробів тут має точне визначення, перегляньте деталі.
Приклад:
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
.