Сокращение фракций в неправильном направлении
В этом соревновании по коду для игры в гольф вы должны найти дроби, которые можно уменьшить неправильным образом, но при этом получить одинаковое число.
Примечание: неправильное дробление дроби здесь имеет точное определение, см. Подробности.
Пример:
64/16 = 6 4/1 6 = 4/1 = 4
Конечно, вы не можете просто ударить обе шестерки, но здесь вы все равно получите правильное значение. В этом испытании вы должны найти примеры, подобные этому.
Детали
Вы должны написать функцию / программу, которая принимает одно положительное целое число в 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
.