GNU/Linux >> Belajar Linux >  >> Linux

Selesaikan Wordle menggunakan baris perintah Linux

Saya baru-baru ini menjadi sedikit terobsesi dengan permainan puzzle kata online di mana Anda memiliki enam upaya untuk menebak kata lima huruf acak. Kata berubah setiap hari, dan Anda hanya bisa bermain sekali sehari. Setelah setiap tebakan, setiap huruf dalam tebakan Anda disorot:abu-abu berarti huruf itu tidak muncul di kata misteri, kuning berarti huruf itu muncul di kata tapi tidak di posisi itu, dan hijau berarti huruf itu muncul di kata di posisi yang benar.

Lebih banyak sumber daya Linux

  • Lembar contekan perintah Linux
  • Lembar contekan perintah Linux tingkat lanjut
  • Kursus online gratis:Ikhtisar Teknis RHEL
  • Lembar contekan jaringan Linux
  • Lembar contekan SELinux
  • Lembar contekan perintah umum Linux
  • Apa itu container Linux?
  • Artikel Linux terbaru kami

Inilah cara Anda dapat menggunakan baris perintah Linux untuk membantu Anda memainkan permainan tebak-tebakan seperti Wordle. Saya menggunakan metode ini untuk membantu saya memecahkan teka-teki 6 Januari:

Percobaan pertama

Sistem Linux menyimpan kamus kata di /usr/share/dict/words mengajukan. Ini adalah file teks biasa yang sangat panjang. File kata-kata sistem saya memiliki lebih dari 479.800 entri di dalamnya. File tersebut berisi kata-kata biasa dan kata benda diri (nama, tempat, dan sebagainya).

Untuk memulai tebakan pertama saya, saya hanya ingin daftar kata-kata biasa yang panjangnya tepat lima huruf. Untuk melakukan itu, saya menggunakan grep perintah:

$ grep '^[a-z][a-z][a-z][a-z][a-z]$' /usr/share/dict/words > myguess

grep perintah menggunakan ekspresi reguler untuk melakukan pencarian. Anda dapat melakukan banyak hal dengan ekspresi reguler, tetapi untuk membantu saya memecahkan Wordle, saya hanya memerlukan dasar-dasarnya:^ berarti awal dari sebuah baris, dan $ berarti akhir dari suatu baris. Di antaranya, saya telah menetapkan lima contoh [a-z] , yang menunjukkan huruf kecil dari a sampai z.

Saya juga dapat menggunakan wc perintah untuk melihat daftar kemungkinan kata saya adalah "hanya" 15.000 kata:

$ wc -l myguess
15034 myguess

Dari daftar itu, saya memilih kata lima huruf acak:hektar . a diatur ke kuning, artinya huruf itu ada di suatu tempat di kata misteri tetapi tidak di posisi pertama. Huruf-huruf lainnya berwarna abu-abu, jadi saya tahu itu tidak ada dalam kata hari ini.

Percobaan kedua

Untuk tebakan saya berikutnya, saya ingin mendapatkan daftar semua kata yang mengandung a , tapi tidak di posisi pertama. Daftar saya juga tidak boleh menyertakan huruf c , r , e , atau s . Mari kita bagi menjadi beberapa langkah:

Untuk mendapatkan daftar semua kata dengan a, saya menggunakan fgrep (string tetap grep) perintah. fgrep perintah juga mencari teks seperti grep , tetapi tanpa menggunakan ekspresi reguler:

$ fgrep a myguess > myguess2

Itu membuat daftar kemungkinan tebakan saya berikutnya turun dari 15.000 kata menjadi 6.600 kata:

$ wc -l myguess myguess2
 15034 myguess
  6634 myguess2
 21668 total

Tapi daftar kata itu juga termasuk huruf a di posisi pertama, yang tidak saya inginkan. Game sudah menunjukkan huruf a ada di beberapa posisi lain. Saya dapat mengubah perintah saya dengan grep untuk mencari kata-kata yang mengandung beberapa huruf lain di posisi pertama. Itu mempersempit kemungkinan tebakan saya menjadi hanya 5.500 kata:

$ fgrep a myguess | grep '^[b-z]' > myguess2
$ wc -l myguess myguess2
 15034 myguess
  5566 myguess2
 20600 total

Tapi saya tahu kata misteri juga tidak termasuk huruf c , r , e , atau s . Saya dapat menggunakan grep lain perintah untuk menghilangkan huruf-huruf itu dari pencarian:

$ fgrep a myguess | grep '^[b-z]' | grep -v '[cres]' > myguess2
$ wc -l myguess myguess2
15034 myguess
 1257 myguess2
16291 total

-v option berarti membalikkan pencarian, jadi grep hanya akan mengembalikan baris yang tidak cocok dengan ekspresi reguler [cres] atau satu daftar huruf c , r , e , atau s . Dengan grep tambahan ini perintah, saya telah mempersempit tebakan saya berikutnya menjadi hanya 1.200 kemungkinan kata dengan a di suatu tempat tetapi tidak di posisi pertama, dan itu tidak mengandung c , r , e , atau s .

Setelah melihat daftarnya, saya memutuskan untuk mencoba kata nyaman .

Percobaan ketiga

Kali ini, huruf b dan a disorot dalam warna hijau, artinya saya memiliki huruf-huruf itu di posisi yang benar. Surat l berwarna kuning, sehingga huruf itu ada di tempat lain dalam kata, tetapi tidak di posisi itu. Huruf m dan y berwarna abu-abu, jadi saya bisa menghilangkannya dari tebakan saya berikutnya.

Untuk mengidentifikasi daftar kemungkinan kata berikutnya, saya dapat menggunakan kumpulan grep . lainnya perintah. Saya tahu kata itu dimulai dengan ba , jadi saya bisa memulai pencarian saya di sana:

$ grep '^ba' myguess2 > myguess3
$ wc -l myguess3
77 myguess3

Itu hanya 77 kata! Saya dapat mempersempitnya lebih jauh dengan mencari kata-kata yang juga mengandung huruf l di mana saja kecuali posisi ketiga:

$ grep '^ba[^l]' myguess2 > myguess3
$ wc -l myguess3
61 myguess3

^ di dalam tanda kurung siku [^l] berarti bukan daftar huruf ini, jadi bukan huruf l . Itu membuat daftar kata-kata saya menjadi 61, tidak semuanya mengandung huruf l , yang dapat saya hilangkan menggunakan grep another lain cari:

$ grep '^ba[^l]' myguess2 | fgrep l > myguess3
$ wc -l myguess3
10 myguess3

Beberapa dari kata-kata itu mungkin mengandung huruf m dan y , yang tidak ada dalam kata misteri hari ini. Saya dapat menghapusnya dari daftar tebakan saya dengan satu lagi grep . terbalik cari:

$ grep '^ba[^l]' myguess2 | fgrep l | grep -v '[my]' > myguess3
$ wc -l myguess3
7 myguess3

Daftar kemungkinan kata saya sangat pendek sekarang, hanya tujuh kata!

$ cat myguess3
babul
bailo
bakal
bakli
banal
bauld
baulk

Saya akan memilih dangkal sebagai kemungkinan kata untuk tebakan saya berikutnya, yang kebetulan benar.

Kekuatan ekspresi reguler

Baris perintah Linux menyediakan alat yang ampuh untuk membantu Anda melakukan pekerjaan nyata. grep dan fgrep perintah menawarkan fleksibilitas yang besar dalam memindai daftar kata. Untuk permainan tebak kata berbasis kata, grep membantu mengidentifikasi daftar 15.000 kemungkinan kata hari ini. Setelah menebak dan mengetahui huruf apa yang muncul dan tidak muncul di kata misteri, grep dan fgrep membantu mempersempit pilihan menjadi 1.200 kata dan kemudian hanya tujuh kata. Itulah kekuatan baris perintah.


Linux
  1. Cara menggunakan perintah grep Linux

  2. Buat file dengan menggunakan baris perintah di Linux

  3. 4 alat untuk mengunduh file apa pun menggunakan baris perintah di Linux

  1. Pengantar menggunakan tcpdump di baris perintah Linux

  2. Menggunakan kekuatan di baris perintah Linux

  3. Miliki sapi di baris perintah Linux

  1. Masukkan diri Anda ke dalam baris perintah Linux

  2. Menggunakan Stratis untuk mengelola penyimpanan Linux dari baris perintah

  3. Cara Mengekstrak File tar.gz di Linux dengan Menggunakan Command Line