この課題では、下にチェス盤を描き、動きを可能にします。
1.描画
白い正方形にはそれぞれ5x9のスペースがあります。
各黒い正方形には5x9のコロンがあります。
ボードはコロンの境界線に囲まれています。
ピースの幅は5文字で、中央の正方形の一番下の行にあります。
ポーンの幅は4文字です。中央から少し右にずれており、左側に3つの空白の正方形、右側に2つの空白の正方形があります。彼らは、正方形の底の1行上に座っています。
オプションの末尾の改行を除き、ボードの領域の外側に空白があってはなりません。
ボードとチェスマンは、以下を除き、示されているとおりに正確に描かれなければなりません。
あなたはsubsituteも
:
異なるシンボルのための黒い四角との国境で、あなたが置換してもよい@
異なるシンボルのための黒い部分での(黒い四角のために使用したのと同じものをではなく。)必要に応じて、ポーンを1文字左に移動できます。
。
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: ::::::::: :::www::: _+_ ::::::::: ::::::::::
: |_|_| :: _,,::: (/) :::)@(::: )@( :::(/)::: _,, ::|_|_|:::
: |@| ::"- \~:: |@| :::|@|::: |@| :::|@|::: "- \~ :::|@|::::
: |@| :::|@|::: |@| :::|@|::: |@| :::|@|::: |@| :::|@|::::
: /@@@\ ::/@@@\:: /@@@\ ::/@@@\:: /@@@\ ::/@@@\:: /@@@\ ::/@@@\:::
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::()::: () ::::()::: () ::::()::: () ::::()::: () :
:::::)(::: )( ::::)(::: )( ::::)(::: )( ::::)(::: )( :
::::/@@\:: /@@\ :::/@@\:: /@@\ :::/@@\:: /@@\ :::/@@\:: /@@\ :
:::::::::: ::::::::: ::::::::: ::::::::: :
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
: ::::::::: ::::::::: ::::::::: ::::::::::
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
:::::::::: ::::::::: ::::::::: ::::::::: :
: ::::::::: ::::::::: ::::::::: ::::::::::
: () ::::()::: () ::::()::: () ::::()::: () ::::()::::
: )( ::::)(::: )( ::::)(::: )( ::::)(::: )( ::::)(::::
: /__\ :::/__\:: /__\ :::/__\:: /__\ :::/__\:: /__\ :::/__\:::
: ::::::::: ::::::::: ::::::::: ::::::::::
:::::::::: ::::::::: www :::_+_::: ::::::::: :
:::|_|_|:: _,, :::(/)::: ) ( :::) (::: (/) :::_,,::: |_|_| :
::::| |::: "- \~ :::| |::: | | :::| |::: | | ::"- \~:: | | :
::::| |::: | | :::| |::: | | :::| |::: | | :::| |::: | | :
:::/___\:: /___\ ::/___\:: /___\ ::/___\:: /___\ ::/___\:: /___\ :
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
2.移動
列には、左から右にAH、下から上に1から8のラベルが付いています。ユーザーは、次の形式で移動を入力できる必要があります。
<start column><start row><space><destination column><destination row>
たとえばB1 C3
、ナイトを司教のポーンの前の広場に移動することを意味します(ゲームが始まったと仮定します)。
あるいは、ICCFシステムを使用することもできます。ICCFシステムでは、列にAからHの代わりに1から8のラベルが付けられます。したがって、上記のナイトの動きはになり21 33
ます。
次の画像(source)は、両方のシステムを明確にしています:
移動が実行され、新しいボードが表示されます。結果として生じる捕獲は、移動するチェスマンが目的の広場のチェスマンをボードから取り除くことで行われます。
それは、他の課題でカバーされているように法的なチェスの動きをチェックする必要はありません:最小のチェスプログラムと最小のチェスアービタは、ユーザーが空の角から移動しようとする場合は、あなたのプログラムや機能が動きを無視すべきです。ユーザーが友好的なピースをキャプチャしようとする場合、移動を無視するか、静止したピースのキャプチャを許可することができます。
通行人やキャスティングをサポートする必要はありません。
入力が適切に形成されている、つまり常に上記の形式であると仮定することができます。手紙は常に同じケースになります、あなたはそれがどのケースであるかを決めることができます。
3.スコアリングとボーナス
これはコードゴルフです。最短のコードが優先されます。
プログラムまたは機能がプロモーションを許可している場合、-10%のボーナス。ユーザーは3番目の入力、今度は次の文字のいずれかを入力します。QBRN。これは、移動が最後の行のポーンで終了する場合のみ許可されます。ポーンは、指定されたピースと交換されます。QBRN。
プログラムまたは機能が動きの反転のために特別な「元に戻す」動きを実装する場合、-10%のボーナス(必要に応じてゲームの開始までさかのぼります)。それらを元に戻します。この「元に戻す」動作のためにユーザーが入力する必要がある入力を定義できます(常に同じである必要があります)。ユーザーがゲームの開始を超えて元に戻す場合の動作は未定義です。
ボーナスの合計。つまり、両方のボーナスに行くと、-20%が得られます。