ほぼ等辺ヘロンの三角形は、フォームの整数長を有する三角形でありn-1
、n
およびn+1
また、整数面積を有しています。最初のいくつかは:
3, 4, 5 -> 6
13, 14, 15 -> 84
51, 52, 53 -> 1170
クエスト:そのn
ようなトリプルを出力する最短のプログラムを生成します。(ヒント:これは既知のシーケンスです)。
受賞者は2014年5月2日に選出されます。
ほぼ等辺ヘロンの三角形は、フォームの整数長を有する三角形でありn-1
、n
およびn+1
また、整数面積を有しています。最初のいくつかは:
3, 4, 5 -> 6
13, 14, 15 -> 84
51, 52, 53 -> 1170
クエスト:そのn
ようなトリプルを出力する最短のプログラムを生成します。(ヒント:これは既知のシーケンスです)。
受賞者は2014年5月2日に選出されます。
回答:
0 1 2+⌊⎕*⍨2+√3
alephalphaのソリューションと同じアプローチですが、修正項の代わりにフロアを使用します。
通勤オペレーターが1文字を節約することを指摘してくれたalgorithmsharkに感謝します。
(⍳3)
でcharを保存し0 1 2
ます。Commuteを使用してそれを作成し⎕*⍨2+√3
、別の文字を保存できると確信しています。
⍳3
もたらし1 2 3
、したがって、長い1つの文字です。
2 4@~{.4*@-}*;.(\.)]p
stdinで入力を受け取り、フォームでstdoutに出力します
[3 4 5]
シーケンスの0番目の要素は[1 2 3]
(領域0を持つ)であると仮定していることに注意してください。これはOEIS A003500と一致すると思います。
ハワードのおかげで3文字節約できました。
(.).)]
と、2文字短くなります。さらに、あなたが始めたら、あなたは2 4
それを置き換え\;
て;
追加のものを保存することができます。
2 4
扱っ[3 4 5]
ていたので、オフセットを活用する代替方法を見つけられなかったことに恥ずかしいです。ありがとう。
9k3v2+?^0k1/p1+p1+p
これは、@ HowardのAPL回答と同じトリックを使用するため、1つの用語のみを計算する必要があります。stdinからnの入力を受け取ります。
出力:
$ dc -e '9k3v2+?^0k1/p1+p1+p' <<< 1
3
4
5
$ dc -e '9k3v2+?^0k1/p1+p1+p' <<< 2
13
14
15
$ dc -e '9k3v2+?^0k1/p1+p1+p' <<< 3
51
52
53
$
Pythonでの非常に冗長な実装
[(a-1,a,a+1)for a in(int((2+3**.5)**t+(2-3**.5)**t+.1)for t in range(N))][-1]
N
値に置き換えることになっていますか?プログラムは入力を求めません。
3,3mq))ri#if+p
CJamの最初のバージョンはこのチャレンジよりも10日古いですが、使用しているすべての機能が当時存在していたかどうかはわかりません。とにかく、チャレンジは公式に閉じられているので...
3mq e# Push √3.
)) e# Increment twice.
ri e# Read input and convert to integer.
# e# Raise 2+√3 to that power.
i e# Convert to integer, truncating the result.
3, e# Push [0 1 2]
f+ e# Add the previous number to each of these.
p e# Pretty-print the result.