یک اکانت اینستاگرام که نمی دونم کی فالوش کردم مسابقه جمعهها برگزار کرده:
موضوع مسابقه پیدا کردن یک کلمه ده حرفی است که مربوط به این شکل باشه و ده حرفی باشه و در جاهای مشخص شده a و q نشسته باشن.
بریم برای جواب؟ در لینوکس بسته scowl رو میشناسم (یا با سرچ بهش می رسم) که بقیه غلطیابهای دیکته ازش استفاده می کنن. این بسته حاوی کلی فایل است که همه کلمات زبان انگلیسی توشه (از آمریکا تا کانادا و دستاشون).
نصبش می کنیم:
jadi@funlife:/tmp$ sudo aptitude install scowl [sudo] password for jadi: The following NEW packages will be installed: scowl 0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 2,249 kB of archives. After unpacking 7,516 kB will be used. Get: 1 http://ir.archive.ubuntu.com/ubuntu/ utopic/universe scowl all 7.1-1 [2,249 kB] Fetched 2,249 kB in 9s (248 kB/s) Selecting previously unselected package scowl. (Reading database ... 639459 files and directories currently installed.) Preparing to unpack .../archives/scowl_7.1-1_all.deb ... Unpacking scowl (7.1-1) ... Processing triggers for cracklib-runtime (2.9.1-1build1) ...
و به دایرکتوری اش می ریم. چون برنامه اجرایی نیست و تنظیمات و موقت هم نیست منطقا باید راحت در usr/share بشه پیداش کرد.
jadi@funlife:/usr/share/dict/scowl$ cd /usr/share/dict/scowl/
حالا یک نگاه بندازیم ببینیم چه تیپ چیزهایی داریم اینجا:
jadi@funlife:/usr/share/dict/scowl$ ls -ltrh | tail -rw-r--r-- 1 root root 13K Oct 23 2011 special-hacker.50 -rw-r--r-- 1 root root 2.4M Oct 23 2011 english-words.95 -rw-r--r-- 1 root root 238K Oct 23 2011 english-words.50 -rw-r--r-- 1 root root 34K Oct 23 2011 english-words.10 -rw-r--r-- 1 root root 787K Oct 23 2011 english-proper-names.95 -rw-r--r-- 1 root root 57K Oct 23 2011 british-words.80 -rw-r--r-- 1 root root 56K Oct 23 2011 american-words.80 -rw-r--r-- 1 root root 15K Oct 23 2011 american-words.70 -rw-r--r-- 1 root root 9.1K Oct 23 2011 american-words.50 -rw-r--r-- 1 root root 303 Oct 23 2011 american-words.10
و توی یکیشون رو به اتفاق نگاه می کنیم:
jadi@funlife:/usr/share/dict/scowl$ tail canadian-words.10 realized realizes realizing recognize recognized recognizes recognizing rumour spelled storey
بعله. فایل های خودمون هستن.
حالا کار راحته: گشتن در همه فایل ها و پیدا کردن چیزی که ترکیب مورد نظر اونها رو داشته باشه. دقت کنیم که در egrep، علامت نقطه یعنی «هرکاراکتری»… علامت ^ یعنی اول خط و علاقمت $ یعنی آخر خط. پس:
jadi@funlife:/usr/share/dict/scowl$ egrep "^a...q.....$" * english-words.35:antiquated english-words.35:antiquates english-words.80:antiquarks english-words.95:ablaqueate english-words.95:alfaquin's english-words.95:antiquer's
یوهاهاها… دو تا آخری که جذاب نیستن. آنتی کوارک که می دونیم چیه، ablaqueate رو توی گوگل سرچ کردم مهم نبود پس جواب ما antiquated است که یعنی کهنه و منسوخ و خارج از مد. جواب رو دادم و منتظرم ببینم چی میگن.
آپدیت: نوید راد پیشنهاد می ده به دلیل نبودن بسته اسکاول در اکثر توزیع ها کد زیر رو هم بذارم:
curl -O -J -L http://sourceforge.net/projects/wordlist/files/latest/download?source=typ_redirect
tar -xvf ./scowl-yyyy.mm.dd.tar.gz # say, scowl-2015.02.15.tar.gz
cd scowl-2015.02.15/final
grep -Ea "^a.{3}q.{5}$" *
بخش اول که دانلود کردن اسکاول از منبعش در سورس فورج است و خط آخر همون رجکس من که کمی بهتر / کمتر خوانا نوشته شده و عوضش یک چیز جدید به شما یاد می ده اگر درست نگاهش کنین: روش اینکه بگیم «از همین قبلی سه تا».