تجربه‌های پراکنده‌ی یک مسعود
در صورت ناخوانا بودن نوشته‌ها، از مرورگر دیگری استفاده کنید.

نکته‌ای در استفاده از map

[بازگشت به فهرست]
نکته‌ای در مورد استفاده از ساختمان داده‌ی map با مثالی به زبان برنامه‌نویسی ++C

ساختمان داده‌ی map (یا dictionary) از ابزارهای مهم و کاربردی هر زبان برنامه‌نویسی‌ه که برای برقراری نگاشت بین هر نوع کلید و مقدار متناظر استفاده می‌شه. آرایه‌های معمولی یه عدد صحیح رو به عنوان کلید به یه مقدار از هر نوع کلاس یا نوع داده نگاشت می‌کنن. اما وقتی از map استفاده می‌کنیم، این امکان بهمون داده می‌شه که از اشیاء کلاس‌ها و انواع داده‌های پیش‌فرض هر زبان برنامه‌نویسی به عنوان کلید استفاده کنیم. پس مشخصه که پیاده‌سازی خیلی از عملیات‌ها رو ساده‌تر می‌کنه و کمک بزرگی به حساب می‌یاد.

    با توجه به نوع نگاشت، طبیعتا محاسبات map برای ذخیره کردن و بازیابی اطلاعات پیچیده‌تر از آرایه‌‌های معمولی‌ه. برای مثال برنامه‌ای به زبان ++C رو در نظر بگیرید که مقدار هفتصد هزار جمله‌ی اول دنباله‌ی فیبوناچی رو به روش برنامه‌نویسی پویا داخل یه آرایه و همینطور یه map ذخیره می‌کنه و مدت زمان اجرای این فرآیندها رو به عنوان خروجی چاپ می‌کنه:

 1  int main(){
 2      const int size = 700000;
 3      int a[size];
 4      map<int, int> b;
 5      clock_t tStart;
 6      double cps = CLOCKS_PER_SEC;
 7      a[0] = b[0] = 0;
 8      a[1] = b[1] = 1;
 9      tStart = clock();
10      for(int i = 2 ; i < size ; i++)
11          a[i] = a[i - 1] + a[i - 2];
12      cout << "Time for array: " << (clock() - tStart) / cps << "s" <<  endl;
13      tStart = clock();
14      for(int i = 2 ; i < size ; i++)
15          b[i] = b[i - 1] + b[i - 2];
16      cout << "Time for map: " << (clock() - tStart) / cps << "s" << endl;
17      return 0;
18  }

ادامه ...


بازی مین‌روب

[بازگشت به فهرست]
بازنشر یک یادداشت قدیمی

«

    تعطیلات عید به این فکر افتادم که اگه حس درس و کار نداشتم، اوقات بیکاریم رو با کدنویسی کارای متفرقه بگذرونم، که هم وقتم بیخود تلف نشه، و هم چیزای جدید یاد بگیرم. اولین ایده هم نوشتن بازی‌های فکری بود. چند تا بازی فکری مشهور و غیرمشهور رو واسه خودم لیست کردم و بالاخره برای گام اول مین‌روب یا همون Minesweeper رو انتخاب کردم.

    مشکلی که من با Minesweeperهای فعلی دارم اینه که بعد از کلی زحمت و پیدا کردن اکثر مین‌ها، سر یه انتخاب اشتباه کل بازی تموم می‌شه. واسه همین خودم دست به کار شدم و بازی رو از نو ساختم و این بار قوانین بازی رو کمی تغییر دادم. البته اطلاع ندارم که قبلا این کار انجام شده یا نه.

    قانون بازی جدید از این قراره که وقتی یه مین منفجر می‌شه، بازی تموم نمی‌شه. بلکه اون مین و همه مین‌های همسایه منفجر می‌شن. آخر بازی هر چند تا مین سالمی که کشف شده باشن، امتیاز بازیکن محسوب می‌شن.

ادامه ...