├── .github └── workflows │ ├── build.yml │ └── release.yml ├── .gitignore ├── LICENSE ├── README.md ├── build.gradle ├── fastlane └── metadata │ └── android │ ├── en-GB │ ├── 105.txt │ ├── changelog │ │ ├── 1.txt │ │ ├── 101.txt │ │ ├── 102.txt │ │ ├── 103.txt │ │ ├── 104.txt │ │ ├── 106.txt │ │ ├── 107.txt │ │ ├── 108.txt │ │ └── 109.txt │ ├── full_description.txt │ ├── images │ │ ├── featureGraphic.jpg │ │ ├── icon.png │ │ └── phoneScreenshots │ │ │ ├── p1.png │ │ │ └── p2.png │ ├── short_description.txt │ └── title.txt │ └── it │ ├── changelog │ ├── 1.txt │ ├── 101.txt │ ├── 102.txt │ ├── 103.txt │ └── 104.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── ic_launcher.png └── src └── main ├── AndroidManifest.xml ├── assets ├── Afrikaans.txt ├── Catalan.txt ├── Dutch.txt ├── French.txt ├── German.txt ├── Italian.txt ├── Portuguese.txt ├── Spanish.txt └── Words.txt ├── java └── org │ └── billthefarmer │ └── solver │ ├── Help.java │ ├── Main.java │ ├── Solver.kt │ └── Words.java └── res ├── drawable-hdpi └── ic_launcher.png ├── drawable-mdpi └── ic_launcher.png ├── drawable-xhdpi └── ic_launcher.png ├── drawable-xxhdpi └── ic_launcher.png ├── drawable-xxxhdpi └── ic_launcher.png ├── drawable ├── box.xml ├── ic_autorenew_white_24dp.xml ├── ic_menu_white_24dp.xml └── ic_replay_white_24dp.xml ├── layout-large-land └── main.xml ├── layout-large └── main.xml ├── layout ├── help.xml └── main.xml ├── menu ├── main.xml └── navigation.xml ├── raw └── help.html ├── values-it └── strings.xml ├── values-v23 └── styles.xml └── values ├── attrs.xml ├── colors.xml ├── strings.xml └── styles.xml /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | # Build on push and PR events 2 | on: 3 | push: 4 | branches: 5 | - main 6 | tags-ignore: 7 | - '*' 8 | pull_request: 9 | 10 | jobs: 11 | build: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checkout 15 | uses: "actions/checkout@v3" 16 | 17 | - name: Build with Gradle 18 | run: ./gradlew build 19 | 20 | - name: Upload APK 21 | uses: actions/upload-artifact@v3 22 | with: 23 | name: App 24 | path: build/outputs/apk/debug/*.apk 25 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | # Release on new tags 2 | on: 3 | push: 4 | tags: 5 | - 'v*' 6 | 7 | jobs: 8 | release: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: "actions/checkout@v3" 12 | 13 | - name: Get the tag version 14 | id: version 15 | run: echo ::set-output name=VERSION::${GITHUB_REF#refs/tags/v} 16 | 17 | - name: Create release 18 | id: create_release 19 | uses: actions/create-release@v1 20 | env: 21 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 22 | with: 23 | tag_name: ${{ github.ref }} 24 | release_name: "Version ${{ steps.version.outputs.VERSION }}" 25 | body: "![Icon](src/main/res/drawable-xhdpi/ic_launcher.png)" 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.aar 4 | *.ap_ 5 | *.aab 6 | 7 | # Files for the ART/Dalvik VM 8 | *.dex 9 | 10 | # Java class files 11 | *.class 12 | 13 | # Astyle backups 14 | *.astyle 15 | 16 | # Emacs backups 17 | *~ 18 | 19 | # Generated files 20 | bin/ 21 | gen/ 22 | out/ 23 | # Data folder 24 | data/ 25 | # Uncomment the following line in case you need and you don't have the release build type files in your app 26 | # release/ 27 | 28 | # Gradle files 29 | .gradle/ 30 | build/ 31 | 32 | # Local configuration file (sdk path, etc) 33 | local.properties 34 | 35 | # Proguard folder generated by Eclipse 36 | proguard/ 37 | 38 | # Log Files 39 | *.log 40 | 41 | # Android Studio Navigation editor temp files 42 | .navigation/ 43 | 44 | # Android Studio captures folder 45 | captures/ 46 | 47 | # IntelliJ 48 | *.iml 49 | .idea/workspace.xml 50 | .idea/tasks.xml 51 | .idea/gradle.xml 52 | .idea/assetWizardSettings.xml 53 | .idea/dictionaries 54 | .idea/libraries 55 | # Android Studio 3 in .gitignore file. 56 | .idea/caches 57 | .idea/modules.xml 58 | # Comment next line if keeping position of elements in Navigation Editor is relevant for you 59 | .idea/navEditor.xml 60 | 61 | # Keystore files 62 | # Uncomment the following lines if you do not want to check your keystore files in. 63 | #*.jks 64 | #*.keystore 65 | 66 | # External native build folder generated in Android Studio 2.2 and later 67 | .externalNativeBuild 68 | .cxx/ 69 | 70 | # Google Services (e.g. APIs or Firebase) 71 | # google-services.json 72 | 73 | # Freeline 74 | freeline.py 75 | freeline/ 76 | freeline_project_description.json 77 | 78 | # fastlane 79 | fastlane/report.xml 80 | fastlane/Preview.html 81 | fastlane/screenshots 82 | fastlane/test_output 83 | fastlane/readme.md 84 | 85 | # Version control 86 | vcs.xml 87 | 88 | # lint 89 | lint/intermediates/ 90 | lint/generated/ 91 | lint/outputs/ 92 | lint/tmp/ 93 | # lint/reports/ 94 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ![Icon](src/main/res/drawable-xhdpi/ic_launcher.png) WordleSolver [![.github/workflows/build.yml](https://github.com/billthefarmer/wordlesolver/actions/workflows/build.yml/badge.svg)](https://github.com/billthefarmer/wordlesolver/actions/workflows/build.yml) 2 | [Get it on F-Droid](https://f-droid.org/packages/org.billthefarmer.solver/) 3 | 4 | [Wordle](https://www.powerlanguage.co.uk/wordle/) 5 | ([Gurgle](https://github.com/billthefarmer/gurgle)) solver with code 6 | from https://github.com/PoorLazyCoder/Wordle-Solver. 7 | 8 | See https://github.com/PoorLazyCoder/Wordle-Solver for explanation. 9 | 10 | ![Gurgle](https://github.com/billthefarmer/billthefarmer.github.io/raw/master/images/Gurgle-solver.png) ![Solver](https://github.com/billthefarmer/billthefarmer.github.io/raw/master/images/WordleSolver.png) 11 | 12 | * Multiple coloured themes 13 | * Multiple languages 14 | 15 | Usually solves [Wordle](href="https://www.powerlanguage.co.uk/wordle) 16 | and [Gurgle](https://github.com/billthefarmer/gurgle) puzzles in four 17 | tries. 18 | 19 | Uses solver code from 20 | [Wordle-Solver](https://github.com/PoorLazyCoder/Wordle-Solver). 21 | 22 | ## Using 23 | Letters that are shown green in the game 24 | ([Wordle](https://www.powerlanguage.co.uk/wordle), 25 | [Gurgle](https://github.com/billthefarmer/gurgle)) go in the first 26 | green row in the correct place. Yellow letters go in the next yellow 27 | rows in the correct place. Letters shown grey go in the last row in 28 | any order. 29 | 30 | Tap either the next button on the keyboard or the solve button in the 31 | toolbar. The next button only works if there is text where the cursor 32 | is, so it can be used to move to the next slot without triggering a 33 | search. The app will show a scrolling list of possible next guesses at 34 | the bottom. 35 | 36 | Select coloured theme from the **Theme** item in the menu. 37 | 38 | Select language from the **Language** item in the menu. 39 | 40 | ## External control 41 | Share text from another app, or send an 42 | [Intent](https://developer.android.com/reference/android/content/Intent) 43 | with an 44 | [EXTRA_TEXT](https://developer.android.com/reference/android/content/Intent#EXTRA_TEXT) 45 | with the text containing the known letters and blanks or dots for the 46 | unknown letters. The app will start or restart and display the 47 | results. 48 | 49 | | Parameter | Activity/Action/Category/Extra | Type | Value | 50 | | --------- | ------------------------------ | ---- | ----- | 51 | | Activity | org.billthefarmer.solver.Main | 52 | | Action | android.intent.action.MAIN | 53 | | | android.intent.action.DEFAULT | 54 | | | android.intent.action.SEND | 55 | | | android.intent.action.VIEW | 56 | | Category | android.intent.category.LAUNCHER | 57 | | | android.intent.category.DEFAULT | 58 | | Extras | android.intent.extra.TEXT | string | The text may contain | 59 | | | | | blanks or dots for | 60 | | | | | unknown letters, a | 61 | | | | | comma delimiter and | 62 | | | | | letters known to be | 63 | | | | | in results, repeated | 64 | | | | | three times, a comma | 65 | | | | | delimiter and letters | 66 | | | | | known to not be in | 67 | | | | | results | 68 | 69 | This may be tested using the [Android Debug 70 | Bridge](https://developer.android.com/studio/command-line/adb#am). 71 | ```shell 72 | $ adb shell am start -e android.intent.extra.TEXT b.ll,..g,...x,,pb -n org.billthefarmer.solver/.Main 73 | Starting: Intent { cmp=org.billthefarmer.solver/.Main (has extras) } 74 | Warning: Activity not started, its current task has been brought to the front 75 | ``` 76 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | repositories { 3 | mavenCentral() 4 | google() 5 | } 6 | 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:7.4.2' 9 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.22" 10 | } 11 | } 12 | 13 | allprojects { 14 | repositories { 15 | mavenCentral() 16 | google() 17 | } 18 | } 19 | 20 | apply plugin: 'com.android.application' 21 | apply plugin: 'kotlin-android' 22 | 23 | android { 24 | compileSdkVersion 31 25 | namespace "org.billthefarmer.solver" 26 | 27 | defaultConfig { 28 | applicationId "org.billthefarmer.solver" 29 | minSdkVersion 21 30 | targetSdkVersion 31 31 | versionName "1.09" 32 | versionCode 109 33 | 34 | buildConfigField "long", "BUILT", System.currentTimeMillis() + "L" 35 | } 36 | 37 | compileOptions { 38 | sourceCompatibility JavaVersion.VERSION_1_9 39 | targetCompatibility JavaVersion.VERSION_1_9 40 | } 41 | 42 | lintOptions { 43 | disable 'OldTargetApi', 'NonConstantResourceId', 'ExpiredTargetSdkVersion', 44 | 'AndroidGradlePluginVersion' 45 | // abortOnError false 46 | } 47 | 48 | kotlinOptions { 49 | jvmTarget = '9' 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-GB/105.txt: -------------------------------------------------------------------------------- 1 | * Add Afrikaans translation 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-GB/changelog/1.txt: -------------------------------------------------------------------------------- 1 | * Initial release -------------------------------------------------------------------------------- /fastlane/metadata/android/en-GB/changelog/101.txt: -------------------------------------------------------------------------------- 1 | * Update layout, add help -------------------------------------------------------------------------------- /fastlane/metadata/android/en-GB/changelog/102.txt: -------------------------------------------------------------------------------- 1 | * Update dialog styles 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-GB/changelog/103.txt: -------------------------------------------------------------------------------- 1 | * Add languages 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-GB/changelog/104.txt: -------------------------------------------------------------------------------- 1 | * Add Italian translation 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-GB/changelog/106.txt: -------------------------------------------------------------------------------- 1 | * Add expanded display 2 | * Add black and light themes 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-GB/changelog/107.txt: -------------------------------------------------------------------------------- 1 | * Update expanded display 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-GB/changelog/108.txt: -------------------------------------------------------------------------------- 1 | * Add navigation menu 2 | * Update icons 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-GB/changelog/109.txt: -------------------------------------------------------------------------------- 1 | * Add external control 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-GB/full_description.txt: -------------------------------------------------------------------------------- 1 | * Multiple coloured themes 2 | * Multiple languages 3 | 4 | Usually solves Wordle and Gurgle puzzles in four tries. 5 | 6 | Uses solver code from https://github.com/PoorLazyCoder/Wordle-Solver. 7 | 8 | Letters that are shown green in the puzzle (Wordle, Gurgle) go in the first green row in the correct place. Yellow letters go in the next yellow rows in the correct place. Letters shown grey go in the last row in any order. 9 | 10 | Tap either the next button on the keyboard or the solve button in the toolbar. The next button only works if there is text where the cursor is, so it can be used to move to the next slot without triggering a search. The app will show a list of possible next guesses at the bottom. 11 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-GB/images/featureGraphic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billthefarmer/wordlesolver/6e2b9a3a138e835516c283e14161ff2a37f3ad2c/fastlane/metadata/android/en-GB/images/featureGraphic.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-GB/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billthefarmer/wordlesolver/6e2b9a3a138e835516c283e14161ff2a37f3ad2c/fastlane/metadata/android/en-GB/images/icon.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-GB/images/phoneScreenshots/p1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billthefarmer/wordlesolver/6e2b9a3a138e835516c283e14161ff2a37f3ad2c/fastlane/metadata/android/en-GB/images/phoneScreenshots/p1.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-GB/images/phoneScreenshots/p2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billthefarmer/wordlesolver/6e2b9a3a138e835516c283e14161ff2a37f3ad2c/fastlane/metadata/android/en-GB/images/phoneScreenshots/p2.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-GB/short_description.txt: -------------------------------------------------------------------------------- 1 | Solve Wordle and Gurgle puzzles 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-GB/title.txt: -------------------------------------------------------------------------------- 1 | WordleSolver 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it/changelog/1.txt: -------------------------------------------------------------------------------- 1 | * Prima pubblicazione 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it/changelog/101.txt: -------------------------------------------------------------------------------- 1 | * Aggiornata impostazione grafica 2 | * Aggiunto aiuto 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it/changelog/102.txt: -------------------------------------------------------------------------------- 1 | * Aggiornati gli stili dei dialoghi 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it/changelog/103.txt: -------------------------------------------------------------------------------- 1 | * Aggiunto supporto alle lingue 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it/changelog/104.txt: -------------------------------------------------------------------------------- 1 | * Aggiunta traduzione in italiano 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it/full_description.txt: -------------------------------------------------------------------------------- 1 | * Molti temi colorati 2 | * Supporto a più lingue 3 | 4 | Solitamente risolve le partite di Wordle e di Gurgle in quattro tentativi. 5 | 6 | L'app usa il codice per calcolare le soluzioni da https://github.com/PoorLazyCoder/Wordle-Solver. 7 | 8 | Le lettere che sono mostrate in verde nei giochi (Wordle o Gurgle) vanno nella prima riga nel posto corretto. Le lettere gialle vanno nelle righe successive nello spazio corretto. Le lettere grigie vanno nell'ultima riga in qualsiasi ordine. 9 | 10 | Premi o il bottone Prossimo sulla tastiera o il bottone sulla barra per calcolare le soluzioni. L'app mostrerà una lista di possibili tentativi nella parte bassa dello schermo. 11 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it/short_description.txt: -------------------------------------------------------------------------------- 1 | Risolvi le partite di Wordle e Gurgle 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it/title.txt: -------------------------------------------------------------------------------- 1 | WordleSolver 2 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billthefarmer/wordlesolver/6e2b9a3a138e835516c283e14161ff2a37f3ad2c/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billthefarmer/wordlesolver/6e2b9a3a138e835516c283e14161ff2a37f3ad2c/gradlew -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%" == "" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%" == "" set DIRNAME=. 29 | set APP_BASE_NAME=%~n0 30 | set APP_HOME=%DIRNAME% 31 | 32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 34 | 35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 37 | 38 | @rem Find java.exe 39 | if defined JAVA_HOME goto findJavaFromJavaHome 40 | 41 | set JAVA_EXE=java.exe 42 | %JAVA_EXE% -version >NUL 2>&1 43 | if "%ERRORLEVEL%" == "0" goto execute 44 | 45 | echo. 46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 47 | echo. 48 | echo Please set the JAVA_HOME variable in your environment to match the 49 | echo location of your Java installation. 50 | 51 | goto fail 52 | 53 | :findJavaFromJavaHome 54 | set JAVA_HOME=%JAVA_HOME:"=% 55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 56 | 57 | if exist "%JAVA_EXE%" goto execute 58 | 59 | echo. 60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 61 | echo. 62 | echo Please set the JAVA_HOME variable in your environment to match the 63 | echo location of your Java installation. 64 | 65 | goto fail 66 | 67 | :execute 68 | @rem Setup the command line 69 | 70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 71 | 72 | 73 | @rem Execute Gradle 74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 75 | 76 | :end 77 | @rem End local scope for the variables with windows NT shell 78 | if "%ERRORLEVEL%"=="0" goto mainEnd 79 | 80 | :fail 81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 82 | rem the _cmd.exe /c_ return code! 83 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 84 | exit /b 1 85 | 86 | :mainEnd 87 | if "%OS%"=="Windows_NT" endlocal 88 | 89 | :omega 90 | -------------------------------------------------------------------------------- /ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billthefarmer/wordlesolver/6e2b9a3a138e835516c283e14161ff2a37f3ad2c/ic_launcher.png -------------------------------------------------------------------------------- /src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | 20 | 21 | 22 | 23 | 24 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /src/main/assets/Dutch.txt: -------------------------------------------------------------------------------- 1 | aagje 2 | aaide 3 | aaien 4 | aapje 5 | aapte 6 | aarde 7 | aards 8 | aardt 9 | aasde 10 | aasje 11 | abaja 12 | abces 13 | abdij 14 | abdis 15 | abeel 16 | abele 17 | abten 18 | abuis 19 | acces 20 | acres 21 | acryl 22 | actie 23 | actor 24 | acute 25 | acuut 26 | addax 27 | adder 28 | adelt 29 | ademt 30 | adept 31 | aders 32 | adert 33 | adieu 34 | adios 35 | adres 36 | afbak 37 | afbel 38 | afdak 39 | afdam 40 | afdek 41 | afduw 42 | affix 43 | afgaf 44 | afhak 45 | afijn 46 | afkan 47 | afkap 48 | afkom 49 | afkon 50 | aflos 51 | afnam 52 | afpak 53 | afrit 54 | afruk 55 | afsop 56 | afsta 57 | aftap 58 | aftel 59 | aften 60 | afval 61 | afwas 62 | afzag 63 | afzeg 64 | afzei 65 | afzet 66 | afzie 67 | afzit 68 | agaat 69 | agame 70 | agape 71 | agave 72 | ageer 73 | agens 74 | agent 75 | agger 76 | agoge 77 | agoog 78 | ahorn 79 | aioli 80 | airco 81 | ajour 82 | ajuin 83 | ajuus 84 | akant 85 | akker 86 | aksen 87 | akten 88 | aktes 89 | alaaf 90 | alaam 91 | alant 92 | alarm 93 | album 94 | aldra 95 | aldus 96 | aleer 97 | alert 98 | algen 99 | alias 100 | alibi 101 | alken 102 | allee 103 | allen 104 | aller 105 | alles 106 | almee 107 | alpen 108 | alsem 109 | alsnu 110 | alsof 111 | alten 112 | alter 113 | aluin 114 | alver 115 | amahs 116 | amant 117 | amber 118 | ambes 119 | amice 120 | amict 121 | amorf 122 | ampel 123 | amper 124 | ampex 125 | ampul 126 | anaal 127 | anale 128 | ander 129 | angel 130 | angst 131 | anijs 132 | anima 133 | anime 134 | animo 135 | anion 136 | anjer 137 | anker 138 | annex 139 | anode 140 | anten 141 | aorta 142 | apart 143 | apneu 144 | appel 145 | april 146 | apsis 147 | arden 148 | arena 149 | arend 150 | argon 151 | argot 152 | argus 153 | aride 154 | arken 155 | armee 156 | armen 157 | armst 158 | aroma 159 | arren 160 | asbak 161 | asgat 162 | asiel 163 | askar 164 | asman 165 | aspic 166 | aspot 167 | astma 168 | asurn 169 | atlas 170 | atoom 171 | atria 172 | audit 173 | avers 174 | aviso 175 | avond 176 | awara 177 | awari 178 | axels 179 | azijn 180 | azuur 181 | baadt 182 | baalt 183 | baant 184 | baard 185 | baars 186 | baart 187 | baast 188 | bacil 189 | bacon 190 | baden 191 | bader 192 | badge 193 | badje 194 | bagel 195 | bajes 196 | baken 197 | bakje 198 | bakte 199 | balde 200 | balen 201 | balie 202 | balkt 203 | balts 204 | bande 205 | bands 206 | banen 207 | banjo 208 | bankt 209 | barak 210 | baren 211 | baret 212 | barok 213 | baron 214 | barre 215 | barst 216 | basen 217 | baset 218 | basis 219 | basta 220 | batch 221 | baten 222 | batig 223 | batik 224 | batje 225 | baton 226 | batte 227 | bavet 228 | bazel 229 | bazen 230 | bazig 231 | bazin 232 | beaam 233 | beaat 234 | beate 235 | beats 236 | bebos 237 | bedek 238 | bedel 239 | beden 240 | bedje 241 | bedot 242 | beeft 243 | beeld 244 | beemd 245 | beent 246 | beert 247 | beest 248 | befte 249 | begaf 250 | begin 251 | begon 252 | behuw 253 | beide 254 | beidt 255 | beien 256 | beige 257 | beits 258 | bejag 259 | bekaf 260 | bekak 261 | bekap 262 | beken 263 | beker 264 | bekje 265 | bekom 266 | bekte 267 | belas 268 | belde 269 | beleg 270 | belet 271 | beman 272 | bemin 273 | benam 274 | bende 275 | benen 276 | benig 277 | benul 278 | benut 279 | beoog 280 | bepak 281 | beren 282 | bergt 283 | beril 284 | berin 285 | berst 286 | besef 287 | besje 288 | besla 289 | besom 290 | besta 291 | beste 292 | betel 293 | beten 294 | beter 295 | beton 296 | bette 297 | beugt 298 | beukt 299 | beult 300 | beurs 301 | beurt 302 | bevak 303 | beval 304 | bevat 305 | bevel 306 | beven 307 | bever 308 | bevis 309 | bevit 310 | bewal 311 | bewas 312 | bezag 313 | bezak 314 | bezat 315 | bezem 316 | bezet 317 | bezig 318 | bezin 319 | bezit 320 | bezon 321 | bidet 322 | bidon 323 | biebs 324 | biedt 325 | biels 326 | biest 327 | biets 328 | bigde 329 | bigot 330 | bijas 331 | bijen 332 | bijna 333 | bindt 334 | bingo 335 | binst 336 | biopt 337 | bisam 338 | biste 339 | bitch 340 | bitse 341 | bitst 342 | bivak 343 | bizar 344 | bizon 345 | blaag 346 | blaam 347 | blaar 348 | blaas 349 | blaat 350 | blaft 351 | blank 352 | blauw 353 | bleef 354 | bleek 355 | blees 356 | blein 357 | bleke 358 | blije 359 | blijf 360 | blijk 361 | blikt 362 | blind 363 | blink 364 | blits 365 | bloed 366 | bloei 367 | bloem 368 | bloes 369 | blogs 370 | blogt 371 | blokt 372 | blond 373 | bloos 374 | bloot 375 | blote 376 | blouw 377 | blues 378 | bluft 379 | blust 380 | bluts 381 | bocht 382 | bodem 383 | boede 384 | boekt 385 | boent 386 | boers 387 | boert 388 | boete 389 | bofte 390 | bogen 391 | bogie 392 | bokje 393 | bokst 394 | bokte 395 | bolde 396 | bolle 397 | bolst 398 | bomde 399 | bomen 400 | bomig 401 | bomma 402 | bompa 403 | bonen 404 | bongo 405 | bonje 406 | bonkt 407 | bonst 408 | bonte 409 | bonus 410 | bonze 411 | boogt 412 | boomt 413 | boord 414 | boort 415 | boost 416 | boots 417 | borat 418 | borax 419 | boren 420 | borgt 421 | borst 422 | bosje 423 | boson 424 | boste 425 | bosui 426 | boten 427 | boter 428 | botje 429 | botox 430 | botst 431 | botte 432 | bouwt 433 | boven 434 | boxen 435 | boxer 436 | bozer 437 | bozig 438 | braaf 439 | braak 440 | braam 441 | brabo 442 | bralt 443 | brand 444 | bravo 445 | brede 446 | breed 447 | breek 448 | breid 449 | brein 450 | breit 451 | brems 452 | breng 453 | breuk 454 | brief 455 | bries 456 | brink 457 | broed 458 | broei 459 | broek 460 | broer 461 | broes 462 | brokt 463 | bromt 464 | brons 465 | brood 466 | broom 467 | broos 468 | brost 469 | brouw 470 | broze 471 | bruid 472 | bruin 473 | bruis 474 | brult 475 | brute 476 | bruto 477 | bruut 478 | buien 479 | buigt 480 | buiig 481 | built 482 | buist 483 | bukte 484 | bulkt 485 | buren 486 | buret 487 | burin 488 | busje 489 | buste 490 | buten 491 | buurt 492 | bytes 493 | caban 494 | cacao 495 | cache 496 | cadet 497 | cakes 498 | cameo 499 | canon 500 | capes 501 | cargo 502 | carve 503 | casht 504 | casts 505 | casus 506 | cavia 507 | ceder 508 | cello 509 | cents 510 | chaos 511 | check 512 | chefs 513 | chimp 514 | chips 515 | choco 516 | cider 517 | circa 518 | claim 519 | clans 520 | click 521 | clips 522 | clous 523 | clown 524 | clubs 525 | coach 526 | cocon 527 | codec 528 | codes 529 | codex 530 | cokes 531 | combi 532 | combo 533 | coole 534 | corgi 535 | coupe 536 | cours 537 | cover 538 | coxen 539 | crack 540 | crank 541 | crash 542 | cross 543 | crost 544 | crypt 545 | cupje 546 | curie 547 | curry 548 | curve 549 | cyaan 550 | cycli 551 | cyste 552 | daags 553 | daagt 554 | daalt 555 | daast 556 | dabde 557 | dacht 558 | dadel 559 | daden 560 | dader 561 | dagen 562 | dager 563 | dagge 564 | dagje 565 | daken 566 | dakje 567 | dalem 568 | dalen 569 | daler 570 | damde 571 | dames 572 | dampt 573 | danig 574 | dankt 575 | danst 576 | darde 577 | darts 578 | daten 579 | dates 580 | datum 581 | dauwt 582 | dazen 583 | deals 584 | debat 585 | debug 586 | decor 587 | deden 588 | deels 589 | deelt 590 | deert 591 | deken 592 | dekje 593 | dekte 594 | delen 595 | deler 596 | delft 597 | delgt 598 | delta 599 | demon 600 | dempt 601 | denkt 602 | depot 603 | depri 604 | depte 605 | derde 606 | deren 607 | derft 608 | desem 609 | detox 610 | deugd 611 | deugt 612 | deukt 613 | deunt 614 | dezen 615 | dezer 616 | dezes 617 | dicht 618 | dieet 619 | dieft 620 | diens 621 | dient 622 | diepe 623 | diept 624 | dijde 625 | dijen 626 | dijkt 627 | dikke 628 | dikst 629 | dikte 630 | dildo 631 | dille 632 | dimde 633 | diner 634 | dingt 635 | dipje 636 | dipte 637 | disco 638 | disks 639 | divan 640 | dixit 641 | djinn 642 | docht 643 | doden 644 | doder 645 | doelt 646 | doemt 647 | doend 648 | doffe 649 | dofst 650 | dogen 651 | doken 652 | dokte 653 | dolde 654 | dolen 655 | doler 656 | dolle 657 | dolst 658 | dombo 659 | domen 660 | domig 661 | domme 662 | dompt 663 | domst 664 | donor 665 | donut 666 | doods 667 | doodt 668 | dooft 669 | dooie 670 | dooit 671 | doolt 672 | doomt 673 | doopt 674 | doorn 675 | dopen 676 | doper 677 | dopje 678 | dopte 679 | dorde 680 | doren 681 | dorps 682 | dorre 683 | dorst 684 | dosis 685 | doste 686 | dotje 687 | douch 688 | douwt 689 | doven 690 | dover 691 | dovig 692 | dozen 693 | draad 694 | draag 695 | draai 696 | draak 697 | drama 698 | dramt 699 | drang 700 | drank 701 | drast 702 | dreef 703 | dreig 704 | dreun 705 | drift 706 | drijf 707 | drilt 708 | dring 709 | drink 710 | droef 711 | droeg 712 | droge 713 | dromt 714 | drong 715 | dronk 716 | droog 717 | droom 718 | droop 719 | drugs 720 | druif 721 | druil 722 | druip 723 | druis 724 | drukt 725 | drumt 726 | drupt 727 | druus 728 | duaal 729 | duale 730 | dubde 731 | ducht 732 | duels 733 | duffe 734 | dufst 735 | duidt 736 | duikt 737 | duimt 738 | duist 739 | duldt 740 | dummy 741 | dumps 742 | dumpt 743 | dunde 744 | dunkt 745 | dunne 746 | dunst 747 | dupes 748 | duren 749 | durft 750 | dutje 751 | dutte 752 | duurs 753 | duurt 754 | duwde 755 | duwen 756 | duwer 757 | dwaal 758 | dwaas 759 | dwang 760 | dwars 761 | dwaze 762 | dweep 763 | dweil 764 | dwerg 765 | dwing 766 | dwong 767 | ebben 768 | ebden 769 | ebola 770 | echel 771 | echte 772 | ecrue 773 | edele 774 | eerst 775 | effen 776 | egaal 777 | egale 778 | egels 779 | eicel 780 | eigen 781 | eikel 782 | eiken 783 | eiker 784 | einde 785 | eindt 786 | eisen 787 | eiser 788 | eiste 789 | eitje 790 | eivol 791 | eiwit 792 | eland 793 | elfde 794 | elfen 795 | elfje 796 | elite 797 | elpee 798 | elpen 799 | elven 800 | elzen 801 | email 802 | emelt 803 | emmer 804 | emoes 805 | enfin 806 | engel 807 | enger 808 | engst 809 | engte 810 | enige 811 | enkel 812 | enken 813 | enorm 814 | enter 815 | enzym 816 | epiek 817 | eraan 818 | erbij 819 | erfde 820 | erger 821 | ergst 822 | ermee 823 | ernst 824 | ertoe 825 | eruit 826 | ervan 827 | erven 828 | essay 829 | essen 830 | etage 831 | etend 832 | eters 833 | ether 834 | ethos 835 | ethyl 836 | etsen 837 | etser 838 | etste 839 | etter 840 | etude 841 | etuis 842 | evele 843 | evels 844 | evers 845 | exact 846 | exoot 847 | expat 848 | extra 849 | ezels 850 | faalt 851 | fabel 852 | facet 853 | facie 854 | fagot 855 | faire 856 | fairs 857 | faken 858 | faket 859 | fakir 860 | falen 861 | falie 862 | farad 863 | farao 864 | farce 865 | farde 866 | farms 867 | fasen 868 | fauna 869 | faxen 870 | faxte 871 | fazen 872 | feeks 873 | feest 874 | feilt 875 | felle 876 | felst 877 | femel 878 | ferme 879 | ferry 880 | fetas 881 | fezel 882 | fiere 883 | fiets 884 | fijne 885 | fijns 886 | fikse 887 | fikst 888 | files 889 | filet 890 | films 891 | filmt 892 | firma 893 | fitst 894 | fitte 895 | fjord 896 | flair 897 | flank 898 | flans 899 | flapt 900 | flard 901 | flash 902 | flats 903 | flauw 904 | fleem 905 | fleer 906 | flens 907 | flets 908 | fleur 909 | flikt 910 | flink 911 | flipt 912 | flirt 913 | flits 914 | floep 915 | floer 916 | flora 917 | floss 918 | flost 919 | fluim 920 | fluit 921 | fluor 922 | flyer 923 | fobie 924 | focus 925 | foert 926 | fokte 927 | folie 928 | fopte 929 | forel 930 | foren 931 | forma 932 | forse 933 | forst 934 | forte 935 | forum 936 | fossa 937 | foton 938 | foute 939 | foyer 940 | fraai 941 | frame 942 | franc 943 | frase 944 | frats 945 | frees 946 | frets 947 | friet 948 | frigo 949 | frijn 950 | frist 951 | frons 952 | front 953 | fruit 954 | frust 955 | fuift 956 | funky 957 | furie 958 | fusie 959 | futen 960 | futon 961 | fysio 962 | gaand 963 | gaden 964 | gagel 965 | gaine 966 | galde 967 | galei 968 | galen 969 | galmt 970 | galop 971 | gamba 972 | gamel 973 | gamen 974 | gamer 975 | games 976 | gamet 977 | gamma 978 | ganse 979 | gapen 980 | gaper 981 | gapte 982 | garde 983 | garen 984 | garft 985 | garve 986 | gaste 987 | gaten 988 | gaven 989 | gazel 990 | gazen 991 | gazet 992 | gazon 993 | gebak 994 | gebed 995 | gebel 996 | gebit 997 | gebod 998 | gedag 999 | gedij 1000 | gedoe 1001 | gedut 1002 | geduw 1003 | geeft 1004 | geeks 1005 | geels 1006 | geelt 1007 | geest 1008 | geeuw 1009 | gegil 1010 | gehad 1011 | geile 1012 | geilt 1013 | gejat 1014 | gejut 1015 | gekat 1016 | gekef 1017 | gekir 1018 | gekit 1019 | gekke 1020 | gekko 1021 | gekst 1022 | gekte 1023 | gelag 1024 | geldt 1025 | gelee 1026 | gelei 1027 | gelen 1028 | geler 1029 | gelet 1030 | gelid 1031 | gelig 1032 | gelik 1033 | gelui 1034 | geluk 1035 | gelul 1036 | geluw 1037 | gemak 1038 | gemis 1039 | gemok 1040 | gemor 1041 | gemot 1042 | genas 1043 | genat 1044 | genen 1045 | gener 1046 | genet 1047 | genie 1048 | genot 1049 | genre 1050 | genus 1051 | gepuf 1052 | gered 1053 | gerei 1054 | geren 1055 | gerij 1056 | gerit 1057 | gerot 1058 | gerst 1059 | gesar 1060 | gesol 1061 | gespt 1062 | gesse 1063 | geste 1064 | getal 1065 | getij 1066 | getik 1067 | getob 1068 | getto 1069 | getut 1070 | geuit 1071 | geurt 1072 | geuze 1073 | geval 1074 | gevat 1075 | gevel 1076 | geven 1077 | gever 1078 | gevit 1079 | gevut 1080 | gewas 1081 | gewei 1082 | gewen 1083 | gewet 1084 | gewin 1085 | gewis 1086 | gezag 1087 | gezel 1088 | gezet 1089 | gezin 1090 | gidst 1091 | giert 1092 | gilde 1093 | gilet 1094 | ginds 1095 | ginst 1096 | giraf 1097 | gispt 1098 | giste 1099 | gladt 1100 | glans 1101 | gleed 1102 | gleuf 1103 | glijd 1104 | glimp 1105 | glimt 1106 | glipt 1107 | globe 1108 | gloed 1109 | gloei 1110 | glooi 1111 | gloop 1112 | gloor 1113 | gluip 1114 | gluur 1115 | gneis 1116 | gnoes 1117 | gnoom 1118 | gnuif 1119 | goals 1120 | goden 1121 | godin 1122 | goede 1123 | goeds 1124 | gokje 1125 | gokte 1126 | golem 1127 | golft 1128 | gomde 1129 | gomma 1130 | gongs 1131 | gonst 1132 | gooit 1133 | goors 1134 | gordt 1135 | gorig 1136 | goten 1137 | goths 1138 | gouwe 1139 | gozer 1140 | graad 1141 | graaf 1142 | graag 1143 | graai 1144 | graal 1145 | graan 1146 | graas 1147 | graat 1148 | grapt 1149 | grauw 1150 | greep 1151 | grein 1152 | grens 1153 | grief 1154 | griep 1155 | griet 1156 | grift 1157 | grijp 1158 | grijs 1159 | grill 1160 | grilt 1161 | grime 1162 | grimt 1163 | grind 1164 | groef 1165 | groei 1166 | groen 1167 | groep 1168 | groet 1169 | gromt 1170 | grond 1171 | groot 1172 | grote 1173 | grove 1174 | gruis 1175 | gruwt 1176 | gulle 1177 | gulpt 1178 | gulst 1179 | gunde 1180 | gunst 1181 | guppy 1182 | guste 1183 | gutst 1184 | gymde 1185 | gyros 1186 | haagt 1187 | haait 1188 | haaks 1189 | haakt 1190 | haalt 1191 | haard 1192 | haast 1193 | hackt 1194 | hagel 1195 | hagen 1196 | haiku 1197 | haken 1198 | haker 1199 | hakje 1200 | hakte 1201 | halal 1202 | halen 1203 | haler 1204 | hallo 1205 | halls 1206 | halte 1207 | halve 1208 | hamer 1209 | hanen 1210 | hangt 1211 | hanig 1212 | haper 1213 | hapje 1214 | hapte 1215 | haram 1216 | harde 1217 | hards 1218 | hardt 1219 | harem 1220 | haren 1221 | harig 1222 | harkt 1223 | harre 1224 | harst 1225 | haten 1226 | hater 1227 | haven 1228 | havik 1229 | hazen 1230 | hecht 1231 | heden 1232 | heeft 1233 | heelt 1234 | heers 1235 | heest 1236 | hegje 1237 | heide 1238 | heisa 1239 | hekel 1240 | hekje 1241 | helde 1242 | helen 1243 | heler 1244 | helft 1245 | helix 1246 | helle 1247 | helpt 1248 | helse 1249 | helst 1250 | hemde 1251 | hemel 1252 | hemen 1253 | henen 1254 | henna 1255 | hepen 1256 | heren 1257 | hertz 1258 | hesen 1259 | heser 1260 | hesje 1261 | heten 1262 | heugt 1263 | heult 1264 | heuse 1265 | heust 1266 | hevel 1267 | heven 1268 | hevig 1269 | hiaat 1270 | hield 1271 | hielp 1272 | hielt 1273 | hijgt 1274 | hijst 1275 | hinde 1276 | hinkt 1277 | hints 1278 | hippe 1279 | hipst 1280 | hitte 1281 | hobby 1282 | hoede 1283 | hoedt 1284 | hoeft 1285 | hoeks 1286 | hoera 1287 | hoest 1288 | hoeve 1289 | hoezo 1290 | hofje 1291 | hogen 1292 | hoger 1293 | hokje 1294 | hokte 1295 | holde 1296 | holen 1297 | holle 1298 | holst 1299 | holte 1300 | honds 1301 | honen 1302 | honig 1303 | honkt 1304 | hoofd 1305 | hoogt 1306 | hoopt 1307 | hoorn 1308 | hoort 1309 | hopen 1310 | hopla 1311 | hopsa 1312 | hopte 1313 | horde 1314 | horen 1315 | horig 1316 | horst 1317 | hosts 1318 | hotel 1319 | houdt 1320 | hozen 1321 | huift 1322 | huilt 1323 | huist 1324 | hukte 1325 | hulde 1326 | hulst 1327 | humde 1328 | humor 1329 | humus 1330 | hupte 1331 | huren 1332 | hurkt 1333 | husky 1334 | hutje 1335 | hutst 1336 | huurt 1337 | huwde 1338 | huwen 1339 | hydra 1340 | hyena 1341 | hymne 1342 | hypen 1343 | hyper 1344 | hypes 1345 | iaden 1346 | icoon 1347 | idool 1348 | ieder 1349 | ijdel 1350 | ijken 1351 | ijker 1352 | ijkte 1353 | ijlde 1354 | ijlen 1355 | ijler 1356 | ijlst 1357 | ijsde 1358 | ijsje 1359 | ijver 1360 | ijzel 1361 | ijzer 1362 | ijzig 1363 | imago 1364 | imker 1365 | immer 1366 | inbed 1367 | inbel 1368 | inbox 1369 | index 1370 | indik 1371 | indut 1372 | induw 1373 | ineen 1374 | inent 1375 | inert 1376 | infra 1377 | ingaf 1378 | inhak 1379 | inham 1380 | inkom 1381 | inlap 1382 | inlas 1383 | inleg 1384 | inlog 1385 | inlos 1386 | inmat 1387 | innam 1388 | innen 1389 | innig 1390 | inpak 1391 | inpik 1392 | input 1393 | inren 1394 | inrit 1395 | intik 1396 | intro 1397 | intyp 1398 | inval 1399 | invet 1400 | invul 1401 | inzag 1402 | inzet 1403 | inzie 1404 | ionen 1405 | ippon 1406 | islam 1407 | ivoor 1408 | jaagt 1409 | jaapt 1410 | jaars 1411 | jabot 1412 | jacht 1413 | jacks 1414 | jaden 1415 | jagen 1416 | jager 1417 | jambe 1418 | jamde 1419 | janet 1420 | jankt 1421 | janus 1422 | japen 1423 | japon 1424 | jaren 1425 | jarig 1426 | jasje 1427 | jaste 1428 | jatte 1429 | javel 1430 | jawel 1431 | jeans 1432 | jeeps 1433 | jemig 1434 | jetje 1435 | jeugd 1436 | jeukt 1437 | jicht 1438 | jihad 1439 | jodel 1440 | joelt 1441 | jogde 1442 | joint 1443 | joker 1444 | jokte 1445 | jolde 1446 | jolen 1447 | jolig 1448 | jonde 1449 | jonen 1450 | jonge 1451 | jongs 1452 | jongt 1453 | jookt 1454 | joude 1455 | jouen 1456 | joule 1457 | jouwe 1458 | jouwt 1459 | jubel 1460 | judas 1461 | juich 1462 | juist 1463 | jumbo 1464 | junks 1465 | juten 1466 | jutte 1467 | kaapt 1468 | kaars 1469 | kaart 1470 | kaast 1471 | kaats 1472 | kabas 1473 | kabel 1474 | kadee 1475 | kader 1476 | kadet 1477 | kajak 1478 | kakel 1479 | kaken 1480 | kakte 1481 | kalde 1482 | kalen 1483 | kaler 1484 | kalft 1485 | kalig 1486 | kalkt 1487 | kalme 1488 | kamde 1489 | kamig 1490 | kampt 1491 | kanji 1492 | kanon 1493 | kante 1494 | kapel 1495 | kapen 1496 | kaper 1497 | kapje 1498 | kapot 1499 | kappa 1500 | kapte 1501 | karde 1502 | karig 1503 | karma 1504 | karts 1505 | kasje 1506 | kassa 1507 | kaste 1508 | kater 1509 | katje 1510 | kauwt 1511 | kazen 1512 | kebab 1513 | keert 1514 | kefte 1515 | kegel 1516 | keien 1517 | keken 1518 | keker 1519 | kelen 1520 | kepen 1521 | keper 1522 | kerel 1523 | keren 1524 | kerft 1525 | kerks 1526 | kermt 1527 | kerst 1528 | ketel 1529 | keten 1530 | ketst 1531 | keurs 1532 | keurt 1533 | keuze 1534 | kevel 1535 | kever 1536 | kiemt 1537 | kiept 1538 | kiert 1539 | kiest 1540 | kieuw 1541 | kijkt 1542 | kille 1543 | kilst 1544 | kilte 1545 | kilts 1546 | kinds 1547 | kiosk 1548 | kipje 1549 | kirde 1550 | kitst 1551 | klaag 1552 | klaar 1553 | kladt 1554 | klamp 1555 | klank 1556 | klant 1557 | klapt 1558 | klare 1559 | klats 1560 | klauw 1561 | kleed 1562 | kleef 1563 | klein 1564 | klemt 1565 | klept 1566 | klerk 1567 | klets 1568 | kleur 1569 | kliek 1570 | klier 1571 | klikt 1572 | klimt 1573 | kling 1574 | klink 1575 | kloek 1576 | kloet 1577 | klojo 1578 | klokt 1579 | klomp 1580 | klonk 1581 | klont 1582 | kloof 1583 | klooi 1584 | kloot 1585 | klopt 1586 | klost 1587 | klote 1588 | klots 1589 | klove 1590 | kluif 1591 | kluis 1592 | kluit 1593 | kluns 1594 | kluts 1595 | knaag 1596 | knaap 1597 | knakt 1598 | knalt 1599 | knapt 1600 | knars 1601 | knauw 1602 | kneed 1603 | kneep 1604 | knelt 1605 | kneus 1606 | kniel 1607 | knies 1608 | knijp 1609 | knikt 1610 | knipt 1611 | knoei 1612 | knokt 1613 | knook 1614 | knoop 1615 | knopt 1616 | knort 1617 | knots 1618 | knust 1619 | koala 1620 | kobbe 1621 | kocht 1622 | kodak 1623 | kodde 1624 | koekt 1625 | koele 1626 | koelt 1627 | koene 1628 | koers 1629 | koert 1630 | koest 1631 | koets 1632 | kogel 1633 | koken 1634 | koker 1635 | koket 1636 | kokos 1637 | kolen 1638 | kolkt 1639 | kolom 1640 | kolos 1641 | komaf 1642 | komen 1643 | komma 1644 | komst 1645 | konen 1646 | kookt 1647 | koopt 1648 | koord 1649 | kopen 1650 | koper 1651 | kopie 1652 | kopje 1653 | kopte 1654 | korft 1655 | korps 1656 | korst 1657 | korte 1658 | koste 1659 | koten 1660 | koter 1661 | kotje 1662 | kotst 1663 | koude 1664 | kouds 1665 | koven 1666 | kozen 1667 | kraag 1668 | kraai 1669 | kraak 1670 | kraal 1671 | kraam 1672 | kraan 1673 | krabt 1674 | krakt 1675 | kramp 1676 | krans 1677 | krant 1678 | kreeg 1679 | krees 1680 | kreet 1681 | kreng 1682 | krent 1683 | krept 1684 | kreuk 1685 | kreun 1686 | kribt 1687 | kriek 1688 | kriel 1689 | krijg 1690 | krijs 1691 | krijt 1692 | krikt 1693 | krill 1694 | krimp 1695 | kring 1696 | kroeg 1697 | kroes 1698 | krols 1699 | kromp 1700 | kromt 1701 | kroon 1702 | kroop 1703 | kroos 1704 | kruid 1705 | kruik 1706 | kruin 1707 | kruip 1708 | kruis 1709 | kruit 1710 | krukt 1711 | krult 1712 | kubus 1713 | kucht 1714 | kudde 1715 | kuier 1716 | kuift 1717 | kuilt 1718 | kuipt 1719 | kuise 1720 | kuist 1721 | kunde 1722 | kunst 1723 | kuren 1724 | kurkt 1725 | kusje 1726 | kuste 1727 | kutje 1728 | kuurt 1729 | kwaad 1730 | kwaak 1731 | kwaal 1732 | kwade 1733 | kwakt 1734 | kwant 1735 | kwark 1736 | kwart 1737 | kwast 1738 | kweek 1739 | kweel 1740 | kwelt 1741 | kwets 1742 | kwiek 1743 | kwijl 1744 | kwijn 1745 | kwijt 1746 | kwint 1747 | laadt 1748 | laaft 1749 | laaie 1750 | laait 1751 | laakt 1752 | laars 1753 | label 1754 | lacht 1755 | laden 1756 | lader 1757 | lades 1758 | laffe 1759 | lafst 1760 | lagen 1761 | lager 1762 | lakei 1763 | laken 1764 | lakse 1765 | lakst 1766 | lakte 1767 | lalde 1768 | lamel 1769 | lamet 1770 | lamme 1771 | lamst 1772 | lande 1773 | lands 1774 | landt 1775 | lanen 1776 | lange 1777 | langs 1778 | langt 1779 | lapje 1780 | lapte 1781 | laren 1782 | larie 1783 | larve 1784 | laser 1785 | lasso 1786 | laste 1787 | laten 1788 | later 1789 | latex 1790 | latje 1791 | latte 1792 | lauwe 1793 | leden 1794 | leder 1795 | ledig 1796 | leeft 1797 | leegt 1798 | leent 1799 | leers 1800 | leert 1801 | leest 1802 | legde 1803 | legen 1804 | leger 1805 | leidt 1806 | leien 1807 | leken 1808 | lekje 1809 | lekke 1810 | lekst 1811 | lekte 1812 | lelde 1813 | lelie 1814 | lemen 1815 | lemma 1816 | lende 1817 | lenen 1818 | lener 1819 | lengt 1820 | lenig 1821 | lente 1822 | lenze 1823 | lepel 1824 | lepra 1825 | lepte 1826 | leren 1827 | lesje 1828 | leste 1829 | lette 1830 | leuke 1831 | leuks 1832 | leunt 1833 | leurt 1834 | leute 1835 | leuze 1836 | level 1837 | leven 1838 | lever 1839 | lezen 1840 | lezer 1841 | liaan 1842 | libel 1843 | licht 1844 | lidje 1845 | liefs 1846 | liegt 1847 | lieve 1848 | lijdt 1849 | lijft 1850 | lijkt 1851 | lijmt 1852 | lijnt 1853 | lijpe 1854 | lijst 1855 | likje 1856 | likte 1857 | limbo 1858 | linde 1859 | linie 1860 | linke 1861 | links 1862 | linkt 1863 | linze 1864 | lipje 1865 | lipte 1866 | lires 1867 | lispt 1868 | liter 1869 | lobby 1870 | lobje 1871 | loden 1872 | loeft 1873 | loeit 1874 | loert 1875 | logee 1876 | logen 1877 | loges 1878 | logge 1879 | logos 1880 | logst 1881 | loipe 1882 | loken 1883 | loket 1884 | lokte 1885 | lokus 1886 | lolde 1887 | lolly 1888 | lompe 1889 | lonen 1890 | lonkt 1891 | loods 1892 | loodt 1893 | looft 1894 | loogt 1895 | looit 1896 | looms 1897 | loont 1898 | loops 1899 | loopt 1900 | loost 1901 | lopen 1902 | loper 1903 | lords 1904 | lorre 1905 | loser 1906 | losse 1907 | loste 1908 | loten 1909 | lotje 1910 | lotto 1911 | lotus 1912 | loven 1913 | lover 1914 | lozen 1915 | lozer 1916 | lubde 1917 | lucht 1918 | luide 1919 | luidt 1920 | luien 1921 | luier 1922 | luikt 1923 | luimt 1924 | luist 1925 | lukte 1926 | lulde 1927 | lumen 1928 | lumme 1929 | lunch 1930 | lurkt 1931 | lusje 1932 | lutje 1933 | luwde 1934 | luwen 1935 | luwer 1936 | luwst 1937 | luwte 1938 | luxer 1939 | luxes 1940 | lynch 1941 | maait 1942 | maakt 1943 | maalt 1944 | maand 1945 | maart 1946 | maats 1947 | macho 1948 | macht 1949 | macro 1950 | madam 1951 | maden 1952 | maffe 1953 | mafje 1954 | mafst 1955 | mafte 1956 | magen 1957 | mager 1958 | magie 1959 | magma 1960 | magot 1961 | mails 1962 | mailt 1963 | majem 1964 | major 1965 | makam 1966 | makel 1967 | maken 1968 | maker 1969 | makke 1970 | makst 1971 | malde 1972 | malen 1973 | maler 1974 | malie 1975 | malle 1976 | malls 1977 | malse 1978 | malst 1979 | manen 1980 | maner 1981 | manga 1982 | mango 1983 | manke 1984 | mankt 1985 | manna 1986 | manse 1987 | mapje 1988 | marde 1989 | maren 1990 | marge 1991 | markt 1992 | marlt 1993 | marot 1994 | massa 1995 | match 1996 | maten 1997 | mater 1998 | matig 1999 | matje 2000 | matse 2001 | matst 2002 | matte 2003 | mauve 2004 | mauwt 2005 | mazel 2006 | mazen 2007 | meden 2008 | media 2009 | meent 2010 | meers 2011 | meert 2012 | meest 2013 | meeuw 2014 | mekte 2015 | melde 2016 | meldt 2017 | melen 2018 | melig 2019 | melkt 2020 | memel 2021 | mende 2022 | menen 2023 | mengt 2024 | menie 2025 | menig 2026 | mepte 2027 | merel 2028 | meren 2029 | merkt 2030 | mesje 2031 | meten 2032 | meter 2033 | metro 2034 | metst 2035 | meukt 2036 | meurt 2037 | meute 2038 | mezen 2039 | miauw 2040 | micro 2041 | miert 2042 | mijdt 2043 | mijne 2044 | mijns 2045 | mijnt 2046 | mikte 2047 | milde 2048 | mille 2049 | mimen 2050 | mimer 2051 | mimes 2052 | minde 2053 | minks 2054 | minne 2055 | minor 2056 | minst 2057 | minus 2058 | misse 2059 | miste 2060 | mitst 2061 | mixen 2062 | mixer 2063 | mixte 2064 | mocht 2065 | model 2066 | modem 2067 | modes 2068 | modus 2069 | moede 2070 | moeit 2071 | moeke 2072 | moert 2073 | moest 2074 | mofje 2075 | mogen 2076 | moker 2077 | mokka 2078 | mokte 2079 | molde 2080 | molen 2081 | molik 2082 | molmt 2083 | momde 2084 | monde 2085 | mondt 2086 | moogt 2087 | mooie 2088 | moois 2089 | moord 2090 | mopje 2091 | morde 2092 | morel 2093 | moren 2094 | mores 2095 | morse 2096 | morst 2097 | motel 2098 | moten 2099 | motie 2100 | motje 2101 | motor 2102 | motse 2103 | motst 2104 | motte 2105 | motto 2106 | mozen 2107 | muffe 2108 | mufst 2109 | mufte 2110 | mugje 2111 | muien 2112 | muikt 2113 | muist 2114 | mulat 2115 | mulle 2116 | mulst 2117 | muren 2118 | musea 2119 | musje 2120 | musts 2121 | muzen 2122 | mythe 2123 | naait 2124 | naakt 2125 | naald 2126 | naast 2127 | nabij 2128 | nacht 2129 | nadar 2130 | nadat 2131 | naden 2132 | nader 2133 | nagel 2134 | nakie 2135 | nakom 2136 | nalas 2137 | naoog 2138 | napje 2139 | narde 2140 | natel 2141 | natie 2142 | natje 2143 | natst 2144 | nauwe 2145 | navel 2146 | nazag 2147 | nazeg 2148 | nazei 2149 | nazet 2150 | nazie 2151 | nazin 2152 | nazit 2153 | neder 2154 | neemt 2155 | negen 2156 | neigt 2157 | nekje 2158 | nekte 2159 | nemen 2160 | nemer 2161 | neppe 2162 | nepte 2163 | nerds 2164 | nerts 2165 | neten 2166 | netje 2167 | netst 2168 | nette 2169 | netto 2170 | neukt 2171 | neust 2172 | nevel 2173 | neven 2174 | niche 2175 | nicht 2176 | niest 2177 | niets 2178 | nieuw 2179 | nihil 2180 | nijgt 2181 | nijpt 2182 | nikte 2183 | nipje 2184 | nipte 2185 | nisje 2186 | nobel 2187 | noden 2188 | nodig 2189 | noemt 2190 | noest 2191 | nogal 2192 | nooit 2193 | noord 2194 | norse 2195 | norst 2196 | noten 2197 | notie 2198 | nylon 2199 | oasen 2200 | oases 2201 | oasis 2202 | obers 2203 | octet 2204 | odeur 2205 | odium 2206 | oefen 2207 | oenen 2208 | oenig 2209 | oeros 2210 | oever 2211 | offer 2212 | ofwel 2213 | ogend 2214 | ogief 2215 | okapi 2216 | oksel 2217 | olies 2218 | olijf 2219 | olmen 2220 | omarm 2221 | omdat 2222 | omdoe 2223 | omduw 2224 | omega 2225 | omgaf 2226 | omhak 2227 | omhul 2228 | omleg 2229 | omrij 2230 | omrit 2231 | omrol 2232 | omver 2233 | omwal 2234 | omweg 2235 | omzag 2236 | omzeg 2237 | omzei 2238 | omzet 2239 | omzie 2240 | omzit 2241 | onder 2242 | onmin 2243 | onnet 2244 | onnut 2245 | onsen 2246 | onsje 2247 | ontga 2248 | onwel 2249 | onwil 2250 | onzen 2251 | onzer 2252 | onzes 2253 | onzin 2254 | oogde 2255 | oogje 2256 | oogst 2257 | ootje 2258 | opbak 2259 | opbel 2260 | opbod 2261 | opdat 2262 | opdoe 2263 | opdof 2264 | opduw 2265 | opeen 2266 | opeet 2267 | opeis 2268 | opens 2269 | opent 2270 | opera 2271 | opfok 2272 | opgaf 2273 | ophad 2274 | opheb 2275 | ophef 2276 | opium 2277 | opjut 2278 | opkam 2279 | opkan 2280 | opkap 2281 | opkom 2282 | oplap 2283 | oplas 2284 | opleg 2285 | oplet 2286 | oplos 2287 | opmat 2288 | opnam 2289 | oppak 2290 | oppas 2291 | opper 2292 | oppik 2293 | oprij 2294 | oprit 2295 | oprol 2296 | oprot 2297 | opsom 2298 | opsta 2299 | optel 2300 | optie 2301 | opval 2302 | opvat 2303 | opvis 2304 | opvul 2305 | opwas 2306 | opwek 2307 | opwel 2308 | opzag 2309 | opzak 2310 | opzat 2311 | opzeg 2312 | opzet 2313 | opzij 2314 | oraal 2315 | orale 2316 | orden 2317 | order 2318 | ordes 2319 | orgel 2320 | orgie 2321 | oribi 2322 | ossen 2323 | otium 2324 | otter 2325 | ouden 2326 | ouder 2327 | oudje 2328 | oudst 2329 | ovaal 2330 | ovale 2331 | ovens 2332 | oxide 2333 | paait 2334 | paalt 2335 | paaps 2336 | paard 2337 | paars 2338 | paart 2339 | pacht 2340 | paden 2341 | padje 2342 | paffe 2343 | pafje 2344 | pafte 2345 | pakje 2346 | pakte 2347 | palen 2348 | palet 2349 | palmt 2350 | panda 2351 | panne 2352 | panty 2353 | papil 2354 | papje 2355 | papte 2356 | parel 2357 | paren 2358 | parka 2359 | pasen 2360 | pasje 2361 | pasta 2362 | paste 2363 | patat 2364 | pater 2365 | patst 2366 | paukt 2367 | pauze 2368 | peilt 2369 | pekel 2370 | pekte 2371 | pelde 2372 | pelen 2373 | penis 2374 | peper 2375 | pepte 2376 | peren 2377 | perkt 2378 | perst 2379 | pesto 2380 | peter 2381 | petje 2382 | peurt 2383 | pezen 2384 | pezig 2385 | piano 2386 | piekt 2387 | piept 2388 | piert 2389 | pijpt 2390 | pikte 2391 | pinda 2392 | pinde 2393 | pinkt 2394 | pions 2395 | pipet 2396 | pipse 2397 | pipst 2398 | piste 2399 | pitje 2400 | pixel 2401 | pizza 2402 | plaag 2403 | plaat 2404 | plakt 2405 | plank 2406 | plant 2407 | plast 2408 | plats 2409 | plebs 2410 | pleeg 2411 | plein 2412 | pleit 2413 | plekt 2414 | plens 2415 | plets 2416 | pleur 2417 | plint 2418 | ploeg 2419 | ploft 2420 | plomp 2421 | plons 2422 | plooi 2423 | ploos 2424 | ploot 2425 | plots 2426 | plugt 2427 | pluim 2428 | pluis 2429 | plukt 2430 | poema 2431 | poept 2432 | poets 2433 | pofte 2434 | poker 2435 | polio 2436 | polka 2437 | polls 2438 | pompt 2439 | poort 2440 | popel 2441 | popje 2442 | porde 2443 | porie 2444 | porno 2445 | porti 2446 | porto 2447 | poses 2448 | poten 2449 | potig 2450 | potje 2451 | pozen 2452 | praai 2453 | praal 2454 | praat 2455 | preek 2456 | prees 2457 | prent 2458 | priel 2459 | priem 2460 | prijs 2461 | prikt 2462 | prima 2463 | prime 2464 | primo 2465 | prins 2466 | print 2467 | prion 2468 | prior 2469 | proef 2470 | promo 2471 | pronk 2472 | prooi 2473 | propt 2474 | proxy 2475 | proza 2476 | pruik 2477 | pruim 2478 | pruts 2479 | psalm 2480 | puber 2481 | pubis 2482 | pucks 2483 | pufte 2484 | puien 2485 | puike 2486 | puilt 2487 | puist 2488 | pukje 2489 | pulkt 2490 | punks 2491 | pupil 2492 | puppy 2493 | puree 2494 | puren 2495 | putje 2496 | quads 2497 | quant 2498 | quark 2499 | quasi 2500 | query 2501 | quota 2502 | quote 2503 | raadt 2504 | raakt 2505 | raamt 2506 | raapt 2507 | raars 2508 | raast 2509 | rabbi 2510 | racen 2511 | racer 2512 | races 2513 | radar 2514 | raden 2515 | rader 2516 | radio 2517 | radje 2518 | radon 2519 | radst 2520 | rafel 2521 | ragde 2522 | ragen 2523 | rages 2524 | rails 2525 | rakel 2526 | raken 2527 | raker 2528 | raket 2529 | rally 2530 | rambo 2531 | ramde 2532 | ramen 2533 | ranke 2534 | ranze 2535 | rapen 2536 | rappe 2537 | rapst 2538 | rapte 2539 | raspt 2540 | ratel 2541 | raten 2542 | ratio 2543 | ratje 2544 | ratst 2545 | rauwe 2546 | raven 2547 | ravot 2548 | rayon 2549 | razen 2550 | reaal 2551 | rebel 2552 | rebus 2553 | recht 2554 | recta 2555 | recto 2556 | redde 2557 | reden 2558 | reeds 2559 | reeks 2560 | reept 2561 | regel 2562 | regen 2563 | regie 2564 | regio 2565 | reide 2566 | reien 2567 | reikt 2568 | reine 2569 | reist 2570 | reken 2571 | rekje 2572 | rekke 2573 | rekte 2574 | relax 2575 | relde 2576 | relen 2577 | remde 2578 | remix 2579 | rende 2580 | renen 2581 | rente 2582 | repel 2583 | repen 2584 | repte 2585 | reset 2586 | reten 2587 | reuma 2588 | reuze 2589 | revue 2590 | rezen 2591 | richt 2592 | riekt 2593 | riemt 2594 | rijde 2595 | rijdt 2596 | rijke 2597 | rijks 2598 | rijmt 2599 | rijpe 2600 | rijpt 2601 | rijst 2602 | rikte 2603 | rilde 2604 | rille 2605 | rilst 2606 | ringt 2607 | rinks 2608 | rinse 2609 | rinst 2610 | riool 2611 | riten 2612 | rites 2613 | ritje 2614 | ritme 2615 | ritst 2616 | ritte 2617 | ritus 2618 | robot 2619 | rockt 2620 | rodel 2621 | roden 2622 | rodeo 2623 | roder 2624 | roede 2625 | roeit 2626 | roemt 2627 | roept 2628 | roers 2629 | roert 2630 | roest 2631 | rogge 2632 | rogje 2633 | roken 2634 | roker 2635 | rokje 2636 | rokte 2637 | rolde 2638 | roman 2639 | romen 2640 | romer 2641 | romig 2642 | ronde 2643 | rondt 2644 | ronkt 2645 | rooft 2646 | rooie 2647 | rooit 2648 | rookt 2649 | roomt 2650 | roost 2651 | ropij 2652 | ropte 2653 | rosse 2654 | roste 2655 | rotje 2656 | rotor 2657 | rotst 2658 | rotte 2659 | route 2660 | rouwe 2661 | rouwt 2662 | roven 2663 | rover 2664 | rozen 2665 | rozet 2666 | rozig 2667 | rugby 2668 | rugje 2669 | ruide 2670 | ruien 2671 | ruift 2672 | ruige 2673 | ruikt 2674 | ruilt 2675 | ruime 2676 | ruimt 2677 | ruist 2678 | rukte 2679 | rulle 2680 | rulst 2681 | rumba 2682 | runen 2683 | ruste 2684 | ruwde 2685 | ruwen 2686 | ruwer 2687 | ruwst 2688 | ruwte 2689 | ruzie 2690 | saaie 2691 | saais 2692 | sabel 2693 | sabra 2694 | saldo 2695 | salie 2696 | salon 2697 | salsa 2698 | salto 2699 | salut 2700 | salvo 2701 | samba 2702 | samen 2703 | sapje 2704 | sappe 2705 | sarde 2706 | saste 2707 | satan 2708 | sater 2709 | sauna 2710 | saust 2711 | saven 2712 | savet 2713 | saxen 2714 | scala 2715 | scalp 2716 | scans 2717 | scant 2718 | scene 2719 | schaf 2720 | schal 2721 | schap 2722 | schar 2723 | schat 2724 | schee 2725 | scheg 2726 | schei 2727 | schel 2728 | schep 2729 | schik 2730 | schil 2731 | schim 2732 | schip 2733 | schok 2734 | schol 2735 | schop 2736 | schor 2737 | schub 2738 | schud 2739 | schut 2740 | schuw 2741 | scope 2742 | score 2743 | scout 2744 | scrol 2745 | scrub 2746 | scrum 2747 | seder 2748 | sekse 2749 | sekst 2750 | sekte 2751 | sepia 2752 | sepot 2753 | serie 2754 | serre 2755 | serum 2756 | servo 2757 | sesam 2758 | setje 2759 | sfeer 2760 | sfinx 2761 | shake 2762 | sheet 2763 | shell 2764 | shift 2765 | shirt 2766 | shock 2767 | shops 2768 | shopt 2769 | short 2770 | shots 2771 | shows 2772 | showt 2773 | siert 2774 | sifon 2775 | sigma 2776 | sikhs 2777 | sikje 2778 | sinds 2779 | sinus 2780 | sippe 2781 | sipst 2782 | siste 2783 | sites 2784 | sjaal 2785 | sjans 2786 | sjapt 2787 | sjerp 2788 | sjilp 2789 | sjirp 2790 | skate 2791 | slaag 2792 | slaan 2793 | slaap 2794 | slaat 2795 | slang 2796 | slank 2797 | slapt 2798 | slash 2799 | slede 2800 | sleed 2801 | sleep 2802 | sleet 2803 | slemp 2804 | slenk 2805 | sleuf 2806 | sleur 2807 | slibt 2808 | sliep 2809 | slier 2810 | sliet 2811 | slijk 2812 | slijm 2813 | slijp 2814 | slijt 2815 | slikt 2816 | slims 2817 | slink 2818 | slips 2819 | slipt 2820 | slist 2821 | sloef 2822 | sloeg 2823 | sloep 2824 | sloft 2825 | slokt 2826 | slome 2827 | slomp 2828 | slonk 2829 | slons 2830 | sloof 2831 | slooi 2832 | slook 2833 | sloom 2834 | sloop 2835 | sloor 2836 | sloot 2837 | slorp 2838 | sluif 2839 | sluik 2840 | sluip 2841 | sluis 2842 | sluit 2843 | slump 2844 | slums 2845 | slurf 2846 | slurp 2847 | sluwe 2848 | smaak 2849 | small 2850 | smart 2851 | smash 2852 | smeed 2853 | smeek 2854 | smeer 2855 | smelt 2856 | smeue 2857 | smeul 2858 | smijt 2859 | smoel 2860 | smoes 2861 | smokt 2862 | smolt 2863 | smook 2864 | smoor 2865 | smult 2866 | smurf 2867 | snaai 2868 | snaak 2869 | snaar 2870 | snack 2871 | snakt 2872 | snapt 2873 | snars 2874 | snauw 2875 | snede 2876 | sneed 2877 | snelt 2878 | snerk 2879 | snerp 2880 | snert 2881 | sneue 2882 | snibt 2883 | snijd 2884 | snikt 2885 | snobs 2886 | snode 2887 | snoei 2888 | snoek 2889 | snoep 2890 | snoer 2891 | snoes 2892 | snoet 2893 | snokt 2894 | snood 2895 | snoof 2896 | snoot 2897 | snuft 2898 | snuif 2899 | snuit 2900 | snurk 2901 | soaps 2902 | sober 2903 | soefi 2904 | soeks 2905 | soeps 2906 | softe 2907 | softs 2908 | sokje 2909 | solde 2910 | solen 2911 | solex 2912 | somde 2913 | sonar 2914 | sonde 2915 | songs 2916 | soort 2917 | sopje 2918 | sopte 2919 | sorry 2920 | spaar 2921 | spade 2922 | spalk 2923 | spant 2924 | spats 2925 | speek 2926 | speel 2927 | speen 2928 | speer 2929 | speet 2930 | spekt 2931 | speld 2932 | spelt 2933 | spert 2934 | speur 2935 | spiek 2936 | spier 2937 | spies 2938 | spijk 2939 | spijl 2940 | spijs 2941 | spijt 2942 | spion 2943 | spits 2944 | split 2945 | spoed 2946 | spoel 2947 | spons 2948 | spoog 2949 | spook 2950 | spoor 2951 | spoot 2952 | spore 2953 | sport 2954 | spots 2955 | sprak 2956 | spray 2957 | sprei 2958 | sprot 2959 | spuit 2960 | spurt 2961 | spuug 2962 | spuwt 2963 | staaf 2964 | staag 2965 | staak 2966 | staal 2967 | staan 2968 | staar 2969 | staat 2970 | stads 2971 | stage 2972 | stalk 2973 | stalt 2974 | stamp 2975 | stamt 2976 | stand 2977 | stang 2978 | stank 2979 | stapt 2980 | start 2981 | state 2982 | steak 2983 | steeg 2984 | steek 2985 | steel 2986 | steen 2987 | steil 2988 | stelt 2989 | stemt 2990 | steng 2991 | sterf 2992 | sterk 2993 | steun 2994 | steur 2995 | stick 2996 | stift 2997 | stijf 2998 | stijg 2999 | stijl 3000 | stikt 3001 | stilt 3002 | stink 3003 | stipt 3004 | stock 3005 | stoei 3006 | stoel 3007 | stoep 3008 | stoer 3009 | stoet 3010 | stoft 3011 | stokt 3012 | stolp 3013 | stolt 3014 | stomp 3015 | stoms 3016 | stond 3017 | stonk 3018 | stoof 3019 | stook 3020 | stoom 3021 | stoor 3022 | stoot 3023 | stopt 3024 | storm 3025 | stort 3026 | stout 3027 | stouw 3028 | straf 3029 | strak 3030 | stram 3031 | stras 3032 | strek 3033 | strik 3034 | strip 3035 | strop 3036 | stros 3037 | strot 3038 | stuik 3039 | stuip 3040 | stuit 3041 | stulp 3042 | stunt 3043 | stuur 3044 | stuwt 3045 | suffe 3046 | sufst 3047 | sufte 3048 | suilt 3049 | suist 3050 | sulde 3051 | super 3052 | surft 3053 | sushi 3054 | suste 3055 | swing 3056 | taaie 3057 | taart 3058 | tabak 3059 | tabel 3060 | taboe 3061 | tafel 3062 | taiga 3063 | takel 3064 | taken 3065 | takje 3066 | takte 3067 | talen 3068 | talig 3069 | tamme 3070 | tamst 3071 | tango 3072 | tanks 3073 | tankt 3074 | tante 3075 | tapas 3076 | tapir 3077 | tapte 3078 | tarde 3079 | tarnt 3080 | tarwe 3081 | tasje 3082 | taste 3083 | tater 3084 | teams 3085 | teder 3086 | teelt 3087 | teert 3088 | tegel 3089 | tegen 3090 | teken 3091 | tekst 3092 | telde 3093 | telen 3094 | teler 3095 | temde 3096 | tempo 3097 | tenen 3098 | tenor 3099 | tenue 3100 | tepel 3101 | teren 3102 | tergt 3103 | terig 3104 | terne 3105 | terra 3106 | terug 3107 | tesla 3108 | tests 3109 | tetra 3110 | thans 3111 | thema 3112 | thuis 3113 | tiara 3114 | ticje 3115 | tiens 3116 | tiert 3117 | tijde 3118 | tijgt 3119 | tikje 3120 | tikte 3121 | tilde 3122 | timen 3123 | timer 3124 | timet 3125 | tipje 3126 | tipse 3127 | tipsy 3128 | tipte 3129 | tiran 3130 | titan 3131 | titel 3132 | tjilp 3133 | tjirp 3134 | tjokt 3135 | toast 3136 | tobbe 3137 | tobde 3138 | tocht 3139 | toets 3140 | toffe 3141 | tofoe 3142 | tofst 3143 | token 3144 | tokte 3145 | tolde 3146 | tolkt 3147 | tombe 3148 | tonen 3149 | toner 3150 | tonic 3151 | toomt 3152 | toont 3153 | toorn 3154 | toost 3155 | topje 3156 | toren 3157 | torso 3158 | torus 3159 | toste 3160 | tosti 3161 | totem 3162 | tours 3163 | touwt 3164 | tover 3165 | traag 3166 | traan 3167 | track 3168 | train 3169 | trams 3170 | trans 3171 | trapt 3172 | trede 3173 | treed 3174 | treek 3175 | trees 3176 | treft 3177 | treil 3178 | trein 3179 | trekt 3180 | trema 3181 | trend 3182 | treur 3183 | trial 3184 | trien 3185 | trilt 3186 | trimt 3187 | trips 3188 | tript 3189 | trits 3190 | troef 3191 | troep 3192 | tromp 3193 | tromt 3194 | tronk 3195 | troon 3196 | troop 3197 | trots 3198 | trouw 3199 | truck 3200 | tsaar 3201 | tubes 3202 | tucht 3203 | tufte 3204 | tuien 3205 | tuier 3206 | tuigt 3207 | tuint 3208 | tuist 3209 | tukje 3210 | tukke 3211 | tukst 3212 | tukte 3213 | tulen 3214 | tumor 3215 | turbo 3216 | turen 3217 | turft 3218 | turnt 3219 | tuten 3220 | tutje 3221 | tutte 3222 | tuurt 3223 | twijg 3224 | twist 3225 | tyfus 3226 | typen 3227 | types 3228 | typte 3229 | uiers 3230 | uiige 3231 | uilen 3232 | uilig 3233 | uiten 3234 | uitga 3235 | uitje 3236 | uitte 3237 | uiver 3238 | ukken 3239 | ultra 3240 | uniek 3241 | unies 3242 | unzip 3243 | uraan 3244 | ureum 3245 | urine 3246 | urmde 3247 | urmen 3248 | urnen 3249 | uzelf 3250 | vaags 3251 | vaagt 3252 | vaalt 3253 | vaars 3254 | vaart 3255 | vaats 3256 | vacht 3257 | vader 3258 | vagen 3259 | vager 3260 | vaker 3261 | vakje 3262 | valer 3263 | valig 3264 | valse 3265 | valst 3266 | vanaf 3267 | vanen 3268 | vangt 3269 | vanop 3270 | varen 3271 | varia 3272 | vaste 3273 | vaten 3274 | vazen 3275 | vecht 3276 | vedel 3277 | veder 3278 | veegt 3279 | veelt 3280 | veert 3281 | veest 3282 | vegen 3283 | veger 3284 | veile 3285 | veils 3286 | veilt 3287 | veine 3288 | veins 3289 | velde 3290 | velen 3291 | vemen 3292 | venen 3293 | veraf 3294 | veren 3295 | verft 3296 | verga 3297 | vergt 3298 | verre 3299 | verse 3300 | verst 3301 | verte 3302 | veste 3303 | veter 3304 | vetes 3305 | vetst 3306 | vette 3307 | vezel 3308 | vezen 3309 | video 3310 | vides 3311 | viert 3312 | viest 3313 | vieze 3314 | vijlt 3315 | vijst 3316 | vilde 3317 | villa 3318 | vindt 3319 | vinkt 3320 | vinyl 3321 | viool 3322 | vipje 3323 | virus 3324 | visie 3325 | visje 3326 | viste 3327 | visum 3328 | vitse 3329 | vitte 3330 | vlaag 3331 | vlaai 3332 | vlade 3333 | vlagt 3334 | vlakt 3335 | vlamt 3336 | vlast 3337 | vlees 3338 | vleet 3339 | vleit 3340 | vlekt 3341 | vlerk 3342 | vleug 3343 | vlied 3344 | vlieg 3345 | vlier 3346 | vlies 3347 | vliet 3348 | vlijm 3349 | vlijt 3350 | vloed 3351 | vloei 3352 | vloek 3353 | vloer 3354 | vlokt 3355 | vloog 3356 | vlooi 3357 | vloot 3358 | vlouw 3359 | vocht 3360 | vodde 3361 | vodje 3362 | voedt 3363 | voegt 3364 | voelt 3365 | voert 3366 | vogel 3367 | voile 3368 | volde 3369 | volgt 3370 | volks 3371 | volle 3372 | volop 3373 | volst 3374 | volts 3375 | vonkt 3376 | voogd 3377 | voorn 3378 | voort 3379 | voost 3380 | voren 3381 | vorig 3382 | vormt 3383 | vorst 3384 | voute 3385 | vouwt 3386 | vozen 3387 | vozer 3388 | vraag 3389 | vraat 3390 | vrede 3391 | vrees 3392 | vreet 3393 | vreze 3394 | vries 3395 | vrije 3396 | vrijt 3397 | vroed 3398 | vroeg 3399 | vrome 3400 | vroom 3401 | vroor 3402 | vroos 3403 | vrouw 3404 | vuige 3405 | vuile 3406 | vuist 3407 | vulde 3408 | vunst 3409 | vunze 3410 | vuren 3411 | vurig 3412 | vutte 3413 | vuurt 3414 | waadt 3415 | waagt 3416 | waait 3417 | waaks 3418 | waakt 3419 | waant 3420 | waard 3421 | waars 3422 | waart 3423 | wacht 3424 | waden 3425 | wafel 3426 | wagen 3427 | wagon 3428 | waken 3429 | waker 3430 | wakke 3431 | wakst 3432 | walde 3433 | walen 3434 | walgt 3435 | walkt 3436 | walmt 3437 | walst 3438 | wanen 3439 | wapen 3440 | waren 3441 | warme 3442 | warms 3443 | warmt 3444 | wasco 3445 | wasem 3446 | waste 3447 | water 3448 | watje 3449 | watts 3450 | wauwe 3451 | wazen 3452 | wazig 3453 | wedde 3454 | weder 3455 | weeft 3456 | weegt 3457 | weeks 3458 | weekt 3459 | weent 3460 | weeps 3461 | weert 3462 | wegen 3463 | weger 3464 | wegga 3465 | wegje 3466 | weide 3467 | weids 3468 | weidt 3469 | weien 3470 | weken 3471 | weker 3472 | wekte 3473 | welde 3474 | welke 3475 | welks 3476 | welkt 3477 | welnu 3478 | wemel 3479 | wende 3480 | wendt 3481 | wenen 3482 | wener 3483 | wenkt 3484 | wenst 3485 | weren 3486 | werft 3487 | werkt 3488 | werpt 3489 | werst 3490 | weten 3491 | wette 3492 | weven 3493 | wever 3494 | wezel 3495 | wezen 3496 | wicht 3497 | wiedt 3498 | wiegt 3499 | wiekt 3500 | wielt 3501 | wiens 3502 | wierf 3503 | wierp 3504 | wigge 3505 | wigje 3506 | wijde 3507 | wijdt 3508 | wijkt 3509 | wijle 3510 | wijlt 3511 | wijst 3512 | wijze 3513 | wikke 3514 | wikte 3515 | wilde 3516 | wilds 3517 | winde 3518 | windt 3519 | winst 3520 | wipte 3521 | wisse 3522 | wiste 3523 | witje 3524 | witst 3525 | witte 3526 | wodka 3527 | woede 3528 | woedt 3529 | woelt 3530 | woest 3531 | wogen 3532 | wokte 3533 | wonde 3534 | wondt 3535 | wonen 3536 | woont 3537 | woord 3538 | wordt 3539 | worgt 3540 | worst 3541 | wraak 3542 | wrang 3543 | wraps 3544 | wrede 3545 | wreed 3546 | wreef 3547 | wreek 3548 | wrijf 3549 | wrikt 3550 | wring 3551 | wroeg 3552 | wroet 3553 | wrokt 3554 | wrong 3555 | wuift 3556 | wulps 3557 | wurgt 3558 | wurmt 3559 | xenon 3560 | xeres 3561 | yanks 3562 | yucca 3563 | zaagt 3564 | zaait 3565 | zacht 3566 | zadel 3567 | zaden 3568 | zagen 3569 | zager 3570 | zaken 3571 | zakje 3572 | zakte 3573 | zalen 3574 | zalft 3575 | zalig 3576 | zanik 3577 | zapte 3578 | zaten 3579 | zatst 3580 | zatte 3581 | zavel 3582 | zebra 3583 | zeden 3584 | zedig 3585 | zeeft 3586 | zeelt 3587 | zeemt 3588 | zeept 3589 | zegel 3590 | zegen 3591 | zegge 3592 | zegje 3593 | zeikt 3594 | zeilt 3595 | zeken 3596 | zeker 3597 | zelen 3598 | zelfs 3599 | zelve 3600 | zemel 3601 | zemen 3602 | zemig 3603 | zendt 3604 | zenen 3605 | zengt 3606 | zenig 3607 | zenit 3608 | zenuw 3609 | zepen 3610 | zeper 3611 | zepig 3612 | zerpe 3613 | zesde 3614 | zesje 3615 | zetel 3616 | zetje 3617 | zette 3618 | zeult 3619 | zeurt 3620 | zeven 3621 | zever 3622 | zicht 3623 | ziedt 3624 | zieke 3625 | ziekt 3626 | ziend 3627 | ziens 3628 | ziezo 3629 | zijde 3630 | zijgt 3631 | zijig 3632 | zijnd 3633 | zijne 3634 | zijns 3635 | zilte 3636 | zinde 3637 | zingt 3638 | zinkt 3639 | zipte 3640 | zitje 3641 | zoals 3642 | zocht 3643 | zodat 3644 | zodra 3645 | zoeft 3646 | zoekt 3647 | zoemt 3648 | zoent 3649 | zoete 3650 | zoets 3651 | zogen 3652 | zolen 3653 | zomen 3654 | zomer 3655 | zomin 3656 | zonde 3657 | zonen 3658 | zones 3659 | zonet 3660 | zoogt 3661 | zoolt 3662 | zoomt 3663 | zoons 3664 | zopas 3665 | zopen 3666 | zorgt 3667 | zotje 3668 | zotst 3669 | zotte 3670 | zoude 3671 | zoudt 3672 | zoute 3673 | zover 3674 | zowat 3675 | zowel 3676 | zucht 3677 | zuigt 3678 | zuipt 3679 | zulke 3680 | zulks 3681 | zulle 3682 | zulte 3683 | zuren 3684 | zurig 3685 | zusje 3686 | zuurt 3687 | zwaai 3688 | zwaan 3689 | zwaar 3690 | zwade 3691 | zwakt 3692 | zwalk 3693 | zwalp 3694 | zwamp 3695 | zwamt 3696 | zwans 3697 | zware 3698 | zwart 3699 | zweef 3700 | zweeg 3701 | zweel 3702 | zweem 3703 | zweep 3704 | zweer 3705 | zweet 3706 | zwelg 3707 | zwelt 3708 | zwemt 3709 | zwenk 3710 | zwerf 3711 | zwerk 3712 | zwerm 3713 | zwets 3714 | zwiep 3715 | zwier 3716 | zwijg 3717 | zwijm 3718 | zwijn 3719 | zwikt 3720 | zwilk 3721 | zwing 3722 | zwoeg 3723 | zwoel 3724 | zwoer 3725 | zwolg 3726 | zwoor 3727 | -------------------------------------------------------------------------------- /src/main/java/org/billthefarmer/solver/Help.java: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Gurgle - An android word game. 4 | // 5 | // Copyright (C) 2022 Bill Farmer 6 | // 7 | // This program is free software: you can redistribute it and/or modify 8 | // it under the terms of the GNU General Public License as published by 9 | // the Free Software Foundation, either version 3 of the License, or 10 | // (at your option) any later version. 11 | // 12 | // This program is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | // GNU General Public License for more details. 16 | // 17 | // You should have received a copy of the GNU General Public License 18 | // along with this program. If not, see . 19 | // 20 | // Bill Farmer william j farmer [at] yahoo [dot] co [dot] uk. 21 | // 22 | /////////////////////////////////////////////////////////////////////////////// 23 | 24 | package org.billthefarmer.solver; 25 | 26 | import android.app.ActionBar; 27 | import android.app.Activity; 28 | import android.content.Context; 29 | import android.content.SharedPreferences; 30 | import android.os.Bundle; 31 | import android.preference.PreferenceManager; 32 | import android.text.Html; 33 | import android.text.method.LinkMovementMethod; 34 | import android.view.MenuItem; 35 | import android.widget.TextView; 36 | 37 | import java.io.BufferedReader; 38 | import java.io.InputStream; 39 | import java.io.InputStreamReader; 40 | 41 | // HelpActivity class 42 | @SuppressWarnings("deprecation") 43 | public class Help extends Activity 44 | { 45 | // On create 46 | @Override 47 | @SuppressWarnings("deprecation") 48 | public void onCreate(Bundle savedInstanceState) 49 | { 50 | super.onCreate(savedInstanceState); 51 | 52 | SharedPreferences preferences = 53 | PreferenceManager.getDefaultSharedPreferences(this); 54 | 55 | int theme = preferences.getInt(Main.PREF_THEME, Main.DARK); 56 | 57 | switch (theme) 58 | { 59 | default: 60 | case Main.DARK: 61 | setTheme(R.style.AppTheme); 62 | break; 63 | 64 | case Main.CYAN: 65 | setTheme(R.style.AppCyanTheme); 66 | break; 67 | 68 | case Main.BLUE: 69 | setTheme(R.style.AppBlueTheme); 70 | break; 71 | 72 | case Main.ORANGE: 73 | setTheme(R.style.AppOrangeTheme); 74 | break; 75 | 76 | case Main.PURPLE: 77 | setTheme(R.style.AppPurpleTheme); 78 | break; 79 | 80 | case Main.RED: 81 | setTheme(R.style.AppRedTheme); 82 | break; 83 | } 84 | 85 | setContentView(R.layout.help); 86 | 87 | TextView view = findViewById(R.id.help); 88 | CharSequence text = read(this, R.raw.help); 89 | if (view != null) 90 | { 91 | view.setMovementMethod(LinkMovementMethod.getInstance()); 92 | view.setText(Html.fromHtml(text.toString())); 93 | } 94 | 95 | // Enable back navigation on action bar 96 | ActionBar actionBar = getActionBar(); 97 | if (actionBar != null) 98 | actionBar.setDisplayHomeAsUpEnabled(true); 99 | } 100 | 101 | // On options item selected 102 | @Override 103 | public boolean onOptionsItemSelected(MenuItem item) 104 | { 105 | // Get id 106 | int id = item.getItemId(); 107 | switch (id) 108 | { 109 | // Home 110 | case android.R.id.home: 111 | finish(); 112 | break; 113 | 114 | default: 115 | return false; 116 | } 117 | 118 | return true; 119 | } 120 | 121 | // read 122 | public static CharSequence read(Context context, int resId) 123 | { 124 | StringBuilder text = new StringBuilder(); 125 | 126 | try (BufferedReader buffer = new BufferedReader 127 | (new InputStreamReader 128 | (context.getResources().openRawResource(resId)))) 129 | { 130 | String line; 131 | while ((line = buffer.readLine()) != null) 132 | text.append(line).append(System.getProperty("line.separator")); 133 | } 134 | 135 | catch (Exception e) {} 136 | 137 | return text; 138 | } 139 | } 140 | -------------------------------------------------------------------------------- /src/main/java/org/billthefarmer/solver/Main.java: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Wordle solver 4 | // 5 | // Copyright (C) 2022 Bill Farmer 6 | // 7 | // This program is free software: you can redistribute it and/or modify 8 | // it under the terms of the GNU General Public License as published by 9 | // the Free Software Foundation, either version 3 of the License, or 10 | // (at your option) any later version. 11 | // 12 | // This program is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | // GNU General Public License for more details. 16 | // 17 | // You should have received a copy of the GNU General Public License 18 | // along with this program. If not, see . 19 | // 20 | // Bill Farmer william j farmer [at] yahoo [dot] co [dot] uk. 21 | // 22 | /////////////////////////////////////////////////////////////////////////////// 23 | 24 | package org.billthefarmer.solver; 25 | 26 | import android.app.Activity; 27 | import android.app.AlertDialog; 28 | import android.app.Dialog; 29 | import android.content.Intent; 30 | import android.content.SharedPreferences; 31 | import android.os.Build; 32 | import android.os.Bundle; 33 | import android.preference.PreferenceManager; 34 | import android.text.Editable; 35 | import android.text.SpannableStringBuilder; 36 | import android.text.TextWatcher; 37 | import android.text.method.LinkMovementMethod; 38 | import android.util.Log; 39 | import android.util.TypedValue; 40 | import android.view.KeyEvent; 41 | import android.view.Menu; 42 | import android.view.MenuInflater; 43 | import android.view.MenuItem; 44 | import android.view.View; 45 | import android.view.ViewGroup; 46 | import android.view.inputmethod.EditorInfo; 47 | import android.view.inputmethod.InputMethodManager; 48 | import android.widget.PopupMenu; 49 | import android.widget.TextView; 50 | import android.widget.Toolbar; 51 | 52 | import java.text.DateFormat; 53 | 54 | import java.util.ArrayList; 55 | import java.util.List; 56 | import java.util.Locale; 57 | 58 | import java.util.regex.Matcher; 59 | import java.util.regex.Pattern; 60 | 61 | @SuppressWarnings("deprecation") 62 | public class Main extends Activity 63 | implements PopupMenu.OnMenuItemClickListener 64 | { 65 | public static final String TAG = "WordleSolver"; 66 | public static final String PREF_THEME = "pref_theme"; 67 | public static final String PREF_LANG = "pref_lang"; 68 | public static final String SEPARATOR = "[,;|]"; 69 | public static final String GREEN = "green"; 70 | public static final String YELLOW_1 = "yellow-1"; 71 | public static final String YELLOW_2 = "yellow-2"; 72 | public static final String YELLOW_3 = "yellow-3"; 73 | public static final String GREY = "grey"; 74 | 75 | public static final int ROWS[] = 76 | { 77 | R.id.yellow1, R.id.yellow2, R.id.yellow3 78 | }; 79 | 80 | public static final int DARK = 1; 81 | public static final int CYAN = 2; 82 | public static final int BLUE = 3; 83 | public static final int ORANGE = 4; 84 | public static final int PURPLE = 5; 85 | public static final int RED = 6; 86 | public static final int BLACK = 7; 87 | public static final int LIGHT = 8; 88 | 89 | public static final int DELAY = 100; 90 | public static final int LENGTH = 5; 91 | public static final int LONG = 24; 92 | 93 | public static final int ENGLISH = 0; 94 | public static final int ITALIAN = 1; 95 | public static final int SPANISH = 2; 96 | public static final int CATALAN = 3; 97 | public static final int FRENCH = 4; 98 | public static final int PORTUGUESE = 5; 99 | public static final int GERMAN = 6; 100 | public static final int DUTCH = 7; 101 | public static final int AFRIKAANS = 8; 102 | 103 | private Toolbar toolbar; 104 | private TextView greyText; 105 | private TextView resultText; 106 | private TextView greenArray[]; 107 | private TextView yellowArray[][]; 108 | private List greenList; 109 | private List> yellowList; 110 | 111 | private int theme; 112 | private int language; 113 | 114 | // Called when the activity is first created. 115 | @Override 116 | public void onCreate(Bundle savedInstanceState) 117 | { 118 | super.onCreate(savedInstanceState); 119 | 120 | SharedPreferences preferences = 121 | PreferenceManager.getDefaultSharedPreferences(this); 122 | 123 | theme = preferences.getInt(PREF_THEME, DARK); 124 | language = preferences.getInt(PREF_LANG, ENGLISH); 125 | 126 | switch (theme) 127 | { 128 | default: 129 | case DARK: 130 | setTheme(R.style.AppTheme); 131 | break; 132 | 133 | case CYAN: 134 | setTheme(R.style.AppCyanTheme); 135 | break; 136 | 137 | case BLUE: 138 | setTheme(R.style.AppBlueTheme); 139 | break; 140 | 141 | case ORANGE: 142 | setTheme(R.style.AppOrangeTheme); 143 | break; 144 | 145 | case PURPLE: 146 | setTheme(R.style.AppPurpleTheme); 147 | break; 148 | 149 | case RED: 150 | setTheme(R.style.AppRedTheme); 151 | break; 152 | 153 | case BLACK: 154 | setTheme(R.style.AppBlackTheme); 155 | break; 156 | 157 | case LIGHT: 158 | setTheme(R.style.AppLightTheme); 159 | break; 160 | } 161 | 162 | setContentView(R.layout.main); 163 | 164 | setLanguage(); 165 | 166 | // Find toolbar 167 | toolbar = findViewById(getResources().getIdentifier("action_bar", 168 | "id", "android")); 169 | // Set up navigation 170 | toolbar.setNavigationIcon(R.drawable.ic_menu_white_24dp); 171 | toolbar.setNavigationOnClickListener((v) -> 172 | { 173 | PopupMenu popup = new PopupMenu(this, v); 174 | popup.inflate(R.menu.navigation); 175 | popup.setOnMenuItemClickListener(this); 176 | popup.show(); 177 | }); 178 | 179 | TextView.OnEditorActionListener listener = new 180 | TextView.OnEditorActionListener() 181 | { 182 | // onEditorAction 183 | @Override 184 | public boolean onEditorAction(TextView view, 185 | int actionId, 186 | KeyEvent event) 187 | { 188 | // Check id 189 | switch (actionId) 190 | { 191 | // Do a solve if there is a letter in the slot 192 | case EditorInfo.IME_ACTION_NEXT: 193 | if (view.length() > 0) 194 | solve(); 195 | break; 196 | } 197 | 198 | return false; 199 | } 200 | }; 201 | 202 | TextWatcher watcher = new TextWatcher() 203 | { 204 | // afterTextChanged 205 | @Override 206 | public void afterTextChanged(Editable s) {} 207 | 208 | // beforeTextChanged 209 | @Override 210 | public void beforeTextChanged(CharSequence s, 211 | int start, 212 | int count, 213 | int after) {} 214 | // onTextChanged 215 | @Override 216 | public void onTextChanged(CharSequence s, 217 | int start, 218 | int before, 219 | int count) 220 | { 221 | TextView text = (TextView) getCurrentFocus(); 222 | 223 | // Can't be sure if we got the right slot, but move 224 | // focus to the next one if there is a letter in the 225 | // slot 226 | if (text != null && text.length() > 0) 227 | { 228 | View next = text.focusSearch(View.FOCUS_RIGHT); 229 | if (next != null) 230 | next.requestFocus(); 231 | } 232 | } 233 | }; 234 | 235 | ViewGroup greenRow = (ViewGroup) findViewById(R.id.green); 236 | greenArray = new TextView[greenRow.getChildCount()]; 237 | for (int i = 0; i < greenArray.length; i++) 238 | { 239 | greenArray[i] = (TextView) greenRow.getChildAt(i); 240 | greenArray[i].setOnEditorActionListener(listener); 241 | greenArray[i].addTextChangedListener(watcher); 242 | } 243 | 244 | yellowArray = new TextView[ROWS.length][]; 245 | for (int i = 0; i < yellowArray.length; i++) 246 | { 247 | ViewGroup yellowRow = findViewById(ROWS[i]); 248 | yellowArray[i] = new TextView[yellowRow.getChildCount()]; 249 | for (int j = 0; j < yellowArray[i].length; j++) 250 | { 251 | yellowArray[i][j] = (TextView) yellowRow.getChildAt(j); 252 | yellowArray[i][j].setOnEditorActionListener(listener); 253 | yellowArray[i][j].addTextChangedListener(watcher); 254 | } 255 | } 256 | 257 | greyText = (TextView) findViewById(R.id.grey); 258 | greyText.setOnEditorActionListener(listener); 259 | 260 | resultText = (TextView) findViewById(R.id.result); 261 | 262 | // Delay resizing 263 | greenRow.postDelayed(() -> 264 | { 265 | View layout = findViewById(R.id.layout); 266 | View scroll = findViewById(R.id.scroll); 267 | float scaleX = (float) layout.getWidth() / greenRow.getWidth(); 268 | float scaleY = (float) (layout.getHeight() - 269 | scroll.getHeight()) / greenRow.getWidth(); 270 | float scale = Math.min(scaleX, scaleY); 271 | for (int i = 0; i < greenRow.getChildCount(); i++) 272 | { 273 | TextView v = (TextView) greenRow.getChildAt(i); 274 | v.setMinimumWidth(Math.round(v.getMinimumWidth() * scale)); 275 | v.setTextSize(TypedValue.COMPLEX_UNIT_PX, 276 | v.getTextSize() * scale); 277 | } 278 | for (int rowId: ROWS) 279 | { 280 | ViewGroup yellowRow = findViewById(rowId); 281 | for (int i = 0; i < yellowRow.getChildCount(); i++) 282 | { 283 | TextView v = (TextView) yellowRow.getChildAt(i); 284 | v.setMinimumWidth(Math.round(v.getMinimumWidth() * scale)); 285 | v.setTextSize(TypedValue.COMPLEX_UNIT_PX, 286 | v.getTextSize() * scale); 287 | } 288 | } 289 | greyText.setTextSize(TypedValue.COMPLEX_UNIT_PX, 290 | greyText.getTextSize() * scale); 291 | resultText.setTextSize(TypedValue.COMPLEX_UNIT_PX, 292 | resultText.getTextSize() * scale); 293 | greenRow.postDelayed(() -> 294 | { 295 | greyText.setMinimumWidth(greenRow.getWidth()); 296 | }, DELAY); 297 | }, DELAY); 298 | 299 | greenList = new ArrayList(); 300 | yellowList = new ArrayList>(); 301 | for (int i = 0; i < ROWS.length; i++) 302 | yellowList.add(new ArrayList()); 303 | } 304 | 305 | // onResume 306 | @Override 307 | protected void onResume() 308 | { 309 | super.onResume(); 310 | 311 | // Check intent 312 | checkIntent(getIntent()); 313 | } 314 | 315 | // onNewIntent 316 | @Override 317 | public void onNewIntent(Intent intent) 318 | { 319 | // Check intent 320 | checkIntent(intent); 321 | } 322 | 323 | // onPause 324 | @Override 325 | public void onPause() 326 | { 327 | super.onPause(); 328 | 329 | SharedPreferences preferences = 330 | PreferenceManager.getDefaultSharedPreferences(this); 331 | SharedPreferences.Editor editor = preferences.edit(); 332 | 333 | editor.putInt(PREF_THEME, theme); 334 | editor.putInt(PREF_LANG, language); 335 | editor.apply(); 336 | } 337 | 338 | // On create options menu 339 | @Override 340 | public boolean onCreateOptionsMenu(Menu menu) 341 | { 342 | // Inflate the menu; this adds items to the action bar if it 343 | // is present. 344 | MenuInflater inflater = getMenuInflater(); 345 | inflater.inflate(R.menu.main, menu); 346 | 347 | return true; 348 | } 349 | 350 | // On options item selected 351 | @Override 352 | public boolean onOptionsItemSelected(MenuItem item) 353 | { 354 | // Get id 355 | int id = item.getItemId(); 356 | switch (id) 357 | { 358 | case R.id.refresh: 359 | refresh(); 360 | break; 361 | 362 | case R.id.solve: 363 | solve(); 364 | break; 365 | 366 | case R.id.dark: 367 | theme(DARK); 368 | break; 369 | 370 | case R.id.cyan: 371 | theme(CYAN); 372 | break; 373 | 374 | case R.id.blue: 375 | theme(BLUE); 376 | break; 377 | 378 | case R.id.orange: 379 | theme(ORANGE); 380 | break; 381 | 382 | case R.id.purple: 383 | theme(PURPLE); 384 | break; 385 | 386 | case R.id.red: 387 | theme(RED); 388 | break; 389 | 390 | case R.id.black: 391 | theme(BLACK); 392 | break; 393 | 394 | case R.id.light: 395 | theme(LIGHT); 396 | break; 397 | 398 | case R.id.english: 399 | setLanguage(ENGLISH); 400 | break; 401 | 402 | case R.id.italian: 403 | setLanguage(ITALIAN); 404 | break; 405 | 406 | case R.id.spanish: 407 | setLanguage(SPANISH); 408 | break; 409 | 410 | case R.id.catalan: 411 | setLanguage(CATALAN); 412 | break; 413 | 414 | case R.id.french: 415 | setLanguage(FRENCH); 416 | break; 417 | 418 | case R.id.portuguese: 419 | setLanguage(PORTUGUESE); 420 | break; 421 | 422 | case R.id.german: 423 | setLanguage(GERMAN); 424 | break; 425 | 426 | case R.id.dutch: 427 | setLanguage(DUTCH); 428 | break; 429 | 430 | case R.id.afrikaans: 431 | setLanguage(AFRIKAANS); 432 | break; 433 | 434 | case R.id.help: 435 | help(); 436 | break; 437 | 438 | case R.id.about: 439 | about(); 440 | break; 441 | } 442 | 443 | return true; 444 | } 445 | 446 | // onMenuItemClick 447 | @Override 448 | public boolean onMenuItemClick(MenuItem item) 449 | { 450 | // Get id 451 | int id = item.getItemId(); 452 | switch (id) 453 | { 454 | // Help 455 | case R.id.help: 456 | help(); 457 | break; 458 | 459 | default: 460 | return false; 461 | } 462 | 463 | return true; 464 | } 465 | 466 | // checkIntent 467 | private void checkIntent(Intent intent) 468 | { 469 | if (intent.hasExtra(Intent.EXTRA_TEXT)) 470 | { 471 | // Get text 472 | String text = intent.getStringExtra(Intent.EXTRA_TEXT) 473 | .toUpperCase(Locale.getDefault()); 474 | // Ensure it only does it once 475 | intent.removeExtra(Intent.EXTRA_TEXT); 476 | // Check text 477 | if (text.isEmpty()) 478 | return; 479 | 480 | // Split words 481 | String words[] = text.split(SEPARATOR); 482 | // Get green letters 483 | final String green = words[0]; 484 | // Check letters 485 | if (green.length() > LENGTH) 486 | return; 487 | 488 | // Delay to give app time to get organised 489 | resultText.postDelayed(() -> 490 | { 491 | // Clear the letters 492 | refresh(); 493 | // Fill in green letters 494 | for (int i = 0; i < green.length(); i++) 495 | { 496 | TextView letter = greenArray[i]; 497 | if (Character.isLetter(green.charAt(i))) 498 | letter.setText(green.substring(i, i + 1)); 499 | } 500 | 501 | if (words.length > 1 && !words[1].isEmpty()) 502 | { 503 | String yellow = words[1]; 504 | // Check yellow letters 505 | if (yellow.length() > LENGTH) 506 | return; 507 | 508 | // Fill in yellow letters, row 1 509 | for (int i = 0; i < yellow.length(); i++) 510 | { 511 | TextView letter = yellowArray[0][i]; 512 | if (Character.isLetter(yellow.charAt(i))) 513 | letter.setText(yellow.substring(i, i + 1)); 514 | } 515 | } 516 | 517 | if (words.length > 2 && !words[2].isEmpty()) 518 | { 519 | String yellow = words[2]; 520 | // Check yellow letters 521 | if (yellow.length() > LENGTH) 522 | return; 523 | 524 | // Fill in yellow letters, row 2 525 | for (int i = 0; i < yellow.length(); i++) 526 | { 527 | TextView letter = yellowArray[1][i]; 528 | if (Character.isLetter(yellow.charAt(i))) 529 | letter.setText(yellow.substring(i, i + 1)); 530 | } 531 | } 532 | 533 | if (words.length > 3 && !words[3].isEmpty()) 534 | { 535 | String yellow = words[3]; 536 | // Check yellow letters 537 | if (yellow.length() > LENGTH) 538 | return; 539 | 540 | // Fill in yellow letters, row 3 541 | for (int i = 0; i < yellow.length(); i++) 542 | { 543 | TextView letter = yellowArray[2][i]; 544 | if (Character.isLetter(yellow.charAt(i))) 545 | letter.setText(yellow.substring(i, i + 1)); 546 | } 547 | } 548 | 549 | if (words.length > 4 && !words[4].isEmpty()) 550 | { 551 | String grey = words[4]; 552 | // Check grey letters 553 | if (grey.length() > LONG) 554 | return; 555 | 556 | greyText.setText(grey); 557 | } 558 | 559 | // Solve 560 | solve(); 561 | }, DELAY); 562 | } 563 | } 564 | 565 | // refresh 566 | private void refresh() 567 | { 568 | for (TextView text: greenArray) 569 | text.setText(""); 570 | 571 | for (TextView row[]: yellowArray) 572 | for (TextView text: row) 573 | text.setText(""); 574 | greyText.setText(""); 575 | } 576 | 577 | // solve 578 | private void solve() 579 | { 580 | InputMethodManager manager = (InputMethodManager) 581 | getSystemService(INPUT_METHOD_SERVICE); 582 | manager.hideSoftInputFromWindow(resultText.getWindowToken(), 0); 583 | 584 | greenList.clear(); 585 | for (TextView green: greenArray) 586 | greenList.add(green.getText().toString() 587 | .toLowerCase(Locale.getDefault())); 588 | 589 | for (int i = 0; i < yellowArray.length; i++) 590 | { 591 | yellowList.get(i).clear(); 592 | for (TextView yellow: yellowArray[i]) 593 | yellowList.get(i).add(yellow.getText().toString() 594 | .toLowerCase(Locale.getDefault())); 595 | } 596 | 597 | String grey = greyText.getText().toString() 598 | .toLowerCase(Locale.getDefault()); 599 | List> result = new Solver(greenList, 600 | yellowList.get(0), 601 | yellowList.get(1), 602 | yellowList.get(2), 603 | grey).solve(); 604 | if (BuildConfig.DEBUG) 605 | Log.d(TAG, "Result: " + result); 606 | 607 | StringBuilder builder = new StringBuilder(); 608 | for (List w: result) 609 | { 610 | for (String l: w) 611 | builder.append(String.format("%s ", l) 612 | .toUpperCase(Locale.getDefault())); 613 | 614 | builder.append("\n"); 615 | } 616 | 617 | resultText.setText(builder); 618 | } 619 | 620 | // theme 621 | private void theme(int t) 622 | { 623 | InputMethodManager manager = 624 | (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); 625 | manager.hideSoftInputFromWindow(resultText.getWindowToken(), 0); 626 | 627 | theme = t; 628 | if (Build.VERSION.SDK_INT != Build.VERSION_CODES.M) 629 | recreate(); 630 | } 631 | 632 | // setLanguage 633 | private void setLanguage(int l) 634 | { 635 | language = l; 636 | setLanguage(); 637 | refresh(); 638 | } 639 | 640 | // setLanguage 641 | private void setLanguage() 642 | { 643 | Words.setLanguage(this, language); 644 | Solver.Companion.emptyDicWords(); 645 | 646 | switch (language) 647 | { 648 | default: 649 | case ENGLISH: 650 | getActionBar().setSubtitle(R.string.english); 651 | break; 652 | 653 | case ITALIAN: 654 | getActionBar().setSubtitle(R.string.italian); 655 | break; 656 | 657 | case SPANISH: 658 | getActionBar().setSubtitle(R.string.spanish); 659 | break; 660 | 661 | case CATALAN: 662 | getActionBar().setSubtitle(R.string.catalan); 663 | break; 664 | 665 | case FRENCH: 666 | getActionBar().setSubtitle(R.string.french); 667 | break; 668 | 669 | case PORTUGUESE: 670 | getActionBar().setSubtitle(R.string.portuguese); 671 | break; 672 | 673 | case GERMAN: 674 | getActionBar().setSubtitle(R.string.german); 675 | break; 676 | 677 | case DUTCH: 678 | getActionBar().setSubtitle(R.string.dutch); 679 | break; 680 | 681 | case AFRIKAANS: 682 | getActionBar().setSubtitle(R.string.afrikaans); 683 | break; 684 | } 685 | } 686 | 687 | // help 688 | private void help() 689 | { 690 | Intent intent = new Intent(this, Help.class); 691 | startActivity(intent); 692 | } 693 | 694 | // about 695 | @SuppressWarnings("deprecation") 696 | private void about() 697 | { 698 | AlertDialog.Builder builder = new AlertDialog.Builder(this); 699 | builder.setTitle(R.string.appName); 700 | builder.setIcon(R.drawable.ic_launcher); 701 | 702 | DateFormat dateFormat = DateFormat.getDateTimeInstance(); 703 | SpannableStringBuilder spannable = 704 | new SpannableStringBuilder(getText(R.string.version)); 705 | Pattern pattern = Pattern.compile("%s"); 706 | Matcher matcher = pattern.matcher(spannable); 707 | if (matcher.find()) 708 | spannable.replace(matcher.start(), matcher.end(), 709 | BuildConfig.VERSION_NAME); 710 | matcher.reset(spannable); 711 | if (matcher.find()) 712 | spannable.replace(matcher.start(), matcher.end(), 713 | dateFormat.format(BuildConfig.BUILT)); 714 | builder.setMessage(spannable); 715 | 716 | // Add the button 717 | builder.setPositiveButton(android.R.string.ok, null); 718 | 719 | // Create the AlertDialog 720 | Dialog dialog = builder.show(); 721 | 722 | // Set movement method 723 | TextView text = dialog.findViewById(android.R.id.message); 724 | if (text != null) 725 | { 726 | text.setTextAppearance(builder.getContext(), 727 | android.R.style.TextAppearance_Small); 728 | text.setMovementMethod(LinkMovementMethod.getInstance()); 729 | } 730 | } 731 | } 732 | -------------------------------------------------------------------------------- /src/main/java/org/billthefarmer/solver/Solver.kt: -------------------------------------------------------------------------------- 1 | 2 | package org.billthefarmer.solver 3 | 4 | class Solver(private var g: List, 5 | var y1: List, var y2: List, 6 | var y3: List, private var gray: String) 7 | { 8 | // g green: is correct and in the correct position 9 | // y yellow: is in answer but not in the right position 10 | // gray: is not in the answer at all 11 | 12 | fun solve(): List> { 13 | 14 | if (g.joinToString("").trim().isEmpty()) g = listOf() 15 | if (y1.joinToString("").trim().isEmpty()) y1 = listOf() 16 | if (y2.joinToString("").trim().isEmpty()) y2 = listOf() 17 | if (y3.joinToString("").trim().isEmpty()) y3 = listOf() 18 | 19 | gray = gray.trim() 20 | 21 | var words = getAllDicWords().toList() 22 | 23 | if (g.isNotEmpty()) { 24 | words = words.filter { w -> 25 | 26 | (w[0] == g[0] || g[0] == "") && 27 | (w[1] == g[1] || g[1] == "") && 28 | (w[2] == g[2] || g[2] == "") && 29 | (w[3] == g[3] || g[3] == "") && 30 | (w[4] == g[4] || g[4] == "") 31 | } 32 | } 33 | 34 | if (y1.isNotEmpty()) { 35 | words = filterOutYellow(y1, words) 36 | } 37 | if (y2.isNotEmpty()) { 38 | words = filterOutYellow(y2, words) 39 | } 40 | if (y3.isNotEmpty()) { 41 | words = filterOutYellow(y3, words) 42 | } 43 | 44 | // letters remove from gray 45 | @Suppress("UNUSED_VARIABLE") 46 | var removeWs = mutableListOf().apply { 47 | addAll(g) 48 | addAll(y1) 49 | addAll(y2) 50 | addAll(y3) 51 | forEach { gray = gray.replace(it, "") } 52 | } 53 | 54 | if (gray.isNotEmpty()) { 55 | words = words.filter { w -> 56 | w.none { gray.contains(it) } 57 | } 58 | } 59 | 60 | return words 61 | } 62 | 63 | fun filterOutYellow(y: List, words: List>) = run { 64 | words.filter { w -> 65 | ((w[0] != y[0]) && 66 | (w[1] != y[1]) && 67 | (w[2] != y[2]) && 68 | (w[3] != y[3]) && 69 | (w[4] != y[4])) 70 | }.filter { w -> 71 | val wordSt: String = w.joinToString("") 72 | y.all { 73 | wordSt.contains(it) 74 | } 75 | } 76 | } 77 | 78 | companion object { 79 | 80 | private var dicWords: List> = listOf() 81 | 82 | private fun getAllDicWords(): List> { 83 | 84 | if (dicWords.isEmpty()) { 85 | 86 | var tempDicWords = mutableListOf>() 87 | var tempWords = mutableListOf() 88 | tempWords.addAll(Words.getWords()) 89 | 90 | tempWords.sort() 91 | 92 | tempWords.forEach { 93 | val w = it.split("").toMutableList() 94 | w.removeFirst() 95 | w.removeLast() 96 | tempDicWords.add(w) 97 | } 98 | 99 | dicWords = tempDicWords.toList() 100 | } 101 | 102 | return dicWords 103 | } 104 | 105 | fun emptyDicWords() { 106 | 107 | dicWords = listOf() 108 | } 109 | } 110 | } 111 | 112 | fun joinListColumns(words: List>, numOfColumn: Int): String { 113 | var sb: StringBuffer = StringBuffer() 114 | var counter = 1 115 | 116 | words.forEach { 117 | sb.append(it.joinToString("") + " ") 118 | if (counter++ % numOfColumn == 0) 119 | sb.append("\n") 120 | } 121 | 122 | return sb.toString() 123 | } 124 | 125 | -------------------------------------------------------------------------------- /src/main/java/org/billthefarmer/solver/Words.java: -------------------------------------------------------------------------------- 1 | //////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Wordle solver 4 | // 5 | // Copyright (C) 2022 Bill Farmer 6 | // 7 | // This program is free software: you can redistribute it and/or modify 8 | // it under the terms of the GNU General Public License as published by 9 | // the Free Software Foundation, either version 3 of the License, or 10 | // (at your option) any later version. 11 | // 12 | // This program is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | // GNU General Public License for more details. 16 | // 17 | // You should have received a copy of the GNU General Public License 18 | // along with this program. If not, see . 19 | // 20 | // Bill Farmer william j farmer [at] yahoo [dot] co [dot] uk. 21 | // 22 | /////////////////////////////////////////////////////////////////////////////// 23 | 24 | package org.billthefarmer.solver; 25 | 26 | import android.content.Context; 27 | import android.util.Log; 28 | 29 | import java.io.BufferedReader; 30 | import java.io.IOException; 31 | import java.io.InputStreamReader; 32 | 33 | import java.util.ArrayList; 34 | import java.util.Collection; 35 | import java.util.List; 36 | import java.util.Locale; 37 | 38 | public class Words 39 | { 40 | public static final String TAG = "Words"; 41 | 42 | public static final String WORDS_FILE = "Words.txt"; 43 | public static final String ENGLISH_FILE = "English.txt"; 44 | public static final String ITALIAN_FILE = "Italian.txt"; 45 | public static final String SPANISH_FILE = "Spanish.txt"; 46 | public static final String CATALAN_FILE = "Catalan.txt"; 47 | public static final String FRENCH_FILE = "French.txt"; 48 | public static final String PORTUGUESE_FILE = "Portuguese.txt"; 49 | public static final String GERMAN_FILE = "German.txt"; 50 | public static final String DUTCH_FILE = "Dutch.txt"; 51 | public static final String AFRIKAANS_FILE = "Afrikaans.txt"; 52 | 53 | private static List words; 54 | 55 | private Words() {} 56 | 57 | public static List getWords() 58 | { 59 | return words; 60 | } 61 | 62 | public static void setLanguage(Context context, int l) 63 | { 64 | words = new ArrayList(); 65 | 66 | switch (l) 67 | { 68 | case Main.ENGLISH: 69 | readWords(context, WORDS_FILE, words); 70 | break; 71 | 72 | case Main.ITALIAN: 73 | readWords(context, ITALIAN_FILE, words); 74 | break; 75 | 76 | case Main.SPANISH: 77 | readWords(context, SPANISH_FILE, words); 78 | break; 79 | 80 | case Main.CATALAN: 81 | readWords(context, CATALAN_FILE, words); 82 | break; 83 | 84 | case Main.FRENCH: 85 | readWords(context, FRENCH_FILE, words); 86 | break; 87 | 88 | case Main.PORTUGUESE: 89 | readWords(context, PORTUGUESE_FILE, words); 90 | break; 91 | 92 | case Main.GERMAN: 93 | readWords(context, GERMAN_FILE, words); 94 | break; 95 | 96 | case Main.DUTCH: 97 | readWords(context, DUTCH_FILE, words); 98 | break; 99 | 100 | case Main.AFRIKAANS: 101 | readWords(context, AFRIKAANS_FILE, words); 102 | break; 103 | } 104 | } 105 | 106 | // readWords 107 | private static void readWords(Context context, String file, 108 | Collection collection) 109 | { 110 | try (BufferedReader reader = new BufferedReader 111 | (new InputStreamReader(context.getAssets().open(file)))) 112 | { 113 | String line; 114 | while ((line = reader.readLine()) != null) 115 | collection.add(line); 116 | } 117 | 118 | catch (IOException e) 119 | { 120 | e.printStackTrace(); 121 | } 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /src/main/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billthefarmer/wordlesolver/6e2b9a3a138e835516c283e14161ff2a37f3ad2c/src/main/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/main/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billthefarmer/wordlesolver/6e2b9a3a138e835516c283e14161ff2a37f3ad2c/src/main/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/main/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billthefarmer/wordlesolver/6e2b9a3a138e835516c283e14161ff2a37f3ad2c/src/main/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/main/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billthefarmer/wordlesolver/6e2b9a3a138e835516c283e14161ff2a37f3ad2c/src/main/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/main/res/drawable-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/billthefarmer/wordlesolver/6e2b9a3a138e835516c283e14161ff2a37f3ad2c/src/main/res/drawable-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /src/main/res/drawable/box.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 9 | 14 | 15 | -------------------------------------------------------------------------------- /src/main/res/drawable/ic_autorenew_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /src/main/res/drawable/ic_menu_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /src/main/res/drawable/ic_replay_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /src/main/res/layout-large-land/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 22 | 23 | 41 | 42 | 62 | 63 | 83 | 84 | 104 | 105 | 125 | 126 | 127 | 128 | 136 | 137 | 156 | 157 | 177 | 178 | 198 | 199 | 219 | 220 | 240 | 241 | 242 | 243 | 251 | 252 | 271 | 272 | 292 | 293 | 313 | 314 | 334 | 335 | 355 | 356 | 357 | 358 | 366 | 367 | 386 | 387 | 407 | 408 | 428 | 429 | 449 | 450 | 470 | 471 | 472 | 473 | 490 | 491 | 497 | 498 | 504 | 505 | 506 | 507 | 508 | -------------------------------------------------------------------------------- /src/main/res/layout-large/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 22 | 23 | 43 | 44 | 66 | 67 | 89 | 90 | 112 | 113 | 135 | 136 | 137 | 138 | 146 | 147 | 168 | 169 | 191 | 192 | 214 | 215 | 237 | 238 | 260 | 261 | 262 | 263 | 271 | 272 | 293 | 294 | 316 | 317 | 339 | 340 | 362 | 363 | 385 | 386 | 387 | 388 | 396 | 397 | 418 | 419 | 441 | 442 | 464 | 465 | 487 | 488 | 510 | 511 | 512 | 513 | 531 | 532 | 537 | 538 | 545 | 546 | 547 | 548 | 549 | -------------------------------------------------------------------------------- /src/main/res/layout/help.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/main/res/layout/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 22 | 23 | 41 | 42 | 62 | 63 | 83 | 84 | 104 | 105 | 125 | 126 | 127 | 128 | 136 | 137 | 156 | 157 | 177 | 178 | 198 | 199 | 219 | 220 | 240 | 241 | 242 | 243 | 251 | 252 | 271 | 272 | 292 | 293 | 313 | 314 | 334 | 335 | 355 | 356 | 357 | 358 | 366 | 367 | 386 | 387 | 407 | 408 | 428 | 429 | 449 | 450 | 470 | 471 | 472 | 473 | 490 | 491 | 497 | 498 | 504 | 505 | 506 | 507 | 508 | -------------------------------------------------------------------------------- /src/main/res/menu/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 18 | 19 | 23 | 24 | 25 | 29 | 30 | 34 | 35 | 39 | 40 | 44 | 45 | 49 | 50 | 54 | 55 | 59 | 60 | 64 | 65 | 66 | 67 | 68 | 72 | 73 | 74 | 78 | 79 | 83 | 84 | 88 | 89 | 93 | 94 | 98 | 99 | 103 | 104 | 108 | 109 | 113 | 114 | 118 | 119 | 120 | 121 | 122 | 126 | 127 | 128 | -------------------------------------------------------------------------------- /src/main/res/menu/navigation.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/main/res/raw/help.html: -------------------------------------------------------------------------------- 1 |

WordleSolver

2 |

Solve those puzzles

3 |

4 | Usually 5 | solves Wordle 6 | and Gurgle 7 | puzzles in four tries. 8 |

9 |

Entry

10 |

11 | Letters that are shown green in the puzzle 12 | (Wordle, Gurgle) 13 | go in the first green row in the correct place. Yellow letters go in 14 | the next yellow rows in the correct place. Letters shown grey go in 15 | the last row in any order. 16 |

17 |

Solve

18 |

19 | Tap either the next button on the keyboard or the solve button in the 20 | toolbar. The next button only works if there is text where the cursor 21 | is, so it can be used to move to the next slot without triggering a 22 | search. The app will show a scrolling list of possible next guesses 23 | at the bottom. 24 |

25 |

Theme

26 |

27 | Select coloured theme from the Theme button in the toolbar. 28 |

29 |

External control

30 |

31 | Share text from another app, or send 32 | an Intent 33 | with an EXTRA_TEXT 35 | with the text containing the known letters and blanks or dots for 36 | the unknown letters. The app will start or restart and display the 37 | results. The parameters may be seen in a table in 38 | the README. 39 |

40 | -------------------------------------------------------------------------------- /src/main/res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | RisolviWordle 5 | 6 | Azzera 7 | Risolvi 8 | Tema 9 | Scuro 10 | Ciano 11 | Blu 12 | Arancione 13 | Viola 14 | Nero 15 | Chiaro 16 | Rosso 17 | Aiuto 18 | Informazioni 19 | 20 | Lingua 21 | Inglese 22 | Italiano 23 | Spagnolo 24 | Catalano 25 | Francese 26 | Portoghese 27 | Tedesco 28 | Olandese 29 | Afrikaans 30 | 31 | %s\n\nCompilato il 33 | %s\n\nCopyright \u00A9 2022 Bill 35 | Farmer\n\nDizionari da Lexica\nTemi e codice da PoorLazyCoder\n\nLicenza 38 | GNU GPLv3 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /src/main/res/values-v23/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 20 | 21 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | #303030 6 | @android:color/transparent 7 | @android:color/black 8 | 9 | 10 | #242d48 11 | #2d3d72 12 | #20105c 13 | #64548f 14 | 15 | 16 | #ed2424 17 | #7a0f28 18 | #ed4e2e 19 | #edae25 20 | 21 | 22 | #f35b1f 23 | #f34712 24 | #b44e16 25 | #ffe67f 26 | 27 | 28 | #60e8ff 29 | #5696a1 30 | #50c7c4 31 | #4c4dc7 32 | 33 | 34 | #a42ee5 35 | #8a3ab5 36 | #9d79b1 37 | #180e1d 38 | 39 | 40 | @android:color/black 41 | @android:color/white 42 | 43 | 44 | #808080 45 | @android:color/black 46 | 47 | 48 | -------------------------------------------------------------------------------- /src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WordleSolver 5 | 6 | Refresh 7 | Solve 8 | Theme 9 | Dark 10 | Cyan 11 | Blue 12 | Orange 13 | Purple 14 | Red 15 | Black 16 | Light 17 | Help 18 | About 19 | 20 | Language 21 | English 22 | Italian 23 | Spanish 24 | Catalan 25 | French 26 | Portuguese 27 | German 28 | Dutch 29 | Afrikaans 30 | 31 | %s\n\nBuilt 33 | %s\n\nCopyright \u00A9 2022 Bill 35 | Farmer\n\nDictionaries from Lexica\nThemes and solver code 37 | from PoorLazyCoder\n\nLicence 39 | GNU GPLv3 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 17 | 22 | 34 | 35 | 38 | 39 | 40 | 52 | 53 | 54 | 68 | 69 | 70 | 84 | 85 | 86 | 100 | 101 | 102 | 116 | 117 | 118 | 132 | 133 | 134 | 147 | 148 | 149 | 161 | 162 | 167 | 168 | 173 | 174 | 179 | 180 | 185 | 186 | 191 | 192 | 198 | 199 | 200 | --------------------------------------------------------------------------------