種子から島の輪郭を生成する[終了]


8

課題は、シードを入力として使用して生成された「島」の輪郭を描くことです。

  • 入力(シード):小文字のみを許可する(正確に)6文字の文字列(つまり、abcdefghijklmnopqrstuvwxyz)-例: 'island'、 'aaaaaa'、 'jhgcfj'
  • 各シードは固有の島を提供します(つまり、2つのシードが同じ出力を提供することはありません)
  • 出力は、別のシードの出力の変換ではありません。それは、平行移動、反射、回転、スケーリング、またはそれらの任意の組み合わせです。
  • 同じシードを使用すると、常に同じ出力が得られるはずです
  • 出力:600px x 600px画像

有効な島は、次の1本の線を使用して描画されます。

  • 閉ループを形成します
  • 厚さ1pxで、スムージング、ぼかしなどはありません。
  • 連続的です(つまり、ピクセルを描画した後、次のピクセルは、占有されていない8つの隣接スペースの1つになります)
  • どの点でも交差しない
  • 画像の境界を残しません
  • 黒(#000)、白(#FFF)の背景
  • 反射対称の線がありません
  • 空白を囲む必要があります

ソースコードには500バイトの制限があります。

それとは別に、人気が決定します。ほとんどの票が勝つ。


6
この場合、人気コンテストは不完全な仕様のカバーとして使用されていると思います。私はあなたがここで何かに取り組んでいると思います-入力としてシードを必要とし、出力として何かクールなものを必要とする多くの課題を見たことがありません。本当に仕事が必要なのは「特定の基準はない」ということです。コミュニティの助けを借りて、確かな基準を決めたい場合は、質問をサンドボックスに投稿できます。
Rainbolt 2014

2
これは広すぎるようで、プログラミングコンテストというよりもアートコンテストです。現状では、色の塊を生成するほとんどすべてのコードは、「島」として販売できます。
マーティンエンダー2014

1
ゲーム用の多角形マップ生成からインスピレーションを得るかもしれません。プロセス全体が少し広すぎるかもしれませんが、それを絞り込むことができます。
Rainbolt 2014

3
私はこの質問が好きです!まだ仕様について話し合っているようですので、他の人に答えられないようにするために投票を終了しました。この質問はサンドボックスの恩恵を受けることができたかもしれませんが、私たちはまだそれを改善して再び開くことができると思います。
hmatt1 2014

2
@chilemagicは他の人の考えを気にしないで、あなたはどう思いますか?「島を描く」という質問の本質は主観的なものだと思います。人々は現実的な島を描く短いコードに投票する可能性があります(コードゴルフの場合、誰かが星を描き、人々はそれが島のように見えないことに不満を言うでしょう)。特定のグラフィカルな質問例外を設ける必要があると思います。
Level River St

回答:


3

BBCベーシック

これは非常に単純なアルゴリズムで、より現実味を高めるために改良することができます。ルールにさらに変更がある場合は、変更または削除します。

6文字の文字列を取り、}@非対称性を確保するために追加します(この特定の文字の選択により、漠然と南極に似た島が得られます)。

ASCIIコードによって決定される中心からの距離で、45度の間隔で8点を結ぶ線を描きます。

  INPUT a$
  a$=a$+"}@"
  MOVE 364,300
  FOR i=1 TO 8
    r=4*ASC(MID$(a$,i))-192
    DRAW 300+r*COS(i*PI/4),300+r*SIN(i*PI/4)
  NEXT

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


2
@BetaDecay Black-on-whiteは仕様で必須です。
地下

お互いのバリエーションである出力はまだあります-@} zzaaと@} aazzはお互いの反映です
誇りに思っているハスケラー

1
@proudhaskeller @および}は、入力では許可されていません。これが、プロットの前に入力に追加するために選択された理由です。
レベルリバーセント

0

アルゴイド

Algoidは、LOGOまたはTurtleに類似した言語であり、ほぼ完全にグラフィックスに基づいています。

algo.hide()
algo.setBgColor(15)
algo.setStroke(1)
algo.setColor(0)
algo.goTo(-400,100)
set seed="put seed here".lower()
set letters = "abcdefghijklmnopqrstuvwxyz"
set sides=seed.length()
for (set i=0;i<sides-(sides/6);i++) {
    set letter = seed.getChar(i%seed.length())
    set value = letters.indexOf(letter)*5
    set turn = 360/seed.length()
    algo.go(math.sin(value)*(1500/seed.length()))
    algo.turnRight(turn)
}
algo.lineTo(-400,100)

シード: supercalifragilisticexpialiadocious even though the sound of it is rather quite atrocious

シード: islands in the stream

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