LoginSignup
3
1

More than 1 year has passed since last update.

ワンライナーWordle

Last updated at Posted at 2022-02-04

はじめに

Wordle流行ってますね。私も数日前からハマっています。
シンプルなゲーム性で誰でも楽しめて、一日一回しかできない仕様で飽きさせない。とても魅力的なゲームだと思います。

……でももう少し遊びたい?
自前で実装してしまいましょう。

……シンプルだし短く書けるよね?
…ぇ…ええ、ワンライナーしましょう。

ワンライナーします

私はPythonくらいしかワンライナーで書けるほどの文法を知らないので、今回はPythonで実装します……

oneliner_wordle.py
print('\n'+['YOU WIN',(l:=[i.upper() for i in __import__('requests').get('https://www-cs-faculty.stanford.edu/~knuth/sgb-words.txt').text.splitlines()if len(set(i))==5and len(i)==5]), (a:=__import__('random').choice(l)),(b:=False),f'YOU LOSE\tANSWER:{a}'][[print(j,end=''if b else'')or(b:=(i==a)) for i,j in((lambda t:[t,''.join([f'\033[{[30,33,32][(s in a)+(s==a[i])]}m{s}\033[0m'for i,s in enumerate(t)])])(next((i for i in(input('\t\t>>').upper()for _ in '_'*5)if i in l)))for _ in '_'*6if not b)][-1]-1])

出来ました。
単語リストは、こちら↓からお借りしました。
https://www-cs-faculty.stanford.edu/~knuth/sgb-words.txt

私の環境のコマンドプロンプトでは上手く色付き文字で表示されませんでした。VSCodeのターミナルや、Jupyterでは正常に表示されると思います。
また、文字を白くするには[30,33,32]の部分を[37,33,32]にしてください。

requestsは準標準ライブラリといっても良いのではないかと勝手に思っているので使用してしまっています。
標準ライブラリのみで書くならこうなります。

oneliner_wordle_std.py
print('\n'+['YOU WIN',(l:=[i.upper() for i in __import__('urllib').request.urlopen('https://www-cs-faculty.stanford.edu/~knuth/sgb-words.txt').read().decode().splitlines()if len(set(i))==5and len(i)==5]), (a:=__import__('random').choice(l)),(b:=False),f'YOU LOSE\tANSWER:{a}'][[print(j,end=''if b else'')or(b:=(i==a)) for i,j in ((lambda t:[t, ''.join([f'\033[{[30,33,32][(s in a)+(s==a[i])]}m{s}\033[0m'for i,s in enumerate(t)])])(next((i for i in(input('\t\t>>').upper()for _ in '_'*5)if i in l)))for _ in '_'*6if not b)][-1]-1])

遊んでみよう

image.png
4ターンで正解できましたv
Wordle 227 3/6

⬜⬜🟨⬜⬜
🟩🟩⬜⬜🟨
🟩🟩🟩⬜🟩
🟩🟩🟩🟩🟩

#最後に

他言語版、改良版などありましたらコメント欄にて教えていただけると嬉しいです!

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1