جایی برای نوشتن

بایگانی
آخرین نظرات
۰۷آذر

همانگونه که می دانیم کلمه ای پالیندروم نامیده می شود چنانچه از ابتدا و انتها به یک صورت خوانده شود . کلماتی مثل radar و level و 9009 و hallah نمونه هایی از کلمات پالیندروم هستند .


در این پست می خواهیم بزرگترین عدد پالیندروم حاصل از ضرب دو عدد سه رقمی را پیدا کنیم . قبل از اینکه شروع به نوشتن برنامه کنیم قانونی اساسی در سیستم عامل یونیکس را به یاد بیاورید:


هر برنامه می بایست یک کار اصلی انجام دهد و حل یک مساله عبارتست از ترکیب برنامه های مختلف از طریق ارتباط ورودی/خروجی های آن ها با هم از طریق pipe و یا طرق دیگر.


برای حل مساله ابتدا برنامه ای به زبان پرل می نویسیم که کلیه اعداد 3 رقمی را در هم ضرب کند و هر حاصلضرب را در یک خط از خروجی استاندارد چاپ کند. اسم این برنامه را multiply.pl می گذاریم.


#!/usr/local/bin/perl
use strict;
use warnings;

for (my $i = 999; $i >= 100; $i--) {
for(my $j = 999; $j >= 100; $j--) {
print $i * $j , "\n";
}
}

به خاطر بیاورید که قبلا برنامه ای نوشته بودیم که لیستی از کلمات را از ورودی استاندارد می خواند و سپس کلمات پالیندروم را در خروجی استاندارد چاپ می کرد ( اینجا ) . فرض کنید این برنامه را به نام pal.pl در دایرکتوری multiply.pl ذخیره کرده ایم . با استفاده از این برنامه می توانیم اعداد پالیندروم حاصل از ضرب دو عدد سه رقمی را به صورت زیر پیدا کنیم . برای جلوگیری از زیاد شدن خروجی با استفاده از دستور head تعداد نتایج را به 10 عدد محدود می کنیم .

# perl multiply.pl | perl pal.pl | head
580085
514415
906609
119911
282282
141141
853358
650056
601106
592295

اما برنامه مورد نیاز ما نکته ظریف دیگری نیز دارد. ما بزرگترین عدد پالیندروم را می خواهیم . لذا ابتدا می بایست اعداد حاصل از ضرب را به صورت نزولی سورت کنیم و سپس اقدام به یافتن بزگترین عدد پالیندروم کنیم . دستور زیر این کار را انجام می دهد.

# perl multiply.pl | sort -nr | perl pal.pl | head
906609
906609
888888
888888
886688
886688
861168
861168
855558
855558

عدد مورد نظر ما 906609 هست که بزرگترین عدد پالیندروم حاصل از ضرب دو عدد سه رقمی است.

همانطوری که مشاهده می کنید در بسیاری موارد نیازی به نوشتن برنامه برای انجام یک کار بخصوص نداریم و تنها باید قادر باشیم از برنامه های نوشته شده به خوبی استفاده کنیم.
۹۳/۰۹/۰۷ موافقین ۰ مخالفین ۰
...:::... محسن ...:::...

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی