多項式を見つける


20

fは、非負の整数係数を持つ多項式であることを知っています。

与えられたf(1)f(1 + f(1))はfを返します。fを係数のリスト、ASCII形式の多項式などとして出力できます。

例:

f(1)  f(1+f(1))  f
0     0          0
1     1          1
5     75         2x^2 + 3
30    3904800    4x^4 + 7x^3 + 2x^2 + 8x + 9
1     1073741824 x^30

1
ランダム質問:私は今これを反証/証明しようとするには余りにも疲れているが、それは、我々は常にから答えを得ることができることを保証されているf(1)f(1+f(1))
ハイパーニュートリノ

4
@HyperNeutrinoそうでなければこの挑戦はしなかったでしょう。
orlp

そうです、それは良い点です。ふむ 興味深いことに、私はそれが非常に興味深いので、明日それを証明することを検討します。興味深いチャレンジをありがとう!
ハイパーニュートリノ

1
ベースコンバージョンタグはヒントことになっていますか?
サンダ

9
これはかわいいパズルですが、基本的にはコードは基本変換だと思います。おそらくだまされていますか?
-xnor

回答:


27

ゼリー、3バイト

‘b@

オンラインでお試しください!

多項式を係数のリストとして返します。

多項式には非負の整数係数があることがわかっているため、f(b)は、基底の定義により、「基底b桁の多項式の係数」として解釈できます。これは、いずれの係数もbを超えない、または等しいという条件に従いますが、bは係数の合計(f(1))よりも1大きいため、それを知っています。

プログラムは、最初の引数()をインクリメントして1 + f(1)を取得bし、最初の引数を基数とし、2番目の引数を数としてベース変換アトム()を呼び出します(引数@の順序を入れ替えるために使用し、以降b)は、通常、最初の数と基地秒かかります。

これは非常に巧妙な挑戦でした。ありがとうorlp!


13
これはどのように可能ですか
Thunda

ゼリーを学ぶ必要があります
...-sagiksp

デニスはこれを必ず見なければなりません。
エリックアウトゴルファー

6

Mathematica、29 28バイト

1バイト節約してくれたJungHwan Minに感謝します!(皮肉なことに、Max

#2~IntegerDigits~Max[#+1,2]&

2つの非負整数を取り、(非負整数)係数のリストを返す純粋な関数。DoorknobのJelly answer#2~IntegerDigits~(#+1)と同じアルゴリズムになります。残念なことに、IntegerDigitsベースが1に等しいとMathematicaのチョークが発生するため、余分なバイトが必要になりますMax[...,2]


2
ハハ、いいね。
ジョンファンミン


3

VBA、75バイト

Sub f(b,n)
b=b+1
Do While n>0
s=n Mod b &" " &s
n=n\b
Loop
Debug.?s
End Sub

自動的にフォーマットされると、次のようになります。

Sub f(b, n)
    b = b + 1
    Do While n > 0
        s = n Mod b & " " & s
        n = n \ b
    Loop
    Debug.Print s
End Sub

\オペレータは、フロア分割あります


1

AHK、63バイト

a=%1%
b=%2%
a+=1
While b>0
{s:=Mod(b,a) " "s
b:=b//a
}
Send,%s%

AutoHotkeyは、着信パラメーターの変数名として1〜nの番号を割り当てます。関数でこれらを使用しようとすると、1 という名前の変数ではなくリテラル番号1を意味すると考えているため、いくつかの問題が発生します。


1

Java、53バイト

a->b->{while(b>0){System.out.println(b%-~a);b/=a+1;}}

係数のリストを出力します。数学のovsに感謝します。

発現は、に割り当てなければならないFunction<Integer, IntConsumer>第によって呼び出されapply、その後、関数をINGのacceptINGのint。Java 9の場合、インポートは不要ですjshell

C:\Users\daico>jshell
|  Welcome to JShell -- Version 9-ea
|  For an introduction type: /help intro

jshell> Function<Integer, IntConsumer> golf =
        a->b->{while(b>0){System.out.println(b%-~a);b/=a+1;}}
golf ==> $Lambda$14/13326370@4b9e13df

jshell> golf.apply(30).accept(3904800)
9
8
2
7
4

1

Common Lisp、87バイト

(defun p(x y)(multiple-value-bind(q m)(floor y (1+ x))(if(= 0 q)`(,m)`(,m ,@(p x q)))))

ゴルフをしていない:

(defun find-polynomial (f<1> f<1+f<1>>)
  (multiple-value-bind (q m)
      (floor f<1+f<1>> (1+ f<1>))
    (if (zerop q) `(,m)
      (cons m (find-polynomial f<1> q)))))

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