Persian subtitles

مثل یک برنامه‌نویس فکر کن، قسمت ۷: برج «آهان!»

Get Embed Code
20 Languages

Showing Revision 12 created 03/10/2020 by Masood Mousavi.

  1. «اِتیک» و «هِج» در طبقه‌ی پایینِ
    یک برج بسیار بلند ایستاده‌اند.
  2. میله‌های انرژی مانع از
    رسیدن آن دو به هدف دومشان می‌شوند:
  3. یعنی مخزن خلقت.
  4. برای رسیدن به آن «اِتیک» باید از سه آبشارِ
    انرژی بالا برود و به بالای برج برسد.
  5. به‌محض آنکه جلو می‌آید، یک زمان‌سنج
    شروع به شمارش معکوس ۶۰ ثانیه می‌کند.
  6. در انتهای اتاق، ظرفی از جنسِ
    ستون‌های نامرئی قرار دارد
  7. که می‌تواند انرژی را
    در میان خود نگه دارد.
  8. پس از یک دقیقه، سیلی از انرژی
    از بالا روی آن ریخته می‌شود.
  9. که ظرف را خانه به خانه پر می‌کند،
  10. و یک میدان نامرئی مانع از آن می‌شود
    که انرژی از جلو یا عقب آن بیرون بریزد.
  11. در طول ۶۰ ثانیه،
  12. «اِتیک» و «هِج» باید تصمیم بگیرند که
    دقیقاً چند واحد انرژی خواهد ریخت.
  13. این آزمون ۳ بار تکرار می‌شود،
  14. و آن‌ها هر بار باید تصمیم بگیرند که
    ظرف، دقیقاً چند واحد انرژی نگه می‌دارد.
  15. اگر درست تصمیم بگیرند، انرژی
    به آن‌ها کمک می‌کند بالاتر بروند.
  16. اما اگر اشتباه کنند، انرژی تخلیه می‌شود،
  17. و آن‌ها را پایین می‌اندازد.
  18. تصاویر روی دیوار
    مثال‌هایی را نشان می‌دهند.
  19. این چیدمان از ستون‌ها
    دقیقاً ۲ واحد انرژی را در خود نگه می‌دارد.
  20. این چیدمان، ۴ واحد،
    ۳ واحد اینجا، و یکی اینجا.
  21. این‌یکی هم ۴ واحد،
  22. به خاطر آنکه انرژی
    از سمت راست، بیرون می‌ریزد.
  23. انرژی مانند باران
    از بالا می‌بارد،
  24. و تنها در صورتی بیرون می‌ریزد
    که فضایی برای نگه‌داشتنش وجود نداشته باشد.
  25. «هِج» می‌تواند هر بار یک ستون را مرئی کند،
    و ارتفاع آن را اندازه بگیرد.
  26. اما نمی‌تواند همه‌ی چیدمان را
    در آنِ واحد نشان دهد.
  27. «اِتیک» چگونه باید «هِج» را
    برنامه‌ریزی کند،
  28. تا بفهمد هر ظرف چقدر
    انرژی می‌تواند نگه دارد؟
  29. اکنون فیلم را نگه دارید،
    و خودتان به این مسئله فکر کنید.
  30. یک روش برای فکر کردن
    به مسئله این است:
  31. هر خانه‌ی خالی، تنها در صورتی
    می‌تواند انرژی را نگه دارد که،
  32. نهایتاً یک دیوار جایی در سمت چپش،
  33. و یک دیوار جایی در سمت راستش
    قرار داشته باشد.
  34. اما اگر «هِج» بخواهد تک تک خانه‌ها را
    چک کند، زمان زیادی لازم است.
  35. اما چه می‌شد اگر او می‌توانست
    به تمام یک ستون به‌یک‌باره فکر کند؟
  36. مثلاً این شکل چند واحد انرژی
    را می‌تواند نگه دارد؟
  37. شما بگویید...
  38. بیایید مسئله را با نگاه کردن
    به این مثال بررسی کنیم:
  39. در اینجا، ۵ ستون داریم.
  40. چپ‌ترین ستون نمی‌تواند انرژی نگه دارد
    زیرا خانه‌ی خالی ندارد.
  41. دومین ستون، ۳ واحد خالی دارد،
  42. زیرا در دو طرفش این دو ستون قرار دارند.
  43. با داشتن ارتفاع انرژی‌ای که در ظرف می‌ماند
    یعنی ۴، و کم کردن ارتفاع ستون، یعنی ۱،
  44. می‌فهمیم ۳ واحد انرژی
    در این ستون قرار می‌گیرد.
  45. ستون سوم نیز همین‌طور- ۴ واحد سمت چپ،
    ۴ واحد سمت راست، و ارتفاع ستون که ۳ است،
  46. پس ۴ منهای ۳
    یعنی ۱ واحد انرژی نگه می‌دارد.
  47. بالای ستون چهارم و پنجم، خانه‌ی خالی‌
    وجود ندارد که سمت راستش هم دیواری باشد،
  48. پس نمی‌توانند هیچ انرژی‌ای نگه‌دارند.
  49. ما می‌توانیم این روش را
    به یک الگوریتم تبدیل کنیم.
  50. اگر هر بار یک ستون را در نظر بگیریم،
  51. «هِج» می‌تواند ستون‌های سمت چپ را
    یکی یکی نگاه کند و بلندترین را پیدا کند.
  52. سپس در سمت راست،
    بلندترین ستون را پیدا کند.
  53. و از بین این دو، ستون کوتاه‌تر را
    به‌عنوان حداکثر ارتفاع انرژی انتخاب کند.
  54. اگر این مقدار از ارتفاع
    ستون ظرف بیشتر باشد،
  55. ارتفاع ستون ظرف را از آن کم کند،
  56. تا بفهمد چند واحد انرژی
    در ستون نگه داشته می‌شود.
  57. اگر حداکثر ارتفاع انرژی بدست آمده
    از ارتفاع ستون کمتر یا با آن برابر باشد،
  58. انرژی بیرون می‌ریزد.
  59. «هِج» می‌تواند این کار را با تکرار
    روی تمام ظرف اجرا کند.
  60. برای این کار، از ستون سمت چپ آغاز می‌کند
    و ستون به ستون به سمت راست می‌رود.
  61. برای هر ستون این مراحل را تکرار می‌کند:
    بلندترین ستون سمت چپ را پیدا کن،
  62. این کار را برای سمت راست هم انجام بده،
    از بین این دو ستون کوتاه‌تر را انتخاب کن
  63. جواب را از ارتفاع ستون ظرف کم کن،
  64. اگر پاسخ مثبت شد، آن را به
    جمع کل انرژی‌های تاکنون اضافه کن.
  65. تا زمانی که ستونی وجود داشته باشد،
    این مراحل مانند حلقه‌ای تکرار می‌شود.
  66. این روش درست عمل می‌کند،
    اما اگر ظرف بزرگ باشد زمان زیادی می‌برد.
  67. در هر گام، «هِج» به تمام ستون‌های سمت چپ
    و تمام ستون‌های سمت راست نگاه می‌کند.
  68. اگر N ستون داشته باشیم،
    او به هر یک از N ستون، N بار نگاه می‌کند.
  69. راه سریع‌تری وجود دارد؟
  70. یک راه برای ذخیره زمان این است:
    «هِج» قبل از هر کار دیگری،
  71. از سمت چپ شروع کند،
  72. و جدولی از بلندترین ستونی که
    تابه‌حال دیده ایجاد کند.
  73. در اینجا جدول می‌شود: ۲،
    باز هم ۲، چراکه ستون اول بلندتر بود،
  74. بعد ۴، ۴ و ۴.
  75. بعد از آن می‌تواند بلندترین
    ستون از سمت راست را پیدا کند،
  76. تنها لازم است همان کار را از راست به چپ
    انجام دهد: ۱ و ۳ و ۴ و ۴ و ۴.
  77. در آخر او جدولی مثل این
    در حافظه‌اش خواهد داشت.
  78. حالا «هِج» تنها با یک بار طی کردن ستون‌ها
    می‌تواند مقدار انرژی را محاسبه کند.
  79. مانند قبل، هنگام رسیدن به هر ستون،
  80. مقدار کمتر از بین اعداد ذخیره‌شده در جدول
    برای چپ و راست را انتخاب کند،
  81. و آن را از ارتفاع ستون کم کند.
  82. در این صورت به‌جای آنکه به N ستون، N بار
    نگاه کند، به N ستون ۳ بار نگاه کرده است
  83. که به آن زمان «خطی» می‌گوییم.
  84. روش‌هایی هست که راه حل را
    از این هم سریع‌تر کنیم،
  85. اما تا همین‌جا برای قهرمانان ما کافی است.
  86. «اِتیک» و «هِج» با هم تلاش می‌کنند.
  87. اولین آبشار خیلی آسان است
    و به‌راحتی از آن بالا می‌روند.
  88. دومین مسئله کمی سخت‌تر است.
  89. سومین مسئله، خیلی سخت است،
    با تعداد خیلی زیادی ستون.
  90. زمان‌سنج، تا صفر می‌شمارد.
    اما برنامه‌ی «اِتیک» سریع عمل می‌کند.
  91. او درست در لحظه‌ی آخر فرمان را
    در جای درستش قرار می‌دهد،
  92. و انرژی، آن‎‌ها را به مخزن خلقت می‌رساند.
  93. مثل مخزن اول، در اینجا هم تصاویری به او
    نشان داده می‌شود: خاطراتی از سال‌های گذشته
  94. «ماشین جهان»، همه‌چیز را تغییر داد.
  95. و «اِتیک» که مهندس ارشد رباتیک بود،
  96. به خاطر چیزی که دید به دردسر افتاد.
  97. وقتی حصاری بلند، مردم را زندانی کرد،
  98. او می‌دانست یک مشکل جدی پیش آمده است.
  99. برای همین، او سه مخزن درست کرد
  100. که توانایی برگرداندن قدرت، خلاقیت
    و حافظه‌ی مردم را داشتند.
  101. و آن‌ها را در سه جای مختلف پنهان کرد.
  102. قبل از آنکه بتواند به مردم بگوید
    چگونه از آن‌ها استفاده کنند،
  103. حکومت از کارهای او باخبر شد
    و ربات‌هایی برای دستگیری او
  104. و برنامه‌نویس‌های دیگر فرستاد.
  105. آخرین چیزی که «اِتیک»
    توسط «ماشین جهان» ساخت،
  106. رباتی بود که فناوری باستانی را
    در یک مارپیچ غول‌آسا نگه دارد
  107. تا بتواند در مقابل نیروهای ناشناس
    از آن محافظت کند.
  108. و نام آن را «هِج» گذاشت.
  109. در این هنگام، آسانسور انرژی
    ناگهان قطع و وصل شد، و سپس خاموش شد.