KR100746000B1 - 크로스워드 게임을 자동으로 생성하는 방법 및 장치 - Google Patents

크로스워드 게임을 자동으로 생성하는 방법 및 장치 Download PDF

Info

Publication number
KR100746000B1
KR100746000B1 KR1020050038051A KR20050038051A KR100746000B1 KR 100746000 B1 KR100746000 B1 KR 100746000B1 KR 1020050038051 A KR1020050038051 A KR 1020050038051A KR 20050038051 A KR20050038051 A KR 20050038051A KR 100746000 B1 KR100746000 B1 KR 100746000B1
Authority
KR
South Korea
Prior art keywords
word
block
crossword
generating
frame
Prior art date
Application number
KR1020050038051A
Other languages
English (en)
Other versions
KR20060115775A (ko
Inventor
김규백
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020050038051A priority Critical patent/KR100746000B1/ko
Publication of KR20060115775A publication Critical patent/KR20060115775A/ko
Application granted granted Critical
Publication of KR100746000B1 publication Critical patent/KR100746000B1/ko

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F3/00Board games; Raffle games
    • A63F3/04Geographical or like games ; Educational games
    • A63F3/0423Word games, e.g. scrabble
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/45Controlling the progress of the video game
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Health & Medical Sciences (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Educational Technology (AREA)
  • Machine Translation (AREA)

Abstract

본 발명은 크로스워드 게임을 자동으로 생성하는 방법 및 장치에 관한 발명이다.
본 발명의 일 실시예에 따른 크로스워드 게임을 자동으로 생성하는 방법은 크로스워드를 생성하기 위해 필요한 소정의 기준을 설정하는 단계, 미로에서 경로를 찾거나 미로를 생성하는 알고리즘에 기반하여 단어를 구성하는 글자가 위치하게 되는 단어 블록을 크로스워드를 구성하는 다수의 벽 블록들에서 선택하고, 상기 선택한 벽 블록을 단어 블록으로 설정하여 크로스워드 프레임을 생성하는 단계, 및 상기 단어 블록에 상기 소정의 기준을 만족하는 단어를 할당하는 단계를 포함하며, 상기 생성하는 단계에서 단어 블록을 선택하는 기준은 상기 선택한 블록이 가로 및 세로로 연속된 다른 둘 이상의 단어 블록들과 연속하여 존재하지 않도록 선택하는 것을 특징으로 한다.
크로스워드 게임(Crossword game), 재귀적 역추적 알고리즘, 미로 알고리즘

Description

크로스워드 게임을 자동으로 생성하는 방법 및 장치{Method and apparatus for generating crossword game automatically}
도 1은 재귀적 역추적(Recursive Backtracker) 알고리즘으로 미로를 생성한 결과를 보여주는 예시도이다.
도 2는 본 발명의 일 실시예에 따른 크로스워드 프레임을 생성하는 과정을 보여주는 순서도이다.
도 3은 본 발명의 일 실시예에 따른 단어 블록이 겹쳐서 존재하는지를 검토하는 과정을 보여주는 예시도이다.
도 4는 본 발명의 일 실시예에 따른 전체블록 중 단어 블록이 차지하는 밀도를 계산하는 과정을 보여주는 예시도이다.
도 5는 본 발명의 일 실시예에 따른 단어 블록이 지나치게 긴 경우 제한을 가하여 프레임을 변경하는 예시도이다.
도 6은 본 발명의 일 실시예에 따른 단어를 선택하며 프레임을 변경하는 예시도이다.
도 7은 본 발명의 일 실시예에 따른 크로스워드를 생성하는 시스템의 구성도이다.
<도면의 주요 부분에 대한 부호의 설명>
310 : 사용자 인터페이스부 320 : 프레임 생성부
330 : 프레임 조절부 340 : 단어 구성부
350 : 저장부 360 : 단어 데이터베이스
본 발명은 크로스워드 게임을 자동으로 생성하는 방법 및 장치에 관한 것으로, 보다 상세하게는 크로스워드 게임을 사용자의 개입없이 자동으로 생성하는 것에 관한 것이다.
크로스워드(Crossword, 가로세로 낱말 맞추기, 십자말) 게임은 신문, 책, 인터넷, 모바일 휴대폰 등 여러 매체에서 사용하는 게임이다. 특히 컨텐츠를 제공하는 회사에서는 크로스워드를 정기적으로 생성하여 제공하고 있다. 그런데 크로스워드를 구성하기 위해서는 크게 두 가지 작업을 필요로 한다. 먼저, 크로스워드에서 단어가 배치될 프레임(frame)을 생성하는 과정이 필요하다. 다음으로 프레임 내에 단어를 배치하는 과정이 필요하다. 이 두 과정을 사용자가 수동으로 할 경우, 크로스워드 게임을 생성하는데 많은 시간이 소요된다.
종래에는 프레임 생성은 수동으로 하고 단어 구성은 자동으로 하는 발명(출원 10-2001-0043499)이 존재하였다. 또한, 프레임 생성을 자동으로 하고, 단어 구성을 수동으로 하는 크로스워드 컴파일러(Crossword Compiler) 제품이 존재한다. 이외에도 이미 결정되어있는 크로스워드 프레임에 자동으로 단어를 구축하는 방법( 미국 특허 4299578)이 제시되어 있다. 그러나 이러한 방법들은 사용자의 개입을 완전히 막지는 못한다는 문제점이 있다. 또한, 사용자의 개입 없이 자동으로 수행하는 경우라해도, 크로스워드 프레임은 이미 고정된 형태로 제공되어 다양한 크로스워드 게임을 구성하는데 한계가 있다.
따라서, 사용자가 크로스워드 생성시 개입하지 않으면서, 크로스워드에 알맞도록 다양한 크로스워드 게임을 생성하는 방법이 필요하다.
도 1은 재귀적 역추적(Recursive Backtracker) 알고리즘으로 미로를 생성한 결과를 보여주는 예시도이다. 크로스워드(10)의 하얀색 부분이 프레임이 존재하지 않는 영역이고, 색이 칠해진 부분이 프레임이 존재하는 영역이다. 그런데, 하얀색 부분이 겹쳐서 존재하여 크로스워드를 생성하기에 적합하지 않다. 크로스워드(10)의 일부를 확대한 부분(20)을 살펴볼 때, 단어가 배치될 하얀색 공간이 연속하여 배열된 것을 알 수 있다. 따라서 재귀적 역추적 알고리즘을 그대로 적용할 경우 프레임과 단어 생성이 각각 연속하여 뭉쳐진 형태로 나타날 수 있다. 따라서, 자동으로 크로스워드에 맞도록 프레임을 생성하고 단어를 구성하는 방법이 필요하다.
본 발명은 상기한 문제점을 개선하기 위해 안출된 것으로, 본 발명은 자동으로 크로스워드 게임을 생성하는 방법과 장치를 제공하는데 목적이 있다.
본 발명의 또다른 목적은 일정 틀이나 프레임에 한정되지 않는 다양한 크로스워드 게임을 자동으로 생성하는 것이다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
본 발명은 크로스워드 게임을 자동으로 생성하는 방법 및 장치에 관한 것이다.
본 발명의 일 실시예에 따른 크로스워드 게임을 자동으로 생성하는 방법은 크로스워드를 생성하기 위해 필요한 소정의 기준을 설정하는 단계, 미로에서 경로를 찾거나 미로를 생성하는 알고리즘에 기반하여 단어를 구성하는 글자가 위치하게 되는 단어 블록을 크로스워드를 구성하는 다수의 벽 블록들에서 선택하고, 상기 선택한 벽 블록을 단어 블록으로 설정하여 크로스워드 프레임을 생성하는 단계, 및 상기 단어 블록에 상기 소정의 기준을 만족하는 단어를 할당하는 단계를 포함하며, 상기 생성하는 단계에서 단어 블록을 선택하는 기준은 상기 선택한 블록이 가로 및 세로로 연속된 다른 둘 이상의 단어 블록들과 연속하여 존재하지 않도록 선택하는 것을 특징으로 한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다
이하, 본 발명의 실시예들에 의하여 크로스워드 게임을 자동으로 생성하는 방법 및 장치를 설명하기 위한 블록도 또는 처리 흐름도에 대한 도면들을 참고하여 본 발명에 대해 설명하도록 한다. 이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑제되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
도 2는 본 발명의 일 실시예에 따른 크로스워드 프레임을 생성하는 과정을 보여주는 순서도이다. 일 실시예로 재귀적 역추적 알고리즘을 사용하여 프레임을 생성한다. 블록 중에 단어가 구성될 블록을 단어 블록이라 하고, 그 외의 블록을 벽 블록 또는 벽이라 한다. 초기에는 모든 블록들이 벽으로 설정된다. 특정 위치에서 도 2의 알고리즘을 수행한다. 현재의 위치에서 인접한 블록을 선택한다(S1002). 선택하는 방식은 순차적으로 시계 또는 반시계방향으로 선택할 수 있으며, 이와 달리, 랜덤(random)하게 무작위로 선택할 수 있다. 인접한 블록은 주변의 블록 중 벽인 블록을 선택한다. 이미 단어 블록으로 설정된 블록에 대해서는 단어 블록으로 변환하는 과정을 취할 필요가 없기 때문이다. 인접한 벽 블록이 존재하면(S1010), 해당 벽 블록을 단어 블록으로 할 때 다른 단어 블록들과 겹쳐지는지 체크한다(S1020). 이는 도 1에서 살펴본 20과 같이 단어 블록들이 뭉쳐져 있음으로 해서, 크로스워드의 프레임을 생성하는데 적합하지 않은 경우를 회피하기 위함이다. 다른 단어 블록들과 겹쳐지는지 여부에 대한 검사는 후술한다. 다른 단어 블록들과 겹쳐지지 않는 경우, 스택과 같은 메모리 영역에 이동 전의 블록에 대한 정보를 입력한다 (S1022). 스택에 저장하면, S1010단계에서 인접한 벽 블록이 존재하지 않는 경우, 스택에 저장된 단어 블록을 출력하여 다시 인접한 벽 블록을 찾을 수 있다. 블록을 선택하면 해당 블록으로 이동한다(S1024). 이동한 블록에 대한 정보를 경로 정보에 부가하여 저장한다(S1026). 전체 크로스워드에서 단어 블록이 차지하는 양인 단어 블록의 밀도가 소정의 값을 초과하는지 검토한다(S1028). 초과하지 않는다면 계속 벽 블록 중에서 단어 블록으로 변환하는 프레임 생성 과정을 수행한다. 그러나 초과한다면, 충분히 단어 블록이 확보되었으므로 종료한다.
S1010 단계에서 인접한 블록중에 벽 블록이 존재하지 않는다면 스택에서 이전에 살펴본 블록을 출력한다(S1012). 출력할 블록이 존재할 경우 해당 블록을 현재위치로 하여 새로이 인접한 블록을 선택하는 과정(S1002)를 재귀적으로 수행한다. 한편 출력할 블록이 존재하지 않는다면 더 이상 진행할 수 없으므로 종료한다.
S1020 단계에서 선택한 블록이 다른 단어 블록과 겹쳐져서 크로스워드를 생성하는데 적합하지 않는 경우 현재 위치에서 다른 벽 블록이 존재하는지를 검사해서 다시 선택한다(S1002).
도 2에서 살펴본 과정은 미로에서 경로를 찾거나, 미로를 생성하는 과정을 포함하며, 이를 크로스워드 게임을 위한 프레임을 생성하는 데 적용한 것이다. 미로에서 경로를 찾거나 미로를 생성하는 알고리즘은 전술한 재귀적 역추적 알고리즘을 하나의 예로 하고 있으며, 통상 현재의 위치에서 다음 위치를 선택하는 방식을 사용하고 있다. 그리고 다음 위치가 존재하지 않을 경우, 지금까지 거쳐온 경로에서 다시 분기할 수 있는 위치를 찾는 방식이다.
도 3은 본 발명의 일 실시예에 따른 단어 블록이 겹쳐서 존재하는지를 검토하는 과정을 보여주는 예시도이다. 도 2의 S1020 과정에서 선택한 블록이 겹쳐지는지 검사하는 작업을 수행하는 일 실시예이다. 단어 블록이 가장 잘 배열되는 경우는 세로로 또는 가로로 한줄의 형태로 존재하는 경우이다. 도 1의 크로스워드의 일부(20)는 9개의 단어 블록이 세로로 네줄씩 겹쳐져(혹은 가로로 세줄씩) 있으므로 크로스워드에 적합하지 않다. 따라서, 중첩하여 단어 블록이 겹치는 것을 검사하는 방법이 필요하다. 크로스워드(31)에서 '현재 위치'라 표시된 블록에서 단어 블록의 후보가 되는 벽 블록(21, 22) 중에서 윗쪽에 존재하는 벽 블록(21)을 단어 블록으로 할 경우 크로스워드(32)를 살펴보면 여러 단어 블록이 겹쳐짐을 알 수 있다. 단어 블록이 겹쳐지는지를 조사하기 위해서는 단어 블록의 후보가 되는 벽 블록을 중심으로 2x2 범위로 단어 블록만으로 구성된 영역이 존재하는지 살펴보는 것이다. 크로스워드(33)에서 벽 블록(21)을 중심으로 단어 블록으로만 이루어지는 2x2 영역을 살펴보면 41, 42, 43과 같다. 따라서 벽 블록(21)을 단어 블록으로 설정할 경우 크로스워드에 적합하지 않다. 반면 벽블록(22)을 단어 블록으로 할 경우, 크로스워드(35)에서 벽 블록(22)을 중심으로 단어 블록으로만 이루어지는 2x2 영역이 존재하지 않음을 알 수 있다. 따라서 벽 블록(22)을 단어 블록으로 선택한다.
도 4는 본 발명의 일 실시예에 따른 전체블록 중 단어 블록이 차지하는 밀도를 계산하는 과정을 보여주는 예시도이다.
도 3에서 제시한 메커니즘을 적용할 경우 단어 블록이 가로 또는 세로로 중첩하지 않도록 프레임을 생성할 수 있다. 그러나 크로스워드에 너무 많은 단어가 들어갈 경우, 가독성이 떨어질 수 있다. 따라서 단어 블록이 전체 블록에서 차지하는 수가 미리 설정한 비율에 도달할 경우 프레임 생성을 중지할 수 있다. 도 4에서 크로스워드(35)의 단어 블록(45)이 다음 벽 블록(46)을 선택하기 전에 전체 크로스워드에서 단어 블록들이 차지하는 비율(밀도)를 검토한다. 그 결과 0.56으로 56%임을 알 수 있다. 만약 크로스워드를 생성시, 상기 비율을 50%라고 설정한 경우에 충분한 단어 블록들이 확보되었으므로 프레임 생성을 중지한다.
도 4는 전체 크로스워드 프레임 내에서 단어 블록들이 차지하는 비율을 계산하고 있으나, 반드시 이에 국한되는 것은 아니다. 전체 크로스워드 프레임의 가로, 세로가 n, m 칸일때, 현재 단어 블록을 생성 또는 변환하는 위치를 기준으로 n/2, m/2 정도의 영역 내에 존재하는 단어들로 비율을 판단할 수 있다. 상기 영역을 정하는 것은 작게는 서너 칸 정도에서부터 크게는 전체 크로스워드 프레임을 대상으로 할 수 있다. 일부 영역에 대해서 비율을 검사할 경우에는 해당 영역에서 단어 블록이 차지하는 비율이 소정의 비율을 넘을 경우, 다른 영역으로 이동하여 단어 블록을 생성할 수 있다.
도 5는 본 발명의 일 실시예에 따른 단어 블록이 지나치게 긴 경우 제한을 가하여 프레임을 변경하는 예시도이다.
도 2의 과정을 통해 생성된 크로스워드 프레임에서 연속된 단어블록이 일정 길이를 초과할 경우, 이를 만족시키는 단어가 존재하지 않을 수 있다. 따라서, 미 리 정해진 단어 길이보다 더 긴 연속된 단어 블록이 존재할 경우에는 단어 블록을 벽 블록으로 변환시키는 과정이 필요하다. 도 5의 크로스워드 프레임(50)에서 가장 아래단의 51, 52 블록을 포함하는 가로 단어 블록이 총 6개이다. 그런데 크로스워드 프레임(50)에서 허용가능한 길이는 총 5칸이므로 51, 52 블록을 포함하는 가로 단어 블록들은 수정할 수 있다. 그 결과, 52 블록을 단어 블록이 아닌 벽 블록으로 바꿀 수 있다. 새로이 단어 블록을 벽 블록으로 바꿀 경우, 전체 크로스워드 프레임에서 단어 블록이 차지하는 밀도가 소정의 정해진 비율보다 낮아질 수 있다. 이때에는 단어 블록 중에서 랜덤하게 선택하여 그 위치에서 도 2에서 살펴본 프레임 생성 방법을 적용할 수 있다.
한편, 하나의 단어 블록만으로 구성된 경우 크로스워드 게임에 적합하지 않을 수 있으므로, 최소 길이의 측면에서도 블록을 재설정할 수 있다. 하나의 단어 블록만으로 구성된 경우, 주변의 벽 블록을 변경하여 단어 블록으로 하고, 이에대해 크로스워드 프레임을 생성하는데 필요한 기준을 재적용하여 만족시키는지를 검사할 수 있다.
도 6은 본 발명의 일 실시예에 따른 단어를 선택하며 프레임을 변경하는 예시도이다.
도 2의 과정과 도 5의 과정을 통해 크로스워드 프레임을 생성하고, 최대 단어 길이를 넘는 단어 블록의 연속을 변경하는 작업이 완료하면, 단어 블록들에 단어를 할당하는 작업을 수행한다. 도 6에 도시된 바와 같이 크로스워드 프레임(55)에 몇 개의 단어가 할당되어 있다. 단어를 할당하는 과정에 있어서 해당 연속된 단 어 블록들 중 이미 정해진 알파벳 또는 글자가 있을 시에는 그 알파벳 또는 글자에 해당하는 단어를 할당한다. 예를 들어, 연속 3칸의 단어 블록으로 되어있으며, 두번째 글자가 "s"로 정해져 있다면 단어 길이가 3 이며 두번째 글자가 "s"인 단어를 찾아서 할당한다.
크로스워드 프레임(55)의 연속된 단어 블록(56)을 살펴볼 때, 총 5개의 글자로 이루어지며, 첫번째, 세번째, 다섯번째 글자가 각각 "w", "n", "r" 인 단어를 할당할 수 있다. 그런데 만약 단어 데이터베이스에 이러한 단어가 없다면, 단어 블록의 배치를 변경할 수 있다. 연속된 단어 블록들(56)에서 가장 오른쪽에 "r"이 위치한 단어 블록(61)을 벽 블록(62)으로 변경한다. 그러면 "wind"라는 단어를 할당할 수 있다. 한편, 단어 블록(61)이 벽 블록(62)으로 변경됨에 따라, "rear"라는 단어에서 "rea"라는 단어로 변경된다. 만약 "rea"가 단어 데이터베이스에 있다면 무관하지만 단어 데이터베이스에 "rea"가 존재하지 않는다면 이 부분에 대해 단어를 재할당한다. 첫번째 글자인 "r"이 다른 연속된 단어 블록과 관계되므로, 첫번째 글자가 "r"이며 세칸으로 이루어진 단어를 검색하여 58과 같이 "roi"를 할당할 수 있다.
도 6은 단어를 할당하기 어려운 경우 단어 블록을 벽 블록으로 변경하는 과정을 보여주고 있다. 한편, 벽 블록을 단어 블록으로 변경하여 한 글자 또는 두 글자를 추가를 할 수도 있다. 이때에는 변경된 단어 블록으로 다른 연속된 단어 블록들과 연결되지 않도록 하는 과정을 필요로 한다. 또한 도 3에서 제시한 메커니즘을 적용하여 단어 블록이 가로 세로로 중첩되는 것을 방지할 수 있다.
도 7은 본 발명의 일 실시예에 따른 크로스워드를 생성하는 장치의 구성도이다.
본 실시예에서 사용되는 '~부'라는 용어, 즉 '~모듈' 또는 '~테이블' 등은 소프트웨어, FPGA(Field Programmable Gate Array) 또는 주문형 반도체(Application Specific Integrated Circuit, ASIC)와 같은 하드웨어 구성요소를 의미하며, 모듈은 어떤 기능들을 수행한다. 그렇지만 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 모듈은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 모듈들은 디바이스 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
크로스워드를 생성하는 장치(400)는 사용자 인터페이스부(310), 프레임 생성부(320), 프레임 조절부(330), 단어 구성부(340), 저장부(350), 그리고 단어 데이터베이스(360)로 구성된다. 크로스워드 생성부(400)는 통상의 컴퓨터 시스템에 내재된 프로그램의 형태로 존재할 수 있으며, 이러한 프로그램이 탑재된 단말 장치, 휴대폰, 노트북, 서버 등을 포함한다.
사용자 인터페이스부(310)는 크로스워드 프레임의 크기, 예를 들어, 가로, 세로 몇 칸으로 할 것인가, 또는 전체 크로스워드 프레임에서 단어 블록이 차지하는 비율(밀도)은 어느정도로 할 것인가, 단어 데이터베이스(360)에서 어떤 난이도의 단어를 할당할 것인가 등등을 설정한다. 프레임 생성부(320)는 크로스워드에 사용될 가로, 세로의 프레임을 생성한다. 앞서 예로 든 재귀적 역추적 알고리즘과 같이 미로를 생성하거나 미로에서 경로를 생성하는데 적용한 알고리즘들을 이용하여 프레임을 생성할 수 있다. 또한, 생성 중에 크로스워드에 알맞도록 겹쳐지거나 중첩되는 단어 블록들이 존재하지 않도록 검사한다. 그리고 생성된 단어 블록의 수가 전체 크로스워드 프레임 또는 일정 영역 내에서 일정 비율을 만족하면 생성을 중지하거나 다른 영역으로 이동하여 단어 블록을 생성할 수 있다. 프레임 조절부(330)는 프레임 생성부(320)가 생성한 크로스워드 프레임에서 단어 길이와 조건에 맞게 처리하도록 생성된 크로스워드 프레임을 변경하는 작업을 한다. 변경하는 작업이란 도 5에서 일 실시예로 살펴본 최대 단어 길이를 넘는 연속된 단어 블록이 존재할 경우, 단어 블록을 벽 블록으로 변경하는 작업을 포함한다.
단어 구성부(340)는 단어 데이터 베이스(350)에 있는 단어들을 선택해서 단어 블록에 할당한다. 둘 이상의 세로 또는 가로로 연속된 단어 블록들에 글자가 들어가도록 설정할 수 있다. 이때, 도 6에서 살펴본 바와 같이, 이미 생성된 크로스워드 프레임에 할당할 단어가 없을 경우에는 부분적으로 프레임을 구성하는 단어 블록을 변경하는 작업을 수행한다.
저장부(350)는 생성된 크로스워드 프레임과 이에 할당되는 단어 및 설명들을 저장하여 크로스워드 게임을 이용할 수 있게 한다. 특히, 크로스워드 게임을 인터넷, 또는 무선의 네트워크를 통해 이용할 수 있도록, 다른 시스템에 전송할 수 있다. 이때에는 저장부(350)에 저장된 데이터를 다른 여러 시스템에 반복적으로 송신하여 사용자가 이용할 수 있게 할 수 있다.
또한 서버에 접속하여 상기 저장부(350)에 저장된 크로스워드 게임을 이용하는 서비스를 제공할 경우에는 접속한 사용자의 사용 실적에 대한 정보도 함께 저장할 수 있다.
단어 데이터베이스(360)는 크로스워드에 할당할 단어들을 정리한 공간이다. 단어 데이터베이스(360)는 단순히 단어들만을 저장할 수 있으며, 크로스워드를 쉽게 또는 체계적으로 생성하기 위해 단어들에 대한 여러 정보를 함께 저장할 수도 있다. 예를 들어, 해당 단어가 어떤 카테고리에 해당하는지, 단어의 난이도 또는 단어의 설명에 대한 정보, 그리고 단어에 대한 설명이 텍스트, 오디오 또는 이미지인지에 대한 정보를 함께 저장할 수 있다. 표 1은 단어 데이터베이스를 구성하기 위해 필요한 정보들을 보여준다.
레코드 명 설명
number 일련번호
length 단어길이
category 단어가 포함되는 카테고리
difficulty 난이도(0~9)
word 단어
description 설명
operation 동작 설명(0-텍스트, 1-오디오, 2-이미지)
priority 우선순위
duplication 중복 여부
일련 번호는 데이터베이스에서 해당 레코드에 대해 유일하게 할당되는 식별자라 볼 수 있다. 단어 길이는 해당 단어가 몇 개의 글자 또는 몇 개의 알파벳으로 구성되는가에 대한 정보이다. 카테고리는 카테고리별로 크로스워드 게임을 제공할 경우에 참조할 수 있는 정보이다. 과학, 영화, 시사 등등 카테고리별로 크로스워드를 제공할 경우에 사용한다. 난이도는 크로스워드의 난이도를 적절히 조절하기 위함이다. 크로스워드의 난이도가 정해져 있다면, 크로스워드에 할당될 단어들의 난이도들의 전체 평균을 계산하여 크로스워드의 난이도를 달리 제공할 수 있다. 설명은 단어에 대한 설명이다. 동작 설명은 단어에 대한 설명이 텍스트, 오디오, 이미지등 다양한 방식으로 제공될 경우 적용한다. 우선순위는 크로스워드에 단어를 배치할 경우, 어떤 단어를 먼저 할 것인지를 판단하는 기준이 된다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
본 발명을 구현함으로써 다양한 크로스워드 게임을 사용자의 개입없이 자동으로 제공할 수 있다.
본 발명을 구현함으로써 크로스워드 게임을 생성하는데 필요한 비용을 절감할 수 있으며, 또한 다양한 서비스를 제공할 수 있다.

Claims (5)

  1. 크로스워드 게임 생성 장치가 크로스워드 게임을 자동으로 생성하기 위한 방법에 있어서,
    크로스워드를 생성하기 위해 필요한 소정의 기준을 설정하는 단계;
    미로에서 경로를 찾거나 미로를 생성하는 알고리즘에 기반하여 단어를 구성하는 글자가 위치하게 되는 단어 블록을 크로스워드를 구성하는 다수의 벽 블록들에서 선택하고, 상기 선택한 벽 블록을 단어 블록으로 설정하여 크로스워드 프레임을 생성하는 단계; 및
    상기 단어 블록에 상기 소정의 기준을 만족하는 단어를 할당하는 단계를 포함하며,
    상기 생성하는 단계에서 단어 블록을 선택하는 기준은 상기 선택한 블록이 가로 및 세로로 연속된 다른 둘 이상의 단어 블록들과 연속하여 존재하지 않도록 선택하는 것을 특징으로 하는, 크로스워드 게임을 자동으로 생성하는 방법.
  2. 제 1항에 있어서,
    상기 단어를 할당하는 단계는,
    상기 단어 블록에 할당할 단어가 없는 경우, 상기 단어 블록을 단어가 할당되지 않는 벽 블록으로 설정하거나, 또는 상기 단어 블록에 연결된 벽 블록을 단어 블록으로 변경하거나 또는 상기 단어 블록과 연결된 다른 단어 블록의 단어를 변경하는 것을 특징으로 하는, 크로스워드 게임을 자동으로 생성하는 방법.
  3. 미로에서 경로를 찾거나 미로를 생성하는 알고리즘에 기반하여 단어를 구성하는 글자가 위치하게 되는 단어 블록을 크로스워드를 구성하는 다수의 벽 블록들에서 선택하고, 상기 선택한 벽 블록을 단어 블록으로 설정하여 크로스워드 프레임을 생성하는 프레임 생성부;
    상기 프레임 생성부에서 설정한 단어 블록을 조사하여, 단어의 길이에 따라 단어 블록을 벽 블록으로 변경하거나, 벽 블록을 단어 블록으로 변경하는 프레임 조절부;
    단어 데이터베이스에 저장된 단어를 상기 단어 블록에 할당하며, 할당할 수 있는 단어가 존재하지 않는 경우 상기 생성된 크로스워드 프레임의 단어 블록을 벽 블록으로 변경하거나 벽 블록을 단어 블록으로 변경하는 단어 구성부; 및
    단어와 상기 단어를 설명하는 정보와 상기 단어를 상기 단어 블록에 할당하기 위한 소정의 기준에 대한 정보를 저장하는 단어 데이터베이스를 포함하며,
    상기 프레임 생성부는 단어 블록을 선택함에 있어서, 상기 선택한 블록이 가로 및 세로로 연속된 다른 둘 이상의 블록들과 연속하여 존재하지 않도록 선택하는 것을 특징으로 하는, 크로스워드 게임 자동 생성 장치.
  4. 제 3항에 있어서,
    상기 생성된 크로스워드 게임을 저장매체 또는 네트워크를 통해 제공하는 게임 제공부를 더 포함하는 것을 특징으로 하는, 크로스워드 게임 자동 생성 장치.
  5. 크로스워드를 생성하기 위해 필요한 소정의 기준을 설정하고,
    미로에서 경로를 찾거나 미로를 생성하는 알고리즘에 기반하여 단어를 구성하는 글자가 위치하게 되는 단어 블록을 크로스워드를 구성하는 다수의 벽 블록들에서 선택하고, 상기 선택한 벽 블록을 단어 블록으로 설정하여 크로스워드 프레임을 생성하며, 상기 크로스워드 프레임을 생성시 단어 블록을 선택하는 기준은 상기 선택한 블록이 가로 및 세로로 연속된 다른 둘 이상의 단어 블록들과 연속하여 존재하지 않도록 단어 블록을 선택하며,
    상기 단어 블록에 상기 소정의 기준을 만족하는 단어를 할당하는 동작을 수행하는 프로그램이 기록된 저장매체.
KR1020050038051A 2005-05-06 2005-05-06 크로스워드 게임을 자동으로 생성하는 방법 및 장치 KR100746000B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050038051A KR100746000B1 (ko) 2005-05-06 2005-05-06 크로스워드 게임을 자동으로 생성하는 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050038051A KR100746000B1 (ko) 2005-05-06 2005-05-06 크로스워드 게임을 자동으로 생성하는 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20060115775A KR20060115775A (ko) 2006-11-10
KR100746000B1 true KR100746000B1 (ko) 2007-08-06

Family

ID=37653015

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050038051A KR100746000B1 (ko) 2005-05-06 2005-05-06 크로스워드 게임을 자동으로 생성하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR100746000B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101111179B1 (ko) 2009-10-19 2012-02-28 동국대학교 산학협력단 크로스워드 퍼즐 생성 방법 및 장치
KR102081051B1 (ko) 2018-11-20 2020-02-25 주식회사 피벗게임즈 넘버링크 퍼즐 맵 자동 생성 방법, 프로그램 및 장치

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113633980B (zh) * 2021-08-04 2023-12-05 北京中清龙图网络技术有限公司 数据生成方法、装置、计算机设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000029430A (ko) * 1998-10-30 2000-05-25 미다라이 후지오 전자사진 감광체 및 이를 이용한 화상 형성 장치
KR20050021430A (ko) * 2002-07-01 2005-03-07 정윤오 치과용 모형화 및 교합기 시스템 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000029430A (ko) * 1998-10-30 2000-05-25 미다라이 후지오 전자사진 감광체 및 이를 이용한 화상 형성 장치
KR20050021430A (ko) * 2002-07-01 2005-03-07 정윤오 치과용 모형화 및 교합기 시스템 및 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101111179B1 (ko) 2009-10-19 2012-02-28 동국대학교 산학협력단 크로스워드 퍼즐 생성 방법 및 장치
KR102081051B1 (ko) 2018-11-20 2020-02-25 주식회사 피벗게임즈 넘버링크 퍼즐 맵 자동 생성 방법, 프로그램 및 장치

Also Published As

Publication number Publication date
KR20060115775A (ko) 2006-11-10

Similar Documents

Publication Publication Date Title
US10395001B2 (en) Multiple patterning layout decomposition considering complex coloring rules
US7543252B2 (en) Migration of integrated circuit layout for alternating phase shift masks
US10031806B2 (en) Efficient repair of erasure coded data based on coefficient matrix decomposition
US11681902B2 (en) Transposed convolution using systolic array
US7581169B2 (en) Method and apparatus for form automatic layout
US20220292163A1 (en) Dilated convolution using systolic array
CN106201481A (zh) 应用程序开发系统中的组件管理方法和装置
CN104598107A (zh) 界面控件的生成方法及系统
JP2003280924A (ja) 通信設備で階層構造を有するイベントの処理方法
US20080052692A1 (en) System, Method and Computer Program Product for Checking a Software Entity
KR100746000B1 (ko) 크로스워드 게임을 자동으로 생성하는 방법 및 장치
Németh et al. Topology preserving parallel thinning algorithms
CN106484459A (zh) 应用于JavaScript的流程控制方法和装置
CN105868639A (zh) 内核漏洞修复方法和装置
Ma et al. A provably good approximation algorithm for rectangle escape problem with application to PCB routing
Rodríguez‐Martín et al. The ring/κ‐rings network design problem: Model and branch‐and‐cut algorithm
US20050050426A1 (en) Memory mapping for parallel turbo decoding
US20170090820A1 (en) Method and device for operating a many-core system
Wess Minimization of data address computation overhead in DSP programs
CN104424060B (zh) 一种用于确定故障的方法和装置
Başarir et al. Some difference sequence spaces of fuzzy number
US20040215595A1 (en) Finite-state machine augmented for multiple evaluations of text
JPH03127187A (ja) コンピユータ・グラフイツクス装置および方法
CN113633980B (zh) 数据生成方法、装置、计算机设备和存储介质
JPH1186588A (ja) メモリアレー及びメモリアレーにおける冗長素子ヒューズを低減する方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee