拉个超长火车,没有优化,暂时只是保证答案正确。
思路:构造两个函数
函数1:判断两个数,是否有位置和数字全对,有几个得到几;但凡有数字对、位置不对的结果为0。
函数2:判断两个数,是否有数字对、位置不对,有几个得到几;但凡有函数1中的情况,结果为0。
从1-999,根据题目条件遍历,得到满足条件的数值即为最终结果。
(好在没有出现两种同时具备,即既有数字和位置全对、又有位置不对但数字包含的情况 )
- =LET(Pz,LAMBDA(x,y,LET(saa,MID(x,TRANSPOSE(SEQUENCE(3)),1),sa,HSTACK(saa,saa,saa),sbb,MID(y,TRANSPOSE(SEQUENCE(3)),1),sb,HSTACK(sbb,sbb,sbb),ns,MAP(SEQUENCE(3,1,4,1),LAMBDA(x,N(INDEX(sa,,x)=INDEX(sb,,x))*(1-OR(INDEX(sa,,x-1)=INDEX(sb,,x),INDEX(sa,,x-1)=INDEX(sb,,x+1),INDEX(sa,,x+1)=INDEX(sb,,x),INDEX(sa,,x+1)=INDEX(sb,,x+2))))),SUM(ns))),
- Lz,LAMBDA(x,y,LET(saa,MID(x,TRANSPOSE(SEQUENCE(3)),1),sa,HSTACK(saa,saa,saa),sbb,MID(y,TRANSPOSE(SEQUENCE(3)),1),sb,HSTACK(sbb,sbb,sbb),ns,MAP(SEQUENCE(3,1,4,1),LAMBDA(x,IF(OR(INDEX(sa,,x)=INDEX(sb,,x),INDEX(sa,,x-1)=INDEX(sb,,x-1),INDEX(sa,,x+1)=INDEX(sb,,x+1)),0,N(INDEX(sa,,x)<>INDEX(sb,,x))*(OR(INDEX(sa,,x)=INDEX(sb,,x+1),INDEX(sa,,x)=INDEX(sb,,x-1)))))),SUM(ns))),
- Res,MAP(SEQUENCE(999),LAMBDA(y,(IF((Pz(y,762)=1)*(Lz(y,798)=1)*(Lz(y,247)=2)*(Lz(y,316)=0),y,1/0)))),
- TOCOL(Res,3))
复制代码
|