المسارات
/
Julia
Julia
/
التمارين
/
رقعة الشطرنج
رقعة الشطرنج

رقعة الشطرنج

تمرين تعلّمي

مقدمة

لنفترض أنك تريد جميع الأعداد الصحيحة غير السالبة حتى 1000. سيكون أمرًا سخيفًا أن تضطر إلى كتابتها كلها داخل مصفوفة.

لهذا لدينا النوع 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

يمكن تحديد حجم الخطوة، وهو في هذه الحالة 0.3:

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 إلى 8.

1. عرّف مدى الصفوف

نفّذ الدالة rank_range(). ينبغي أن تُرجع مدى من الأعداد الصحيحة، من 1 إلى 8.

julia> rank_range()
# output omitted

2. عرّف مدى الأعمدة

نفّذ الدالة file_range(). ينبغي أن تُرجع مدى من المحارف، من الحرف الكبير A إلى الحرف الكبير H.

julia> file_range()
# output omitted

3. حوّل مدى الصفوف إلى متجه من الصفوف

نفّذ الدالة ranks(). ينبغي أن تُرجع متجهًا من الأعداد الصحيحة، من 1 إلى 8. لا تكتب المتجه يدويًا، بل ولّده من المدى الذي تُرجعه الدالة 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 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.