Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Scala中ArrayBuffer[string]元素的排列创建字符串_String_Scala_Permutation_Arraybuffer - Fatal编程技术网

从Scala中ArrayBuffer[string]元素的排列创建字符串

从Scala中ArrayBuffer[string]元素的排列创建字符串,string,scala,permutation,arraybuffer,String,Scala,Permutation,Arraybuffer,我有 我试图制作一个字符串,这样: val a: String = "E" val y: ArrayBuffer[String] = new ArrayBuffer("I", "G", "S") “(E(I | G | S))&(~I | ~G)&(~I | ~S)&(~G | ~S) 目前,对于字符串的第一部分(第一个子句)(E(I | G | S)),我有以下功能: "(E <=> (I | G | S)) & (~I | ~G) & (~I | ~S) &a

我有

我试图制作一个字符串,这样:

val a: String = "E"
val y: ArrayBuffer[String] = new ArrayBuffer("I", "G", "S")
“(E(I | G | S))&(~I | ~G)&(~I | ~S)&(~G | ~S)
目前,对于字符串的第一部分(第一个子句)
(E(I | G | S))
,我有以下功能:

"(E <=> (I | G | S)) & (~I | ~G) & (~I | ~S) & (~G | ~S)"
s“($a(${y.mkString(“|”))”/&(~${y.mkString(“|”)})”
对于第二部分,元素在
y
中的排列在哪里,即对于
(~i| ~G)&(~i| ~S)&(~G| ~S)
,我如何改进(修复)注释中的部分以创建它

我试图使用
y.permutations
,创建另一个字符串,然后与这个字符串连接,但是它可以在这里以某种方式“生成”到同一个字符串中吗


谢谢。

从你的例子来看,你需要的是组合,而不是排列

因此,要为
y
中的每一对元素创建一个术语,可以使用
combinations
方法找到长度2的所有组合。然后可以将每一对元素以必要的格式包装在括号中,最后使用
mkString
构建整个第二部分:

s"($a <=> (${y.mkString(" | ")}))" // & (~${y.mkString(" | ~")})"
可以将此表达式集成到字符串插值中:

y.combinations(2).map { case Seq(a, b) => s"(~$a | ~$b)" }.mkString(" & ")
s“($a(${y.mkString(“|”)和${
y、 组合(2).map{case Seq(a,b)=>s“(~$a | ~$b)”}.mkString(&“)}”

是的,这正是我想要达到的结果。我远远没有这样做:/。非常感谢你——我是认真的!
s"($a <=> (${y.mkString(" | ")})) & ${
  y.combinations(2).map { case Seq(a, b) => s"(~$a | ~$b)" }.mkString(" & ")}"