Giter Club home page Giter Club logo

xwordgiver's Introduction

XWordGiver by katahiromz

What's this?

"XWordGiver" (pronouncing as "crossword giver") is a Windows freeware to generate crossword data.

Screenshot 1

Screenshot 2

Usage

How to choose Policy

  1. Choose "Policy Preset" from "Policy" menu. You can specify multiple policy.
  2. Choose "What's the policy?" if you don't know XWordGiver's policy.

How to choose a dictionary

Use "Dictionary" menu.

If you just want to make something:

  1. First, please choose some "policy" and a "dictionary".
  2. In the "File" menu, select "Generate crossword..." and click the "Generate" button. The size should not be too greedy.

If you want to generate from a block pattern:

  1. First, please choose some "policy" and a "dictionary".
  2. Select "Generate from block pattern..." from the "File" menu, click on the pattern of your choice, and press the "Generate" button.

If you want to create the block pattern by yourself:

  1. First, please choose some "policy" and a "dictionary".
  2. Use the arrow keys and space bar to create a block pattern. Alternatively, you can generate a block pattern from the "Help" menu.
  3. Select "Find a solution (without adding blocks)" from the "Solution" menu.

If you want to create from specific words:

  1. Gather some relatively long words, rewrite them in Katakana or Alphabet, and save them in Excel or Notepad.
  2. Select "Generate from words..." from the "File" menu.
  3. Paste the words into the dialog and click the "Generate" button.

If you want to create the whole board manually:

  1. First, please choose some "policy" and a "dictionary".
  2. Repeat typing the arrow keys, spacebar, and letters.
  3. Once all the cells are filled, select "Find a solution (without adding blocks)" from the "Solution" menu.

NOTICE

  • It is calculated using heuristic methods, so it may take some time.
  • If there are not enough or too many combinations, you may fail or not finish.
  • The larger the size, the longer it will take. Please be patient during the calculation.
  • There are machine differences in computing performance.
  • The quality of the algorithm and dictionary data is NOT GUARANTEED.
  • Sorry to say, this program is optimized for Japanese crossword generation. Some patterns may be improper for Latin crossword generation. I struggle, struggle, struggle. You earn, earn, earn!

Requirements

  • Windows Vista/7/8.1/10/11.
  • Intel Core i5 or later.
  • Multicore.
  • Main memory 4GB+.

License

"XWordGiver" is released under the MIT License. See LICENSE.txt.

Contact

[email protected]

xwordgiver's People

Contributors

katahiromz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

xwordgiver's Issues

ボックス画像保存時のファイル名の衝突を回避する

画像ファイルを盤面にドロップしたときにできる、画像ボックスのファイル名が重複するときに、メインファイル保存時に..._filesフォルダに保存される画像ファイル名の重複を回避してほしい。

例えば、「C:\dir1\A.png」と「C:\dir2\A.png」という画像ファイル2つが盤面にドロップされ、..._filesフォルダに保存されるときに、二番目の保存先のファイル名を「A (2).png」に改名する。ただし、すでに「A (2).png」というファイルがあった場合は「A (3).png」というファイル名にする。ただし、すでに「A (3).png」というファイルがあった場合は「A (4).png」にする。ただし...(以下略)...

C文字列に対して、次のようなSHLWAPI関数を使ってもよい。

  • PathFindExtensionW
  • PathAddExtensionW
  • PathRemoveExtensionW
  • PathFindFileNameW
  • PathRemoveFileSpecW

Introduce restricted area / 立入禁止エリアの導入

黒マスルールの適用される黒マスではないが、文字を入れることのできない「立入禁止エリア」を導入する予定である。

  • この立入禁止エリアの導入により、計算が遅くなってはならない。おそらくC++のテンプレート引数とextern templateを使用することになる。
  • この立入禁止エリアの導入により、立入禁止エリアが存在する場合において、計算方法を変えなければいけない。
  • 立入禁止エリアは赤いバッテンで表示する。
  • 立入禁止エリアの文字は、半角のアンダーバー(_)または全角のアンダーバー(U+FF3F)で表記する。
  • 立入禁止エリアの文字はU+FF3Fに正規化する。
  • 立入禁止エリアはアンダーバーにより入力する。

Improve English resource

  • Fix misspelling: Llist
  • Fix dialog control: Landscape
  • Fix dialog control: The lower-left of Configure dialog

黒マスパターン生成の高速化 (報酬2万円)

https://github.com/katahiromz/XWordGiver/blob/master/xword.cpp

ソースファイルxword.cppXgGenerateBlacks関数を高速化して下さい。この関数は、現在の盤のサイズ(xg_nRows, xg_nCols)で黒マスパターンを生成します。

(a) xg_imode == xg_im_KANJI || xg_nRows < 5 || xg_nCols < 5の場合。
5マス以上の全角空白(ZEN_SPACE)の連続が現れないように黒マス(ZEN_BLACK)を配置して下さい。

(b) xg_imode == xg_im_RUSSIA の場合。
7マス以上の全角空白(ZEN_SPACE)の連続が現れないように黒マス(ZEN_BLACK)を配置して下さい。

(c) それ以外の場合。
6マス以上の全角空白(ZEN_SPACE)の連続が現れないように黒マス(ZEN_BLACK)を配置して下さい。

ただし、生成されるパターンは、黒マスルール(XG_Board::CornerBlack(), XG_Board::DoubleBlack(), XG_Board::TriBlackArround(), XG_Board::DividedByBlack()) に引っ掛からないようにして下さい。また、パターンはstd::randstd::random_shuffleを使って、毎回ランダムになるようにして下さい。

黒マスパターンの生成は、「ヘルプ」メニューの「黒マスパターンを生成する」(ID_GENERATEBLACKS)で実行できます。盤のサイズは、「ファイル」メニューの「新規作成」(ID_NEW)から指定できます。

盤のサイズが15×15マスのときに、平均計算時間を20%短縮できたら、報酬2万円を差し上げます(銀行振込)。

Quality of English dictionary is low

Americans (who can speak English) wanted!

  • Delete the words that American nobody knows.
  • Delete invalid words.
  • Improve clue text.
  • Fix grammar and syntax.

Please reduce the dictionary down to the half or the quarter. Your name will be written in copyright text as contributors.

テーマに沿ったクロスワード自動作成

  1. 辞書データのそれぞれの単語に、クロスワードでよく使われるテーマをタグ付けする。
  2. 問題作成時に、可能ならば「優先テーマ」と「除外テーマ」を指定できるようにする。

更なる辞書の改良

辞書のパースの変更により、第三フィールド以降を無視するようになったので、まずは

  1. 変更が必要なレコードの第三フィールドに「#要変更」のしるしをつける。
  2. 「#要変更」のしるしのあるヒントを改良する。
  3. 改良が完了したら、そのレコードの「#要変更」のしるしを削除する。

の手順で辞書を改良することにする。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.