与元素周期表玩拼字游戏


13

您已经从元素周期表中获得了一组带有符号的图块。每个符号出现一次。您正在思考要说的话,但您想知道是否可行。

挑战

用您喜欢的语言编写一个程序,该程序将字符串作为输入参数。您可以假定输入不为null,没有空格并且由ASCII字符组成。

如果该单词可以由元素周期表中的符号组成,则程序应使用该字符串并输出一个真值,如果该单词不能,则输出一个假值。

为了使这个挑战更加困难,您不能两次使用符号。因此,如果您使用氮气N,则可能无法N再使用同一单词。

规则

不允许出现标准漏洞。您可以使用元素1-118(氢到Un)中的符号。您可以在此处找到所有元素的列表。您可以根据需要从文件中读取符号列表或输入自变量。

测试用例:

Laos - true (LaOs)
Amputation - true (AmPuTaTiON)
Heinous - true (HeINoUS)
Hypothalamus - true (HYPoThAlAmUS)
Singapore - true (SiNGaPoRe)
Brainfuck - true (BRaInFUCK)
Candycane - false

这是一场代码挑战赛,最短的代码胜利。

关闭之前:尽管这看起来与此挑战相似,但我感觉有所不同,因为它不是“从周期表中生成所有可能出现的所有单词的列表”,而是“接受任意输入并确定是否它可以由元素周期表制成


2
有一些与密切相关,但由于与您链接的挑战相同而已被关闭。我认为您只能使用一个符号这一事实是挑战之间最大的区别。在打高尔夫球方面,我怀疑有没有比暴力破解所有可能的单词并检查输入内容是否更好的方法。
Martin Ender

1
“如果愿意,您可以从文件中读取符号列表。” -我们怎么算呢?是否将文件大小添加到代码长度中?或者我们可以免费使用它?
Qwertiy

2
我们可以将元素列表作为程序的参数吗?
Emigna

1
@Qwertiy,文件的大小是可用的,但读取文件的字节不是。
JamesENL

9
硼,镭,碘,氮,氟,铀,碳,钾。
尼尔

Answers:


3

05AB1E,16字节

œvyŒ€J})˜Ùvy²Q}O

解释

œv                # for each permutation of the list of elements
  yŒ              # get all sublist of elements
    €J            # join as strings to form the words possible to spell
      })˜Ù        # convert to list of unique spellable strings
          vy²Q}   # compare each word with input word
               O  # sum giving 1 if the word is found, else 0

警告:极慢。我建议对在线解释器中较小的元素子集进行测试。

将元素列表作为第一个参数。
以单词测试作为第二个参数。
返回1表示true,0表示false。

在线尝试一小部分元素


3

Brachylog,7个字节

spc~@l.

以符号列表(全部为小写字母)作为输入,以单词作为输出进行调用,例如run_from_atom('spc~@l.', ["he":"n":"o":"li"], "Nohe").

警告:当所有符号都在列表中时,这是非常无效的。

说明

spc        Create a string from a permutation of a subset of the Input
   ~@l.    This string can unify with the lowercase version of the Output

4
@Downvoter关心解释吗?
致命

1

JavaScript(Firefox 48或更早版本),103字节

f=(w,e=`
H
He
... (list of elements not included in the byte count) ...
Uus
Uuo
`)=>!w||e.match(/\w+/g).some(s=>!w.search(s,`i`)&&f(w.slice(s.length),e.replace(`
${s}
`,`
`)))

1

Pyth-13个字节

只需检查小写输入的任何分区是否具有周期表中的所有部分。

sm.A}RQd./rzZ

在移动设备上,因此无法设置实际的测试套件,但是请尝试


1
您是在手机上写的!?
JamesENL

这不能确保一个元素不会被多次使用。例。
PurkkaKoodari

1

Pyth,11个字节

s}RySQSM./z

在线尝试。 测试套件。

写在我的手机上,但应该可以。对于大量元素或长字符串,速度非常慢。

说明

  • ./输入(z)的所有分区()。
  • S每个分区(M)排序()。
  • 对于每个分区(R),请查看其是否在(})作为输入()给出y的已排序(S)周期表的所有子集()的列表中Q
  • 对(s)布尔结果列表求和。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.