{"id":5280,"date":"2023-02-24T19:48:11","date_gmt":"2023-02-24T19:48:11","guid":{"rendered":"https:\/\/blog.ackgame.com\/onwords\/?p=5280"},"modified":"2023-02-24T19:48:11","modified_gmt":"2023-02-24T19:48:11","slug":"worbot-creating-a-successful-wordle-solver","status":"publish","type":"post","link":"https:\/\/blog.ackgame.com\/onwords\/worbot-creating-a-successful-wordle-solver\/","title":{"rendered":"Worbot: creating a successful Wordle solver"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>My Wordle solver, Worbot, has the following statistical accomplishments:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-5281 aligncenter\" src=\"https:\/\/blog.ackgame.com\/onwords\/wp-content\/uploads\/2023\/02\/worstats-342x300.png\" alt=\"\" width=\"342\" height=\"300\" srcset=\"https:\/\/blog.ackgame.com\/onwords\/wp-content\/uploads\/2023\/02\/worstats-342x300.png 342w, https:\/\/blog.ackgame.com\/onwords\/wp-content\/uploads\/2023\/02\/worstats.png 518w\" sizes=\"auto, (max-width: 342px) 100vw, 342px\" \/><\/p>\n<p>It has missed the word entirely only twice. Ignore the current streak 0 because my program doesn&#8217;t actually track that. If you average it out, it comes to about 3.9. It plays entirely in hard mode. Here&#8217;s how I created it.<\/p>\n<p>First, I scraped the list of target words from the original Wordle website (before the Times bought it). By target words, I mean words that can actually appear as the winning word. There are many valid words that are accepted as guesses, but never used as the target. I computed the frequency of each letter in each of the five positions in the target words. In case you want to know what they are, here are the top few.<\/p>\n<ol>\n<li>SAAEE (most frequent in each position)<\/li>\n<li>COINY (2nd most frequent)<\/li>\n<li>BROST (3rd)<\/li>\n<\/ol>\n<p>Then I ran the target list and selected 64 words that all scored high in the frequency of each letter, e.g. CRONE, SAINT.\u00a0 I already had data from Google Nwords about the frequency of various words in English. I have word lists, including a 5-letter list, ordering the words by frequency. The top scorers are WHICH, THERE, THEIR, and WOULD. I wanted these because I knew that Wordle used mostly common words as target words. That&#8217;s the data I needed.<\/p>\n<p>Now, to the logic of the program. For the first guess, it randomly selects one of those 64 words. It receives the usual feedback of gray, yellow and green. After that the program ignores the target list and refers only to my list of 5-letter words in frequency order. That list includes many words that are not possible target words, so the program doesn&#8217;t &#8220;cheat.&#8221;\u00a0 It simply tests each word for conflicts and if it hits one, moves on to the next word. At each level, it uses the colors from all the previous guess results to cull out bad words.<\/p>\n<p>For example, suppose the correct word is LINEN and Worbot guesses SAINT for its first guess. The I and N would be yellow, the rest gray. For the second guess, it would start with WHICH, but reject it because it doesn&#8217;t have an N. THERE would be skipped because it has a T and doesn&#8217;t have an N, and so forth. The first word it would come to with an I and an N is AGAIN, but that would be rejected because of the A, which was gray earlier. The first word that has no conflicts is GIVEN, the 65th word on the frequency list. This would produce green for the I, E, and N. And so on. If you are writing a solver, or just want to improve your guessing, I suggest you consider using this simple logic. BTW &#8211; Worbot has never gotten the word on its first try, and neither have I.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; My Wordle solver, Worbot, has the following statistical accomplishments: It has missed the word entirely only twice. Ignore the current streak 0 because my program doesn&#8217;t actually track that. If you average it out, it comes to about 3.9. It plays entirely in hard mode. Here&#8217;s how I created it. First, I scraped the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-5280","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Worbot: creating a successful Wordle solver - OnWords<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.ackgame.com\/onwords\/worbot-creating-a-successful-wordle-solver\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Worbot: creating a successful Wordle solver - OnWords\" \/>\n<meta property=\"og:description\" content=\"&nbsp; My Wordle solver, Worbot, has the following statistical accomplishments: It has missed the word entirely only twice. Ignore the current streak 0 because my program doesn&#8217;t actually track that. If you average it out, it comes to about 3.9. It plays entirely in hard mode. Here&#8217;s how I created it. First, I scraped the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.ackgame.com\/onwords\/worbot-creating-a-successful-wordle-solver\/\" \/>\n<meta property=\"og:site_name\" content=\"OnWords\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/russ.atkinson1\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/russ.atkinson1\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-24T19:48:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.ackgame.com\/onwords\/wp-content\/uploads\/2023\/02\/worstats-342x300.png\" \/>\n<meta name=\"author\" content=\"Russ\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Russ\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/worbot-creating-a-successful-wordle-solver\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/worbot-creating-a-successful-wordle-solver\\\/\"},\"author\":{\"name\":\"Russ\",\"@id\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/#\\\/schema\\\/person\\\/654f3245633e56a118601748ce7c22e1\"},\"headline\":\"Worbot: creating a successful Wordle solver\",\"datePublished\":\"2023-02-24T19:48:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/worbot-creating-a-successful-wordle-solver\\\/\"},\"wordCount\":481,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/#\\\/schema\\\/person\\\/654f3245633e56a118601748ce7c22e1\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/worbot-creating-a-successful-wordle-solver\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/worstats-342x300.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/worbot-creating-a-successful-wordle-solver\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/worbot-creating-a-successful-wordle-solver\\\/\",\"url\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/worbot-creating-a-successful-wordle-solver\\\/\",\"name\":\"Worbot: creating a successful Wordle solver - OnWords\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/worbot-creating-a-successful-wordle-solver\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/worbot-creating-a-successful-wordle-solver\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/worstats-342x300.png\",\"datePublished\":\"2023-02-24T19:48:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/worbot-creating-a-successful-wordle-solver\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/worbot-creating-a-successful-wordle-solver\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/worbot-creating-a-successful-wordle-solver\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/worstats.png\",\"contentUrl\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/wp-content\\\/uploads\\\/2023\\\/02\\\/worstats.png\",\"width\":518,\"height\":454},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/worbot-creating-a-successful-wordle-solver\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Worbot: creating a successful Wordle solver\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/#website\",\"url\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/\",\"name\":\"OnWords\",\"description\":\"Reflections of a writer on language and life\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/#\\\/schema\\\/person\\\/654f3245633e56a118601748ce7c22e1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/blog.ackgame.com\\\/onwords\\\/#\\\/schema\\\/person\\\/654f3245633e56a118601748ce7c22e1\",\"name\":\"Russ\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f6d5f88feffeb51157b4512719048eefe58839a006ff50cd01d8ca0c316d7d99?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f6d5f88feffeb51157b4512719048eefe58839a006ff50cd01d8ca0c316d7d99?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f6d5f88feffeb51157b4512719048eefe58839a006ff50cd01d8ca0c316d7d99?s=96&d=mm&r=g\",\"caption\":\"Russ\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f6d5f88feffeb51157b4512719048eefe58839a006ff50cd01d8ca0c316d7d99?s=96&d=mm&r=g\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/russ.atkinson1\",\"https:\\\/\\\/studio.youtube.com\\\/channel\\\/UCAtS1H93Hh-6ptZ-6WzKpMw\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Worbot: creating a successful Wordle solver - OnWords","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.ackgame.com\/onwords\/worbot-creating-a-successful-wordle-solver\/","og_locale":"en_US","og_type":"article","og_title":"Worbot: creating a successful Wordle solver - OnWords","og_description":"&nbsp; My Wordle solver, Worbot, has the following statistical accomplishments: It has missed the word entirely only twice. Ignore the current streak 0 because my program doesn&#8217;t actually track that. If you average it out, it comes to about 3.9. It plays entirely in hard mode. Here&#8217;s how I created it. First, I scraped the [&hellip;]","og_url":"https:\/\/blog.ackgame.com\/onwords\/worbot-creating-a-successful-wordle-solver\/","og_site_name":"OnWords","article_publisher":"https:\/\/www.facebook.com\/russ.atkinson1","article_author":"https:\/\/www.facebook.com\/russ.atkinson1","article_published_time":"2023-02-24T19:48:11+00:00","og_image":[{"url":"https:\/\/blog.ackgame.com\/onwords\/wp-content\/uploads\/2023\/02\/worstats-342x300.png","type":"","width":"","height":""}],"author":"Russ","twitter_misc":{"Written by":"Russ","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.ackgame.com\/onwords\/worbot-creating-a-successful-wordle-solver\/#article","isPartOf":{"@id":"https:\/\/blog.ackgame.com\/onwords\/worbot-creating-a-successful-wordle-solver\/"},"author":{"name":"Russ","@id":"https:\/\/blog.ackgame.com\/onwords\/#\/schema\/person\/654f3245633e56a118601748ce7c22e1"},"headline":"Worbot: creating a successful Wordle solver","datePublished":"2023-02-24T19:48:11+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.ackgame.com\/onwords\/worbot-creating-a-successful-wordle-solver\/"},"wordCount":481,"commentCount":0,"publisher":{"@id":"https:\/\/blog.ackgame.com\/onwords\/#\/schema\/person\/654f3245633e56a118601748ce7c22e1"},"image":{"@id":"https:\/\/blog.ackgame.com\/onwords\/worbot-creating-a-successful-wordle-solver\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.ackgame.com\/onwords\/wp-content\/uploads\/2023\/02\/worstats-342x300.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.ackgame.com\/onwords\/worbot-creating-a-successful-wordle-solver\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.ackgame.com\/onwords\/worbot-creating-a-successful-wordle-solver\/","url":"https:\/\/blog.ackgame.com\/onwords\/worbot-creating-a-successful-wordle-solver\/","name":"Worbot: creating a successful Wordle solver - OnWords","isPartOf":{"@id":"https:\/\/blog.ackgame.com\/onwords\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.ackgame.com\/onwords\/worbot-creating-a-successful-wordle-solver\/#primaryimage"},"image":{"@id":"https:\/\/blog.ackgame.com\/onwords\/worbot-creating-a-successful-wordle-solver\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.ackgame.com\/onwords\/wp-content\/uploads\/2023\/02\/worstats-342x300.png","datePublished":"2023-02-24T19:48:11+00:00","breadcrumb":{"@id":"https:\/\/blog.ackgame.com\/onwords\/worbot-creating-a-successful-wordle-solver\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.ackgame.com\/onwords\/worbot-creating-a-successful-wordle-solver\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.ackgame.com\/onwords\/worbot-creating-a-successful-wordle-solver\/#primaryimage","url":"https:\/\/blog.ackgame.com\/onwords\/wp-content\/uploads\/2023\/02\/worstats.png","contentUrl":"https:\/\/blog.ackgame.com\/onwords\/wp-content\/uploads\/2023\/02\/worstats.png","width":518,"height":454},{"@type":"BreadcrumbList","@id":"https:\/\/blog.ackgame.com\/onwords\/worbot-creating-a-successful-wordle-solver\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.ackgame.com\/onwords\/"},{"@type":"ListItem","position":2,"name":"Worbot: creating a successful Wordle solver"}]},{"@type":"WebSite","@id":"https:\/\/blog.ackgame.com\/onwords\/#website","url":"https:\/\/blog.ackgame.com\/onwords\/","name":"OnWords","description":"Reflections of a writer on language and life","publisher":{"@id":"https:\/\/blog.ackgame.com\/onwords\/#\/schema\/person\/654f3245633e56a118601748ce7c22e1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.ackgame.com\/onwords\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/blog.ackgame.com\/onwords\/#\/schema\/person\/654f3245633e56a118601748ce7c22e1","name":"Russ","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f6d5f88feffeb51157b4512719048eefe58839a006ff50cd01d8ca0c316d7d99?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f6d5f88feffeb51157b4512719048eefe58839a006ff50cd01d8ca0c316d7d99?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f6d5f88feffeb51157b4512719048eefe58839a006ff50cd01d8ca0c316d7d99?s=96&d=mm&r=g","caption":"Russ"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/f6d5f88feffeb51157b4512719048eefe58839a006ff50cd01d8ca0c316d7d99?s=96&d=mm&r=g"},"sameAs":["https:\/\/www.facebook.com\/russ.atkinson1","https:\/\/studio.youtube.com\/channel\/UCAtS1H93Hh-6ptZ-6WzKpMw"]}]}},"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p51pCz-1na","jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/blog.ackgame.com\/onwords\/wp-json\/wp\/v2\/posts\/5280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ackgame.com\/onwords\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ackgame.com\/onwords\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ackgame.com\/onwords\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ackgame.com\/onwords\/wp-json\/wp\/v2\/comments?post=5280"}],"version-history":[{"count":1,"href":"https:\/\/blog.ackgame.com\/onwords\/wp-json\/wp\/v2\/posts\/5280\/revisions"}],"predecessor-version":[{"id":5282,"href":"https:\/\/blog.ackgame.com\/onwords\/wp-json\/wp\/v2\/posts\/5280\/revisions\/5282"}],"wp:attachment":[{"href":"https:\/\/blog.ackgame.com\/onwords\/wp-json\/wp\/v2\/media?parent=5280"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ackgame.com\/onwords\/wp-json\/wp\/v2\/categories?post=5280"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ackgame.com\/onwords\/wp-json\/wp\/v2\/tags?post=5280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}