数に到達する方法


10

最初の番号の入力と第2の数(両方とも正の整数、exludedゼロ)を考えると、次のアクションを使用して、あなたが最初の第二の実施を作ることができるどのように多くの方法で決定します+1+2*3。操作は単純に左から右に適用されます。

例:

  1. 入力:1 2。出力:1。つまり、あなただけ得ることができる2ことによって+1、片道そう。

  2. 入力:1 3。出力:3+2つまり+1+1、またはを実行して3を取得できます。*3

  3. 入力:1 4。出力:4

  4. 入力:2 6。出力:6

  5. 入力:2 7。出力:9

  6. 入力:1 10。出力:84

方法がない場合、たとえば100 100、または100 80、出力は0です。

入力を配列または任意の便利なセパレーター付きの文字列として受け取ることもできます。

最短のソリューションが優先されます。


それはだまされていて申し訳ありませんが、似たような質問は見つかりませんでした。
nicael 2016年

4
答えが無限でなければならない入力についてはどうですか?たとえば、最初の整数が負の入力は、3で乗算してから元の数値にインクリメントして、必要なだけ繰り返すことができるためです。
Peter Taylor

1
@パトリック:それは理にかなっています。始め-1と0に行く、あなたは適用することができ*3 +2 +1、必要な回数だけ、その後、適用さ+10に取得する
Deusovi

@Peter Fairの発言。正の数に制限されています。
nicael

回答:


1

Pyth- 26 24バイト

Pythには誤った順序で入力を取得するバグがあるようですが、それは問題ではありません。

/m.vj;+sdzs^Lc3"+1+2*3"S

テストスイート

1 10オンラインでタイムアウトしましたが、私のコンピューターで動作していました)。


タイムアウトしました、そのような小さい数で?ええと。
nicael 2016年

@nicaelええ、私がチェックする方法は59Kしかありません10が、pythはすごいです
Maltysen

6

JavascriptをES6、45の 44バイト

f=(a,b=B)=>a<(B=b)?f(a+1)+f(a+2)+f(a*3):a==b

実行例:

f(1,2)  -> 1
f(2,6)  -> 6
f(1 10) -> 84

1
デフォルトパラメータの興味深い使い方ですが、ここではバイトを節約していません。=B及び(B=)b目的上省略)6つの文字であり、代替が通過している,bにも6つの文字である再帰呼び出しに3回。とにかく、よくできました。
Patrick Roberts

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.