نیاز به حل تمامی سوالات مسابقه نیست و از هر قسمت هر مقدار که میتوانید حل کنید. توجه داشته باشید که سوالات الگوریتمی و پیادهسازی به صورت صفر و یکی تصحیح میشوند و دیگر سوالات نمره خواهند گرفت. لطفا فرم زیر را پر کنید. https://quera.ir/general_form/QU9jHL/
همانطور که میدانید در لینوکس با استفاده از دستور md5sum
، میتوان هش MD5 محتوای یک فایل را به دست آورد. میتوان از این مقدار برای بررسی مساوی بودن محتوای دو فایل استفاده کرد، به این صورت که اگر مقدار هش دو فایل برابر باشد به احتمال بسیار زیاد محتوای آن فایلها با هم کاملاً یکسان است.
اکنون ما میخواهیم دو پوشه را با هم مقایسه کنیم و ببینیم که آیا محتوای این دو پوشه کاملاً یکسان است یا خیر. از نظر ما دو پوشه یکسان هستند اگر اولاً ساختار داخلی دو پوشه (پوشهبندیها و مسیر فایلها) دقیقاً یکسان باشد و محتوای فایلهای متناظر کاملاً یکسان باشد. یعنی هر دو فایل متناظر، آدرس نسبی یکسانی داشته باشند (نسبت به پوشه خود، در مسیر یکسانی قرار گرفته باشند) و محتوای یکسانی نیز داشته باشند. (اطلاعاتی مانند owner, permission, time فایلها را در نظر نمیگیریم).
بنابراین در مثال زیر، با فرض یکسان بودن محتوای فایلهای با نام یکسان، دو پوشه dir1
و dir2
یکسان نیستند چون ساختار داخلی متفاوتی دارند. اما dir1
و dir3
با این که نامهای متفاوتی دارند، یکسان هستند (زیرا محتوای یکسانی دارند).
برای این مقایسه میخواهیم با استفاده از md5sum
یک هش برای هر پوشه به دست بیاوریم و برای مقایسه پوشهها، هش پوشهها را با هم مقایسه کنیم.
یک اسکریپت Bash با نام md5sum4dir.sh
بنویسید که آدرس یک پوشه را بگیرد و در خروجی، هش آن پوشه را بنویسد. هش تولیدشده باید مانند خروجی md5sum
یک رشته hex به طول ۳۲ باشد.
اسکریپت md5sum4dir.sh
را Zip کنید و به عنوان پاسخ ارسال کنید. دقت کنید که اسکریپت باید مستقیماً در ریشه فایل Zip باشد (در هیچ پوشهای نباشد).