[HN Gopher] Play Wordle from Your Terminal ___________________________________________________________________ Play Wordle from Your Terminal Author : conradludgate Score : 144 points Date : 2022-02-06 15:41 UTC (7 hours ago) (HTM) web link (crates.io) (TXT) w3m dump (crates.io) | ylyn wrote: | Looking at the source, this doesn't handle ambering of repeated | letters correctly: let mut diff = | [Match::Black; 5]; for (i, &b) in | input.iter().enumerate() { if solution[i] == b { | diff[i] = Match::Green; } else if | solution.contains(&b) { diff[i] = Match::Amber; | } } | | If the solution is "crest", for example, guessing "class" should | give green for the first s and black/grey for the second s, but | your implementation will give amber for the second s. And if you | guess "stars", then only the first s should be amber, and the | second should be black. | re wrote: | It's interesting to me how common this bug with the coloring of | repeated letters in guesses is in Wordle clones, as well as how | often there are disagreements in comments about what the | correct behavior should be. | | IMO, this is something that ought to be called out in a | hypothetical formal specification of Wordle, but I kind of like | that it _isn 't_ mentioned in the instructions for the game, | from a gameplay/learning perspective. It encourages people to | reason through what the correct behavior ought to be on their | own, and to experiment to see how the implementation marks | guesses; the assumption that letters can't be repeated is one | that a lot of people don't realize that they're making. | | https://news.ycombinator.com/item?id=30174386 | | https://news.ycombinator.com/item?id=30086083 | | https://news.ycombinator.com/item?id=29964725 | | https://news.ycombinator.com/item?id=29947881 | | https://news.ycombinator.com/item?id=29828652 | | https://news.ycombinator.com/item?id=29699516 | | https://news.ycombinator.com/item?id=30103848 | IanCal wrote: | It's making me think that this will be a future | fizzbuzz/bowling pin/Roman numerals kind of example for | programming. | tsumnia wrote: | > this doesn't handle AMBERing of repeated letters correctly | | Sigh... this game has ruined 5 letter words for me. Saw it and | immediately thought "how's that for an opener?" | conradludgate wrote: | Oh interesting. Fair enough. I didn't bother (or care enough) | how it handled multiple of the same letter. I might patch it | later | Biganon wrote: | This is a key behavior, without it the game is basically | useless | conradludgate wrote: | I'd disagree with this. Sampling bias but I do have a 100% | win streak average of 4 and I've never needed this | information to win | Jtsummers wrote: | You may not have needed that information, but if the game | marks both instances of the same letter as amber (correct | letter, wrong place), but there is only _one_ instance | then it has misled the player. That 's incorrect | behavior. The player should be able to discern from their | guess which letters and how many of them there are in the | solution. They shouldn't be led towards a wrong answer. | | It's not a stellar plan, but if someone starts off with a | guess like "abyss" and there is only one 's', they | shouldn't be tricked by the game. | brewdad wrote: | Not to mention, if you play on hard mode, using that non- | existent second 's' is now required. I get that this | implementation doesn't have a hard mode, but most of my | friends play in hard mode, in practice, even if the box | isn't ticked on. | furyofantares wrote: | I get 3 quite often, and it's a major part of the game, | and probably the most fun/interesting consideration. | airstrike wrote: | You may disagree, but you're still wrong. | colinmhayes wrote: | It's a fact that this implementation is "useless" without | correct behavior for repeated letters? Seems like most | people wouldn't even notice. | [deleted] | airstrike wrote: | It's like implementing a chess game except your knight | moves 1 square forward + 1 square to the side instead of | 1+2. Sure, you can play it, but the game is wrong. | colinmhayes wrote: | More like a chess game where you can't do en passant. I | don't think that makes it useless. | pxx wrote: | Which makes it not chess; i.e. not fit for purpose. And | this omission is more on the scale of missing castling | than en passant. Some people who futz with two or so | moves will think it's "fine" but it's missing something | critical. | conradludgate wrote: | >> without it the game is basically useless | | This is what I am disagreeing with. It's not useless. I | have and can play it just fine without that information. | | I already have a fix implemented, but it was an extreme | statement that I was saying is wrong | airstrike wrote: | But that's the thing, you can't "play it just fine". You | can play a broken version of the game. Nobody is | interested in a game that is 90% correct. | | And then on top of that you're being defensive when you | receive very valid feedback instead of gladly accepting | it. What's the point of even posting to HN if you're not | welcoming feedback? | conradludgate wrote: | When did I not accept the feedback? I fixed it. I said it | was interesting. I didn't accept that it was "unplayable" | which is hyperbole | csallen wrote: | You come off as somewhat defensive, dismissive, uncaring. | Which are normal and justifiable human emotions when | someone is criticizing your creations. But "the crowd" | really doesn't like to see them expressed. So it's a good | rule of thumb when posting these things in public to err | on the side of being gracious and grateful. Like it or | not, it's just good PR. | conradludgate wrote: | I agree in a sense, but I was initially responding to | someone who said the game was "useless" without this, | which in my experience is just not true and rude itself | (and most people I know don't understand the rules of how | it handles doubles) | | The "didn't care" part was referring to my initial | research, and not the fix. In my top level comment, I | mentioned this was a quick couple hour project. | | I didn't mind the initial criticism. Like I said before, | I found it interesting. | contravariant wrote: | For something that can only occur when the answer contains | a letter twice that seems a bit harsh. | iso1210 wrote: | First half a dozen or so times I did it I just assumed | you couldn't have a duplicate letter. | daemoens wrote: | Ironically, today's answer had the same letter twice. | dTal wrote: | Spoilers!! | CrazyStat wrote: | It is unnecessarily harsh, but the behavior is also | important if the answer contains a letter once but your | guess contains it twice, not only if the answer contains | it twice. | lozenge wrote: | That's not very CIVIC. I'll pay you a VISIT. After | calling my MUMMY. SORRY, just trying to be FUNNY. | cwackerfuss wrote: | I maintain an OSS wordle clone that has solved this problem | if you'd like to check it out as inspiration: | | https://github.com/cwackerfuss/word-guessing- | game/blob/49279... | conradludgate wrote: | I already have a working fix, but thanks for offering | renewiltord wrote: | Fascinating how the perceived tone of the initial response | can change the outcome of the deepest thread. Sensitive | dependence on initial conditions. Human conversation meets | James Gleick's Chaos conditions! | dowakin wrote: | If you wonder why in the demo author uses `crane` as first guess | - check out recent video from 3Blue1Brown | | https://www.youtube.com/watch?v=v68zYyaEmEA | conradludgate wrote: | It was a funny coincidence that I started working on this, and | then an hour later he released that video :) | js2 wrote: | This is missing one thing I find helpful in the web-based game. | The on-screen keyboard which colors the letters according to your | guesses which makes it a lot easier to plan your next guess. | conradludgate wrote: | There's now a keyboard that is shown to the side. I hope this | satisfies your needs | dTal wrote: | Use your shell! | | echo abcdefghijklmnopqrstuvwxyz | tr -d 'adieu' | | I do this anyway, because instead of the normal order I put the | alphabet in frequency order, so I get the list of letters in | the order I should be considering them. | | It's possible to "cheat" quite a bit using the shell. Exactly | what does and doesn't count as "cheating" is up to your | personal comfort level. For example, the frequency analysis of | the official wordle word list is rather different than English | at large... | [deleted] | 0F wrote: | I was so shocked when my family member told me wordle is a | website and not an app. I never thought that the masses would go | for something like that in the package of a website. It really | gives me hope for the future. | rockostrich wrote: | Why? Publishing an app costs money even if the app is free | (which is why free apps usually have ads or some kind in-app | purchases). Publishing a website with static content can be | free depending on where you host it. | 0F wrote: | Because the model of apps needs to die. If you have something | you want to put out into the world you currently need to | write an android app, an iOS app and then any other native | formats you want to target. But it's much better to make it | browser based because it's one and done and it also side- | steps all the nonsense with app stores which has been well | known lately. If it's easier and better for the developers | then we will have more and better software. | | Web assembly and WGPU are coming and when they do it will be | the next paradigm after mobile apps. But in order to get to | this new glorious paradigm it is necessary for people to be | capable of recognizing the value of software even if it's in | the browser and of using it on the scale seen with wordle. | It's just as likely that people would turn their nose up to a | browser based software and everything would remain stagnate. | So I am glad. | cableshaft wrote: | What about something like React Native? You get Web, iOS, | and Android with one codebase. | nojito wrote: | webapps are a privacy nightmare. | | No thanks. | choward wrote: | Mobile apps are a privacy nightmare. | | No thanks. | ccouzens wrote: | Just about anything that can connect to the internet is a | potential privacy nightmare. I assume that by specifying | "webapps" you're making a comparison to native apps. | | Configure your browser to block 3rd party cookies and | you'll be fine. | | It's nice to have the private window privacy feature. | That's a standard feature of web browsers, but I don't | know of any consumer operating system that makes this | easy for native apps. | Anthony-G wrote: | While they often are, there's no rule that web apps have | to be a privacy nightmare. | | Thanks to Hacker News1, I recently came across _Learn | systemd by example_ 2. The site itself is hosted by | Hetzner, a German hosting provider that take user privacy | seriously3 and uses Cloudflare as a privacy-conscious | CDN4. The only third-party resources it uses are Google | fonts. Users of _uMatrix_ 5 or _uBlock Origin_ 6 can | easily block these resources and the web app works | perfectly fine without them. | | I'd also use Wordle itself as an example of a reasonably | user-privacy friendly web application. The only third- | party resources it uses is Google Tag Manager (which is | blocked by default by uMatrix). | | I use Firefox with a number of web extensions ( _Firefox | Multi-Account Containers_ 7, _Decentraleyes_ 8, _uMatrix_ | , _uBlock Origin_ , _Privacy Redirect_ 9). These all | provide me, an end-user, much greater control over my | online privacy than I'd have with a mobile app. I've also | recommended Decentraleyes and uBlock Origin to non- | technical friends as extensions they can install and not | worry about configuration. | | 1. https://news.ycombinator.com/item?id=30071240 | | 2. https://systemd-by-example.com/ | | 3. https://www.hetzner.com/legal/privacy-policy | | 4. https://www.cloudflare.com/privacypolicy/ | | 5. https://github.com/gorhill/uMatrix | | 6. https://github.com/gorhill/uBlock#ublock-origin | | 7. https://github.com/mozilla/multi-account- | containers#readme | | 8. https://decentraleyes.org/ | | 9. https://github.com/SimonBrazell/privacy-redirect | cuteboy19 wrote: | I am actually very thankful that the original wordle is a pwa | as well | otobrglez wrote: | I wrote this blog-post about cracking of the Wordle game. If you | are interested into its mechanics and implementation... | | https://epic.blog/hacking/2022/01/26/cracking-the-wordle-gam... | Fnoord wrote: | There's a couple of other Rust versions of this game: wordle [1] | and wordlet [2]. Yours is lacking showing (qwerty) overview of | which letters were used. Although now that I think of it, its not | optimal to show it as qwerty for non-qwerty users. | | [1] https://crates.io/crates/wordle | | [2] https://crates.io/crates/wordlet | conradludgate wrote: | Yeah, I explicitly left out the keyboard view. It's technically | redundant information so I didn't want to deal with the extra | complexity | Fnoord wrote: | Redundant it is, yes, but I use it to determine which common | letter I have not yet used. Although dvorak or colemak are | more representative for such (because you can relate it to | the middle row) I have this legacy and defacto standard issue | with qwerty. | conradludgate wrote: | One thing I could do, also avoiding any specific keyboard | layout, is to render a 5x5 letter grid with these colours, | and give a shuffle ability. It being QWERTY or any other | keyboard layout does not offer any advantage over a random | layout | Fnoord wrote: | Yep, or abc, or vowels first, then consonants, or | different layouts and let user decide, with sane default. | jwandborg wrote: | The original wordle draws its own keyboard, which shows as | qwerty regardless. | satysin wrote: | I know it's totally pointless but it would have been cute if the | word in the demo gif was cargo :D | | When I saw the first letter was C I totally thought that was what | the author had done. | conradludgate wrote: | Aww, I wish I had thought of that! I just went for the day 0 | word, to try and avoid any trouble with spoilers | tasha0663 wrote: | > cl-wordle | | Was _terdle_ already being used? | conradludgate wrote: | I default to publishing my crates under the prefix `cl-` (my | initials) if I don't intend them to be serious | davidkuhta wrote: | Totally thought that was cl for command line... | BlanketLogic wrote: | this looks neat. Thanks for sharing. | | I published one too[0] which is much clumsier - it needs to be | interacted via wordlers. Of course mine is more for trying out an | algorithm or two for solving. But it also allows one to play cows | and bulls[1]. | | [0] https://crates.io/crates/wordlers [1] | https://en.wikipedia.org/wiki/Bulls_and_Cows | conradludgate wrote: | This was a quick project I put together this Sunday. I've been | needing a project that I can "finish" as I've been a bit | ambitious with my other projects recently. | | It's probably not flawless and doesn't have any | leaderboard/statistics saving yes, but it does the job. | | It uses the official word list and order, so every day should | match the website. It prints the emoji share upon finish too, so | you can share as you would normally | maxbond wrote: | Congrats on shipping your project! | | I know you cut out lots of features for simplicity, which makes | total sense to me if your goal was to finish & ship it, but if | you wanted to add the wordle keyboard &c, you might look into | using `tui`. | throwthere wrote: | Mad respect for not mentioning Rust in the title. | petee wrote: | I appreciate your sentiment, although I do like to see the | language, personally, if it's something I need to compile - | not everyone has x-toolchain. | | That said, being not unfamiliar with Rust, i did indeed | notice crates.io :) | conradludgate wrote: | I figured everyone who knew and cared enough about rust would | recognise the "crates.io" url ;) | jug wrote: | Awaiting a server listening to Telnet now, like the classic at | blinkenlights.nl | thefreeman wrote: | try out `ssh sshwordle.daveroda.com` ___________________________________________________________________ (page generated 2022-02-06 23:00 UTC)