오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴
퀴즈

[퀴즈_20] 4글자 퍼즐 만들기

마법의손
6월 9일 조회 611
이런 4X4 퍼즐 영단어 퍼즐을 만들어 주세요

풀이 도구는 어떤 것이든 됩니다. M365, 파이썬, VBA, 스크립트, ... 기타등등..

아래는 예시 4개를 보였습니다.

 

댓글 5

원조백수 6월 9일
좋은 생각이 나지 않아서 대강 Random 선택한 2개 문자로 시작문자열, 종료문자열을 선택해서 같은 알파벳이 2개 이상인 그룹을 모아서 그 첫번째 2개 그룹을 묶어서 표현하는 방식으로 했습니다.
F9를 누를 때마다 랜덤으로 추출되며,  랜덤 추출결과가 실패할 경우 "Press F9"가 나오도록 했습니다.
=LET(D, A2:A190, L,SORTBY(D, RANDARRAY(ROWS(D),1)), fRS, LAMBDA(d,n, TAKE(SORTBY(d, RANDARRAY(ROWS(d),1)),n)), S, LEFT(fRS(L,1),1), F, RIGHT(fRS(L,1),1),
LA, FILTER(L, RIGHT(L,1) = F), LB, FILTER(L, LEFT(L,1) = RIGHT(TAKE(LA,1),1)),
LAa, UNIQUE(LEFT(LA,1)), LAb, BYROW(LAa, LAMBDA(r, ROWS(FILTER(LA, LEFT(LA,1)=r)))), LAf, DROP(REDUCE("",FILTER(LAa, LAb>1),LAMBDA(t,r, VSTACK(t, FILTER(LA, LEFT(LA,1)=r)))),1),
LBa, UNIQUE(RIGHT(LB,1)), LBb, BYROW(LBa, LAMBDA(r, ROWS(FILTER(LB, RIGHT(LB,1)=r)))), LBf, DROP(REDUCE("",FILTER(LBa, LBb>1),LAMBDA(t,r, VSTACK(t, FILTER(LB, RIGHT(LB,1)=r)))),1),
TS, TAKE(UNIQUE(LEFT(LAf,1)),1), TF, TAKE(UNIQUE(RIGHT(LBf,1)),1), WA, FILTER(LAf, LEFT(LAf,1)=TS), WB, FILTER(LBf, RIGHT(LBf,1)=TF),
RST, VSTACK(HSTACK(MID(INDEX(WA,1),SEQUENCE(1,4),1)), HSTACK(MID(INDEX(WA,2),SEQUENCE(2,1,2),1),{"","";"",""},MID(INDEX(WB,1),SEQUENCE(2,1,2),1)), HSTACK(MID(INDEX(WB,2),SEQUENCE(1,4),1))),
LET(Sum,SUM(IF(ISERROR(RST),1,0)),IF(Sum>0,"Press F9",RST)))


 
마법의손 작성자 6월 10일
@원조백수 님 우와 잘 됩니다
원조백수 채택된 답변 6월 10일
위에 버전보다 좀 더 랜덤처리가 가능하도록 수정했어요. (위의 수식은 우상/좌하 꼭지점 알파벳이 같음)
=LET(Da, A2:A190,
Db, DROP(REDUCE("",Da, LAMBDA(t,r, VSTACK(t, (r&","& FILTER(Da, (LEFT(Da,1) = RIGHT(r,1))*(Da<>r)))))),1),
Dc, TAKE(SORTBY(Db, RANDARRAY(ROWS(Db),1)),1),
Dd, FILTER(Db, (LEFT(Db,1)=LEFT(Dc,1))*(RIGHT(Db,1)=RIGHT(Dc,1))*(ISERROR(SEARCH(TEXTBEFORE(Dc,","),Db)))*(ISERROR(SEARCH(TEXTAFTER(Dc,","),Db)))),
De, VSTACK(Dc,TAKE(SORTBY(Dd, RANDARRAY(ROWS(Dd),1)),1)),
RT, VSTACK(MID(TAKE(De,1),SEQUENCE(1,4),1), HSTACK(MID(TAKE(De,-1),SEQUENCE(2,1,2),1), {"","";"",""}, MID(TAKE(De,1),SEQUENCE(2,1,7),1)), MID(TAKE(De,-1), SEQUENCE(1,4,6),1)),
PT, IF(COUNT(IFERROR(RT,1)),"Press F9", RT), PT  )

아래는 4꼭지 알파벳이 모두 랜덤.
더블유에이 6월 10일
@원조백수 님 와우..~~ 공식이 어질어질 합니다.. 응용력이 엄청나십니다. 엄지촥!!👍
마법의손 작성자 6월 10일
원조백수님의 2번째줄 코드를 힌트삼아서 겨우 풀었네요..... 만들어보니 코드가 엄청 커지네요..T.T

원조백수님의 코드 최적화 b^^) 짱입니다..
=LET(Da,TrimRange($A$2:$A$1000), Data,DROP(REDUCE("",Da,LAMBDA(t,r,VSTACK(t,(r&"/"&FILTER(Da,(LEFT(Da,1)=RIGHT(r,1))*(Da<>r)))))),1),
FE,HSTACK(Data,LEFT(Data)&RIGHT(Data)),
uData,UNIQUE(INDEX(FE,,2)), 문자갯수, SORT(HSTACK(uData,MAP(uData,LAMBDA(m,ROWS(FILTER(INDEX(FE,,2),INDEX(FE,,2)=m))))),1),
가능한문자,FILTER(INDEX(문자갯수,,1),INDEX(문자갯수,,2)>=2),
가능한단어,FILTER(INDEX(FE,,1),ISNUMBER(MATCH(INDEX(FE,,2),가능한문자,0))),
위쪽오른쪽단어,INDEX(SORTBY(가능한단어,RANDARRAY(ROWS(가능한단어))),1,1),
skey,LEFT(위쪽오른쪽단어)&RIGHT(위쪽오른쪽단어),
왼쪽아래쪽단어,INDEX(FILTER(INDEX(FE,,1),(INDEX(FE,,2)=skey)*(LEFT(INDEX(FE,,1),4)<>LEFT(위쪽오른쪽단어,4))*(RIGHT(INDEX(FE,,1),4)<>RIGHT(위쪽오른쪽단어,4))),1,1),
wd,TEXTSPLIT(위쪽오른쪽단어&"/"&왼쪽아래쪽단어,,"/"),
vd,IFNA(VSTACK(HSTACK(MID(INDEX(wd,3),SEQUENCE(3),1),MID(INDEX(MID(wd,2,2),1),SEQUENCE(,2),1),MID(INDEX(wd,2),SEQUENCE(3),1)),MID(INDEX(wd,4),SEQUENCE(,4),1)),""),
IF(COUNT(IFERROR(vd,1)),"Press F9",vd))


저도 다시 앞쪽것보다는 덜 버벅이네요..
=LET(Da,TrimRange($A$2:$A$1000),
Data,DROP(REDUCE("",Da,LAMBDA(t,r,VSTACK(t,(r&"/"&FILTER(Da,(LEFT(Da,1)=RIGHT(r,1))*(Da<>r)))))),1),
FEP,HSTACK(Data,LEFT(Data)&RIGHT(Data)),FE,SORTBY(FEP,RANDARRAY(ROWS(FEP))),
uData,UNIQUE(INDEX(FE,,2)),문자갯수,HSTACK(uData,MAP(uData,LAMBDA(m,ROWS(FILTER(INDEX(FE,,2),INDEX(FE,,2)=m))))),
처음과끝문자,INDEX(FILTER(INDEX(문자갯수,,1),INDEX(문자갯수,,2)>=2),1,1),fData,FILTER(INDEX(FE,,1),INDEX(FE,,2)=처음과끝문자,""),
hData, HSTACK(INDEX(fData,1,1),INDEX(FILTER(fData,(LEFT(fData,4)<>LEFT(INDEX(fData,1,1),4))*(RIGHT(fData,4)<>RIGHT(INDEX(fData,1,1),4))),1,1)),
RD, TEXTSPLIT(TEXTJOIN("/",1,hData),"/"),
RS, HSTACK(MID(INDEX(RD,3),SEQUENCE(4),1),VSTACK(EXPAND(MID(INDEX(RD,1),SEQUENCE(,2,2),1),3,2,""),MID(INDEX(RD,4),SEQUENCE(,2,2),1)),MID(INDEX(RD,2),SEQUENCE(4),1)),
IF( COUNT(IFERROR(RS,1)), "Press F9", RS)
)

 

 

 

 

이야기 게시판의 최근 글

스크랩 완료