case class State
(a
: Int, b
: Int, sum
:Int, prod
:Int
)
val allPossibleStates
:Seq
[State
] = for { i <- 1 to 99;
j <- i to 99
} yield State
(i,j,i+j,i
*j
)
(1 to 7).foldLeft(allPossibleStates)( (states, _) =>
states
.groupBy(_.prod).filter(_._2.size > 1).flatMap(_._2)
.groupBy(_.sum).filter(_._2.size > 1).flatMap(_._2)
.toSeq
).groupBy(_.prod).filter(_._2.size == 1).flatMap(_._2)
.map(println)
}
b2JqZWN0IE1haW4gZXh0ZW5kcyBBcHAgewogIGNhc2UgY2xhc3MgU3RhdGUoYTogSW50LCBiOiBJbnQsIHN1bTpJbnQsIHByb2Q6SW50KQogICAgCiAgdmFsIGFsbFBvc3NpYmxlU3RhdGVzOlNlcVtTdGF0ZV0gPSBmb3IgewogICAgaSA8LSAxIHRvIDk5OwogICAgaiA8LSBpIHRvIDk5CiAgfSB5aWVsZCBTdGF0ZShpLGosaStqLGkqaikKICAKICAoMSB0byA3KS5mb2xkTGVmdChhbGxQb3NzaWJsZVN0YXRlcykoIChzdGF0ZXMsIF8pID0+ICAKICAgIHN0YXRlcwogICAgIC5ncm91cEJ5KF8ucHJvZCkuZmlsdGVyKF8uXzIuc2l6ZSA+IDEpLmZsYXRNYXAoXy5fMikKICAgICAuZ3JvdXBCeShfLnN1bSkuZmlsdGVyKF8uXzIuc2l6ZSA+IDEpLmZsYXRNYXAoXy5fMikKICAgICAudG9TZXEKICApLmdyb3VwQnkoXy5wcm9kKS5maWx0ZXIoXy5fMi5zaXplID09IDEpLmZsYXRNYXAoXy5fMikgICAKICAgLm1hcChwcmludGxuKQp9