カーブステッチ


8

カーブステッチは、次のようにカーブを作成するために複数の直線を「ステッチ」するプロセスです。

Imgur

カーブステッチの説明については、このWebサイトにアクセスしてください

上の画像に示すように、画面の左上に曲線を描画します。

整数所与n描画する線の数である(STDINまたは関数パラメータを介して)、および整数p画素、出発点の間隔である、直線カーブを描きます。

水平/垂直線が必要であり、行数の一部である必要があります。


出力例:

n = 25、p = 15

Imgur

n = 20、p = 20

Imgur


これは挑戦なので、最短のコードが勝ちます。


そうそう!ドー…
ジェームズウィリアムズ

曲線は実際には放物線です。どこで読んだか思い出せない。私がペダントだったら、それは「直線曲線」ではなく、直線から構築された曲線の近似であると指摘します:-)
Level River St

@Martinうん、ピクセル。
ジェームズウィリアムズ

@Martinウィンドウの境界線が線を構成するため、水平線は必要ありません。
James Williams 14

2
ああ、私はクラスで退屈しているときに私が楽しみのためにこれをやっていました...他の人がまったく同じことをしたことを知りませんでした!
Claudiu 2014

回答:


5

Mathematica、55 51 50 47 64 68バイト

f=Graphics[Line@Table[#2{{i-1,#+1},{0,i+1}},{i,#}],ImageSize->#*#2]&

のように呼び出されたときに指定されたとおりに画像を生成する関数を定義します

f[25,15]

降伏

ここに画像の説明を入力してください

編集:2番目のパラメーターが実際にピクセルとして解釈されたことを確認するために、いくつかの文字を追加する必要がありました。

編集:水平線をプロットするためにさらに4バイト。


4

パイソン-74

質問は単位、軸のスケーリングなどを指定していないので、私は次の最小の解決策を考え出します:

import pylab
n,p=input()
for i in range(n):pylab.plot([0,i*p],[(i-n)*p,0])

ここに画像の説明を入力してください


単位と軸のスケーリングを無視して、最小のソリューションは*p;)を省略して4文字を節約します。また、水平線や垂直線を追加していないのですか?これらは出力例にはありません。最後に、最初の座標を2番目の座標ではなく水平方向にオフセットする方が短いことに気付きました(-括弧と括弧を保存できるため)
Martin Ender

2
(質問では、単位をピクセルとして指定しています。)
Martin Ender

3

Bash + Imagemagick + xview、124バイト

for((;i<$1;));{
s+=" -draw 'line $[i*$2],0 0,$[($1-i++)*$2]'"
}
eval convert -size $[$1*$2]x$[$1*$2] xc:$s png:-|xview stdin

の出力./curvestitch.sh 25 15

ここに画像の説明を入力してください


注意しないと、コマンドラインの最大長をオーバーフローしてしまいました。いい

2

Perl、 121 130バイト

入力はを介しSTDINます。値はコンマ区切りです。

編集:新しいルールがあります。理由はわかりませんが、最初の2つのピクセルが表示されず、オフセットを追加する必要がありました...

use Tk;<>=~/,/;$c=tkinit->Canvas(-width=>$w=$`*$'-$',-height=>$w)->pack;$c->createLine(2,2+$_*$',2+$w-$_*$',2)for 0..~-$`;MainLoop

ここにいくつかのテストがあります:

25x15:

25x15

6x72:

6x72


2

BBC Basic、58 ASCII文字、トークン化されたファイルサイズ49

INPUTn,p:p*=2FORi=1TOn:MOVEi*p-p,974DRAW0,974-(n-i)*p:NEXT

エミュレータをhttp://www.bbcbasic.co.uk/bbcwin/bbcwin.htmlからダウンロードします

p*=2 デフォルトモードでは、BBCベーシックは2x2の論理正方形を単一の物理ピクセルにマッピングするため、必要です。

BBCベーシックでは、画面の左下隅に原点があり、y座標が上に向かっています。私のマシンでは、デフォルトのウィンドウの上部y座標は974です(実際のものとは異なる場合があります)。画面の左下隅にプロットすることが許可されていれば、7文字を保存できます。MODE16最初の後に追加する:と、ウィンドウのサイズが変更され、上部のy座標が799になることが保証されます。

ここに画像の説明を入力してください


これは急速に危険なゴルフ言語になりつつあります。CJamだれ?
Soham Chowdhury 2014

1

HTML + JavaScriptの155 157 183

編集:機能を損なうことなく、私が何をカットできるかを学ぶ
編集2:@Optimizerの提案どおり

<canvas id='c'/><script>
p=prompt,s=p(l=p(t=c.getContext("2d")));for(c.width=c.height=y=s*l,x=0;l--;x-=s)t.moveTo(0,y-=s),t.lineTo(-x,0);t.stroke()
</script>

Fiddle最初の入力行数、2番目の入力ピクセル間隔

アンゴルフドフィドル


l = p(s = p(t = c.getContext( "2d")))
オプティマイザー

@Optimizerコンテキストを取得する前に幅と高さを設定する必要があると思います
edc65

1
いいえ、これは機能します:jsfiddle.net/6ke43m7c/10
オプティマイザ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.