分数を間違った方法で減らす
このコードとゴルフのチャレンジでは、間違った方法で減らすことはできますが、それでも同じ数になる分数を見つける必要があります。
注:ここで間違った方法で分数を減らすことには正確な定義があります。詳細を参照してください。
例:
64/16 = 6 4/1 6 = 4/1 = 4
もちろん、両方の6esを打つことはできませんが、ここでも正しい値になります。この課題では、このような例を見つける必要があります。
詳細
n
入力として1つの正の整数を受け入れ、形式で分数のリスト/配列を出力/返す関数/プログラムを作成する必要があります
numerator1,denominator1,numerator2,denominator2,...
プログラムは、各分画のために見つけるために持っているa/b
とa+b=n
し、a,b>0
それを軽減することができるかどうか間違った方法を。(従来の方法で削減できるかどうか、または削減の多くの可能性があるかどうかは関係ありませんが、少なくとも1つの方法で間違った方法で削減できればよいだけです。)
定義 間違った方法は:割合を低減することができる間違った方法を場合にのみ、およびbで連続した数字が現れるのと同じ順序とあなたが部分文字列を削除する場合分数滞在の値が同じであれば。
例:1536/353を16/3に「減らす」ことができますが、これらの2つの値は等しくないため、この割合を間違って減らすことはできません。
間違った方法を減らすというこの定義には、正しい方法で減る分数も含めることができることに注意してください。これは、有効なステップであっても間違った方法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
。