مسیرها
/
Julia
Julia
/
تمرین‌ها
/
صفحه‌ی شطرنج
صفحه‌ی شطرنج

صفحه‌ی شطرنج

تمرین یادگیری

مقدمه

فرض کنید همه‌ی اعداد صحیح نامنفی تا ۱۰۰۰ را می‌خواهید. اگر مجبور بودید همه‌ی آن‌ها را در یک آرایه تایپ کنید، واقعاً مسخره می‌شد.

برای همین، نوع range را داریم:

julia> 0:1000
0:1000

julia> typeof(0:1000)
UnitRange{Int64}

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

توجه کنید که بازه‌ها بردار نیستند. آن‌ها فقط مجموعه‌ای از دستورها برای تولید یک دنباله‌اند («ارزیابی تنبل»، یا یک «تکرارگر»).

اگر به یک بازه به شکل بردار نیاز دارید، از تابع collect() برای تبدیل استفاده کنید:

julia> collect(0:5)
6-element Vector{Int64}:
 0
 1
 2
 3
 4
 5

اندازه‌ی گام را هم می‌توان مشخص کرد، که در این حالت ۰٫۳ است:

julia>  collect(1.0:0.3:2.0)
4-element Vector{Float64}:
 1.0
 1.3
 1.6
 1.9

پس نحوه‌ی نگارش چنین است: start:stepsize:stop. هر دو کران پایانی شامل هستند، همان‌طور که در مثال اعداد صحیح دیدید. اگر اندازه‌ی گام دقیقاً بر stop - start بخش‌پذیر نباشد، آخرین عنصر از stop فراتر نمی‌رود.

بازه‌ی حرفی

دنباله‌های غیرعددی را هم می‌توان در بازه‌ها به کار برد. ساده‌ترین مثال، حروف ASCII است:

julia> 'a':'d'
'a':1:'d'

julia> typeof('a':'d')
StepRange{Char, Int64}

julia> collect('a':'d')
4-element Vector{Char}:
 'a': ASCII/Unicode U+0061 (category Ll: Letter, lowercase)
 'b': ASCII/Unicode U+0062 (category Ll: Letter, lowercase)
 'c': ASCII/Unicode U+0063 (category Ll: Letter, lowercase)
 'd': ASCII/Unicode U+0064 (category Ll: Letter, lowercase)

نوع Char در مفهوم دیگری با جزئیات بیشتری بررسی می‌شود. فعلاً با آن‌ها مثل کاراکترهای تکی داخل علامت نقل‌قول تکی رفتار کنید.

توابع و عملگرها برای بازه‌ها

کران‌های یک بازه را با first() و last() بررسی کنید.

 r = 1:10  # => 1:10
 first(r)  # => 1
 last(r)   # => 10

بیشتر درباره‌ی نمایه‌گذاری بردار

از بازه‌های صحیح و بردارها می‌توان در نمایه‌گذاری بردار استفاده کرد:

nums = collect(10.0:50.0)
nums[3:2:7]  # gives [12.0, 14.0, 16.0]
nums[ [3, 5, 7] ] # also gives [12.0, 14.0, 16.0]

دستورالعمل‌ها

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

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

هر خانه از صفحه‌ی شطرنج با یک جفت حرف و عدد مشخص می‌شود. ستون‌های عمودی خانه‌ها، که به آن‌ها «ستون» می‌گویند، با حروف A تا H برچسب‌گذاری شده‌اند. ردیف‌های افقی خانه‌ها، که به آن‌ها «ردیف» می‌گویند، از ۱ تا ۸ شماره‌گذاری شده‌اند.

1. بازه‌ی ردیف‌ها را تعریف کنید

تابع rank_range() را پیاده‌سازی کنید. این تابع باید یک بازه از اعداد صحیح را برگرداند، از ۱ تا ۸.

julia> rank_range()
# output omitted

2. بازه‌ی ستون‌ها را تعریف کنید

تابع file_range() را پیاده‌سازی کنید. این تابع باید یک بازه از کاراکترها را برگرداند، از حرف بزرگ A تا حرف بزرگ H.

julia> file_range()
# output omitted

3. بازه‌ی ردیف‌ها را به بردار ردیف‌ها تبدیل کنید

تابع ranks() را پیاده‌سازی کنید. این تابع باید یک بردار از اعداد صحیح را برگرداند، از ۱ تا ۸. این بردار را دستی ننویسید و آن را از بازه‌ای که تابع rank_range() برمی‌گرداند بسازید.

julia> ranks()
[1, 2, 3, 4, 5, 6, 7, 8]

4. بازه‌ی ستون‌ها را به بردار ستون‌ها تبدیل کنید

تابع files را پیاده‌سازی کنید. این تابع باید یک بردار از کاراکترها را برگرداند، از 'A' تا 'H'. این بردار را دستی ننویسید و آن را از بازه‌ای که تابع file_range() برمی‌گرداند بسازید.

julia> files()
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Julia Exercism

آماده‌اید صفحه‌ی شطرنج را شروع کنید؟

در Exercism ثبت‌نام کنید تا Julia را همراه با 35 مفهوم128 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.