马丁·恩德(Martin Ender)最近达到了10万,并提出了一些很棒的语言。我们将与其中之一Hexagony(以及Retina的正则表达式)一起玩得开心
作为简要概述,您需要编写一个程序来输入一个Hexagony网格,并确定该网格上是否存在与文本字符串匹配的路径
产生中
六边形使用以下步骤从一串文本生成六边形:
- 计算最小六边形大小(取字符串的长度并四舍五入到最接近的十六进制数)
- 将文本包装成上述大小的六边形
- 用填充其余位置
.
。
例如,文本字符串abcdefghijklm
需要边长为3的六边形,因此变为:
a b c
d e f g
h i j k l
m . . .
. . .
现在,请注意您可以沿六边形行驶的六个方向。例如,在上述六边形中,e
与相邻abfjid
。
包装纸
此外,在六角形中,六角形包裹:
. . . . . a . . . . f . . a . .
a b c d e . . b . . . . g . . . b . . f
. . . . . . g . . c . . . . h . . a . c . . g .
. . . . . . . . h . . d . . . . u . . b . . d . . h . .
f g h i j k . i . . e . . j . . c . e . . i . .
. . . . . . j . . f k . . d . . . j . .
. . . . . k . . . . e . . k . .
如果你看一下第2和第4个例子,通知如何a
和k
,在同一个地点,尽管事实上,你是在包装不同的方向。 由于这个事实,这些斑点仅与其他5个位置相邻。
为了使这一点更清楚:
a b c d
e f g h i
j k l m n o
p q r s t u v
w x y z A B
C D E F G
H I J K
- 边环绕到其相对的邻居(
b->I
和G->j
)。 - 顶/底角环绕到相对的中心角,然后向上/向下(
d->K,p
和H->a,v
)。 - 中心角同时包裹在顶部和底部(
v->a,H
)
路径
一条路径,将是一系列相邻位置,而不会返回到同一位置。
a b c
d e f g
h i f k l
m . . .
. . .
在上述六边形中,aefkgm
是有效路径。但是,abfd
它不是有效的路径(f
并且d
不相邻),并且abea
无效(返回a
位置)。
我们可以使用这些路径来匹配文本(例如regex)。字母数字字符匹配自己(并且仅匹配其自身),并且.
匹配任何字符。例如,路径aej..lgm
将匹配aej..lgm
,aejAAlgm
,aeja.lgm
,或aej^%gm
。
输入输出
您的程序应采用两个字符串(任何顺序)。第一个字符串将是非空的,并且仅由字母数字字符组成[a-zA-Z0-9]
。这将代表您正在操作的六角形。第二个字符串将由可打印字符组成。
如果六边形中有与给定文本字符串匹配的路径,则需要返回真实值,否则返回虚假值。
测试用例
真相:
"a","a"
"ab","a"
"ab","b"
"ab","ba"
"ab","aba"
"ab","&"
"ab","#7.J!"
"ab","aaaaaa"
"ab","bgjneta"
"ab","cebtmaa"
"abcdefg","dfabcg"
"AbCDeFG","GCbAeFD"
"aaaabbb","aaababb"
"abcdefghijklmnopqrs","alq"
"abcdefghijklmnopqrs","aqnmiedh"
"abcdefghijklmnopqrs","adhcgkorbefjimnqlps"
"11122233344455","12341345123245"
"abcdefgh","h%a"
"abcdefghijklm","a)(@#.*b"
"abcdefghijklm","a)(@#.*i"
"abcdefghij","ja"
"abcdefghijklmno","kgfeia"
"abcdefghijklmno","mmmmmiea"
"abcdefghijklmno","mmmmmlae"
"abcdefghijklmno","ja"
"abcdefghijklmnopqrs","eijfbadhmnokgcsrql"
虚假:
"a","b"
"a","%"
"a","."
"a","aa"
"a","a."
"ab","#7.J!*"
"ab","aaaaaaa"
"ab","aaaabaaa"
"ab","123456"
"abcdefg","bfgedac"
"abcdefg","gecafdb"
"abcdefg","GCbaeFD"
"aaaabbb","aaaaabb"
"abcdefghijklmnopqrs","aqrcgf"
"abcdefghijklmnopqrs","adhlcgknbeifjm"
"abcdefghijklmnopqrs","ja"
"abcdefghijklm","a)(@#.*&"
"abcdefghijklmno","a)(@bfeijk"
"abcdefghijklmno","kgfeic"
"abcdefghijklmno","mmmmmmiea"
这是一个代码问题,因此请使用您喜欢的语言使答案尽可能短。