宝石を数える
バックグラウンド
宝石箱が落ちた!地面にさまざまな形の宝石が多すぎます。そして、あなたの仕事は、特定の種類の宝石の数を数えることです。
I / O
- コードは2つの入力
S
とを受け取る必要がありますG
。これは、改行を含む文字列、行の配列、文字の2次元配列、テキストファイル、または適切な形式の場合があります(そうであれば、明記してください)。 - これらの2つの文字列には、
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
(ASCIIテーブルの0x21
to から0x7E
)、スペース、および改行(プラットフォームに応じてバイナリ形式)のみが含まれます。 - 各文字列では、行は同じ長さです。
S
数えたい宝石です。2つの状況があります。- 囲まれ、ネストされた囲まれた領域を含みません。(例では1/2)
- 囲まれた領域は含まれません。(例3/4)
- 周囲の空間は宝石の一部とは見なされません。
G
地面にある宝石の形です。- それはあなたのコードがの寸法(複数可)を指定するために余分な入力を必要とすることが可能です
S
し、G
- コードが文字自体ではなく、ASCII値を入力として受け取ることは許容されます。ただし、文字をより単純な整数(0、1、2、3)に置き換えないでください。プログラムは、文字またはASCII値を処理できる必要があります。
例1(入力としての文字)
入力S
:
+-+
| +-+
| | |
| | |
| +-+
+-+
入力G
:
+-+ +-+
| +-+ +-+ |
| | | | | |
| | | | | |
| +-+ +-+ |
+-+ +-+
+-+
+---+ | +-+
| | | | |
| | | | |
| | | +-++
| | +-+| +-+
+---+ | | |
| | |
+-+ | +-+
| +-+ +-+
| |-|
| |-|
| +-+
+-+
アウトプット:
2
例2(入力としてのASCII値)
入力S
:
32 32 32 32 32 32 32 32
32 32 32 32 99 32 99 32
32 32 32 99 32 99 32 99
32 32 32 99 32 32 32 99
32 32 32 99 32 32 32 99
32 32 32 99 32 32 32 99
32 32 32 32 99 32 99 32
32 32 32 32 32 99 32 32
32 32 32 32 32 32 32 32
入力G
:
32 99 32 99 32 99 32 99 32 32 99 32
99 32 99 32 99 32 99 32 99 99 32 99
99 32 32 32 99 32 32 32 99 32 32 99
99 99 32 32 99 32 32 32 99 32 32 99
99 32 32 32 99 32 32 32 99 32 32 99
32 99 32 99 32 99 32 99 99 32 99 32
32 32 99 32 32 32 99 32 32 99 32 32
出力:
1
視覚化S
(32を-に置き換え):
-- -- -- -- -- -- -- --
-- -- -- -- 99 -- 99 --
-- -- -- 99 -- 99 -- 99
-- -- -- 99 -- -- -- 99
-- -- -- 99 -- -- -- 99
-- -- -- 99 -- -- -- 99
-- -- -- -- 99 -- 99 --
-- -- -- -- -- 99 -- --
-- -- -- -- -- -- -- --
視覚化G
:
-- 99 -- 99 -- 99 -- 99 -- -- 99 --
99 -- 99 -- 99 -- 99 -- 99 99 -- 99
99 -- -- -- 99 -- -- -- 99 -- -- 99
99 99 -- -- 99 -- -- -- 99 -- -- 99
99 -- -- -- 99 -- -- -- 99 -- -- 99
-- 99 -- 99 -- 99 -- 99 99 -- 99 --
-- -- 99 -- -- -- 99 -- -- 99 -- --
例3(同封されていません)
@ Draco18sに感謝
入力 S
AB
入力 G
AAB BA CAB
出力
2
例4(囲まれていない2D)
入力 S
ABCD
GE
F
入力 G
ABCD
BGGED
CDEFE
F
出力
1
備考
- 正確に1つの形状の2つの宝石のみが同じと見なされます。
- 異なる方向の同じ形状は同じとは見なされません。
- ただし、例のI / Oで説明されているように、オーバーラップは可能です。このような状況では、完全なものだけがカウントされます。
+
、-
および|
例では特別な意味はありません。形状の角やエッジを示すものではありません。- 入力は常に有効であると想定できます。
- 2つのターゲット宝石がまったく同じエッジを共有することはないと仮定する場合があります。
- 標準の抜け穴は禁止されています。
- これはコードゴルフなので、最短のコードが勝ちます!
@LiefdeWen私はそれを視覚化しました、あなたは
—
Keyu Gan 2017
S
の真ん中に見つけるかもしれませんG
。
私は、次のような、いくつかの単純な例が、ここで必要とされていると思う
—
Draco18sはSEを信頼しなくなりました2017
S = "AB"
、G=" AAB BA CAB"
と、出力=?
@ Draco18sありがとう、追加します。
—
Keyu Gan 2017
この単純な例は、望ましい動作を理解するのに役立ちました。クール
—
Draco18sがSEを信頼しなくなった2017
G
内に含まれますかS
?