퀴즈
[퀴즈_24] 섞인 단어 찾기
문제1: 철자를 섞어놨습니다. 원래의 영단어를 왼쪽의 영단어목록에서 찾아주세요
문제2: 영단어 3개가 섞인 문자열에서 3단어를 찾기입니다.
풀이도구 : m365, 파이썬, vba, 스크립트.... 그외 기타등등 할수 있는 모든 방법으로..

(영단어 아래의 adventure에 뒷부분에 공백있었으니 체크해보세요..지금은 수정했습니다.)
문제2 풀만하네요.. 좋은 문제임..^^
문제2: 영단어 3개가 섞인 문자열에서 3단어를 찾기입니다.
풀이도구 : m365, 파이썬, vba, 스크립트.... 그외 기타등등 할수 있는 모든 방법으로..
(영단어 아래의 adventure에 뒷부분에 공백있었으니 체크해보세요..지금은 수정했습니다.)
문제2 풀만하네요.. 좋은 문제임..^^
마
삐
황
오
더
댓글 14
두번째 문제를 대강 3차원 배열로 만들어 풀려다가 Excel이 계산을 하다 죽어 버려서...
목록을 축약해서 처리했습니다. 위 람다 함수를 동일하게 사용했습니다.
=LET(o,E25,a,B3:B52,b,DROP(a,1),c,DROP(a,2),l,TOCOL(TOCOL(a&","&TRANSPOSE(b))&","&TRANSPOSE(c)),d,SUBSTITUTE(l,",",""),f,LAMBDA(tt,CONCAT(SORT(MID(tt,SEQUENCE(LEN(tt)),1)))),v,MAP(d,LAMBDA(t,f(t))),XLOOKUP(f(o),v,l))
콤비조합으로 해결해보았습니다 ㅎㅎ
데이터전체로 조합하지말고 가능한 글자들로 조합하면 훨훨 빨라질겁니다..
더블유에이님 map 보고 정리해보았습니다. 🤣 이제 map만 써야쥐~~ㅎ
마법의손님 항상 감사합니다.~
시간이 없어서 최적화를 못했어요...
=LET(T,E26,fN,LAMBDA(d,MAP(UNIQUE(SORT(MID(d,SEQUENCE(LEN(d)),1))),LAMBDA(r,CONCAT(REGEXEXTRACT(d,r,1,1))))), La,$B$3:$B$52,Ta,CONCAT(fN(T)),PTa,MAP(La,LAMBDA(r,CONCAT(fN(r)&".*"))), FLa, FILTER(La,REGEXTEST(Ta,PTa)), Lb, UNIQUE(TOCOL(MAKEARRAY(ROWS(FLa),ROWS(FLa),LAMBDA(r,c,TEXTJOIN(",",,SORT(VSTACK(INDEX(FLa,r),INDEX(FLa,c)))))))), Tb, CONCAT(fN(Ta&",")), PTb, MAP(Lb, LAMBDA(r, CONCAT(fN(r)&".*"))), FLb, FILTER(Lb,REGEXTEST(Tb,PTb)), FSb, UNIQUE(MAP(FLb, LAMBDA(r, TEXTJOIN(",",,SORT(TEXTSPLIT(r,,",")))))), Lc, UNIQUE(TOCOL(MAKEARRAY(ROWS(FSb),ROWS(FLa),LAMBDA(r,c,TEXTJOIN(",",,SORT(VSTACK(INDEX(FSb,r),INDEX(FLa,c)))))))), Tc, CONCAT(fN(Tb&",")), PTc, MAP(Lc, LAMBDA(r, CONCAT(fN(r)&".*"))), FLc, FILTER(Lc,REGEXTEST(Tc,PTc)), FSc, UNIQUE(MAP(FLc, LAMBDA(r, TEXTJOIN(",",,SORT(TEXTSPLIT(r,,",")))))), Ld, UNIQUE(TOCOL(MAKEARRAY(ROWS(FSc),ROWS(FLa),LAMBDA(r,c,TEXTJOIN(",",,SORT(VSTACK(INDEX(FSc,r),INDEX(FLa,c)))))))), Td, CONCAT(fN(Tc&",")), PTd, MAP(Ld, LAMBDA(r, CONCAT(fN(r)&".*"))), FLd, FILTER(Ld,REGEXTEST(Td,PTd)), FSd, UNIQUE(MAP(FLd, LAMBDA(r, TEXTJOIN(",",,SORT(TEXTSPLIT(r,,",")))))), Le, UNIQUE(TOCOL(MAKEARRAY(ROWS(FSd),ROWS(FLa),LAMBDA(r,c,TEXTJOIN(",",,SORT(VSTACK(INDEX(FSd,r),INDEX(FLa,c)))))))), Te, CONCAT(fN(Td&",")), PTe, MAP(Le, LAMBDA(r, CONCAT(fN(r)&".*"))), FLe, FILTER(Le,REGEXTEST(Te,PTe)), FSe, UNIQUE(MAP(FLe, LAMBDA(r, TEXTJOIN(",",,SORT(TEXTSPLIT(r,,",")))))), FSe)와~~ 빠르게 찾네요 b^^). 반복 줄이는건 나중에 시간날 때 하면 되죠.
이번에도 다른 변수가 없다면 원조백수님 수식 채택이네요^^
같은 이유로 i가 1개인 consultant,explosion,technology와 i가 2개인 explosion,population,technology를 구별하지 못한 것입니다.
COMBIN.ITEMS는 UDF인가요
이번에도 역시나 많은 깨우침을 주시네요. 감사합니다.
=LET(섞인문자열,E25, 조합단어수,3, tlen, LEN(섞인문자열), sf, LAMBDA(wd, CONCAT(SORT(MID(wd, SEQUENCE(LEN(wd)), 1)))), sfword, sf(섞인문자열), wsf, LAMBDA(wd, TEXTJOIN("*", 1, SORT(MID(wd, SEQUENCE(LEN(wd)), 1)))), 가능한단어, FILTER($B$3:$B$52, MAP($B$3:$B$52, LAMBDA(m, ISNUMBER(SEARCH(wsf(m), sfword))))), 단어조합필터, LAMBDA(단어목록, LET( 조합, TOCOL( IF(단어목록<TOROW(가능한단어), 단어목록 & "*" & TOROW(가능한단어),NA()),3), FILTER(조합, MAP(조합, LAMBDA(m, ISNUMBER(SEARCH(wsf(m), sfword))))) ) ), 조합단계수, 조합단어수-1, 모든조합, REDUCE(가능한단어, SEQUENCE(조합단계수), LAMBDA(a,_, 단어조합필터(a))), 길이패스조합, FILTER(모든조합, LEN(모든조합) =(조합단계수+tlen) ), UNIQUE(DROP(REDUCE("", 길이패스조합, LAMBDA(acc,b, VSTACK(acc, SORT(TEXTSPLIT(b, "*"), , , TRUE)))), 1)) )