直定規とコンパスのみが与えられた場合、与えられた長方形の内側に菱形を刻み、2つの反対の点を共有します。
入力
入力は長方形の寸法です。示されている例では、それはになります125, 50
。最も便利な方法(2つの整数、リスト、文字列など)で入力を受け取ることができます。
大きい方の寸法は最小100で、小さい方の寸法は最小25です。両方のキャップは200です。
出力
出力は、画面に表示されるかファイルとして保存される画像です
- 入力長方形
- すべての「作業」線/円
- 刻まれた菱形
異なる色で。上の画像では、長方形は黒、作業線は青、菱形はオレンジです。線はリストに表示されている順序で描画する必要があります(たとえば、菱形は作業線と長方形を上書きします)。
出力画像は、すべてを含むのに十分な大きさである必要があります。たとえば、表示されている円は範囲を超えることはできません。
方法
上記の画像例で使用されている方法は次のとおりです。
- 左下隅を中心として、右上を境界上の点として使用して円を描き、長方形の対角線に等しい半径を与えます。
- 同じことを行いますが、中心点と周辺点を交換します。
- 2つの円の交点の間に線を引き、長方形の対角線に垂直な二等分線を与えます。
- 新しい線と長方形の交点を使用して、菱形を描きます。
これは、菱形の内部の対角線が常に互いに垂直に二等分するために機能します。ただし、このことの完全な証拠はここには含めません。
これが菱形を取得する唯一の方法ではなく、あなたが何をしているのかを説明すれば、別の菱形を使用することもできます。おそらく最も簡単だと思います。
ルール
円と線(または線分)のみを描画できます。円は、中心点と周辺点で定義されます。線は任意の2点で定義されます。線は、指定された長さである必要はありませんが、少なくとも定義点をカバーする必要があります(例の画像に注意してください:線は円の交差点を少し過ぎますが、端までは行かない)。円の場合、中心から選択した境界点までの半径は作業線と見なされ、表示する必要があります。
行をラスタライズするには、認識されたアルゴリズム(Bresenhamなど)を使用するか、言語に組み込まれているものに依存します。出力がベクトルベースの場合、少なくともピクセル単位の入力矩形と同じ大きさの解像度で表示されることを確認してください。また、プレーンキャンバスに描画するため、グリッドマークや無関係な出力を抑制してください。
不正行為はありません!これまでに設定したものを使用してのみ、ポイント/ライン/円の配置を決定できます。作業線/円を使用して菱形であることを示す方法を説明できない場合、それは間違っています。
必要な反対のポイントのペアを使用でき、出力が正しい限り、長方形を軸に沿って描画する必要はありません。
入力は常に非正方形の長方形になりますので、特別な場合は心配しないでください。
最後に、これは標準コードゴルフであるため、バイト単位の最小サイズが優先されます。