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.