ट्रैक
/
F#
F#
/
अभ्यास
/
Tracks on Tracks on Tracks
Tracks on Tracks on Tracks

Tracks on Tracks on Tracks

सीखने का अभ्यास

परिचय

ऐरे

F# में list शून्य या अधिक वैल्यू का एक अपरिवर्तनीय संग्रह है। किसी ऐरे की सभी वैल्यू का टाइप एक ही होना चाहिए। चूँकि ऐरे अपरिवर्तनीय होते हैं, इसलिए एक बार बन जाने के बाद उनकी वैल्यू कभी नहीं बदल सकती। जो भी फंक्शन या ऑपरेटर ऐरे को बदलते हुए दिखते हैं (जैसे कोई एलिमेंट जोड़ना), वे वास्तव में एक नया ऐरे लौटाते हैं।

ऐरे को इस तरह बनाया जा सकता है:

let empty = []
let singleValue = [5]
let threeValues = ["a"; "b"; "c"]

किसी ऐरे में एलिमेंट जोड़ने का सबसे आम तरीका :: (cons) ऑपरेटर है:

let twoToFour = [2; 3; 4]
let oneToFour = 1 :: twoToFour
// => [1; 2; 3; 4]

F# के ऐरे का एक हेड (पहला एलिमेंट) और एक टेल (पहले एलिमेंट के बाद का सब कुछ) होता है। किसी ऐरे का टेल खुद भी एक ऐरे होता है।

ऐरे के साथ काम करने के लिए या तो List मॉड्यूल में बने फंक्शन और ऑपरेटर इस्तेमाल किए जाते हैं, या फिर लिस्ट और कॉन्स पैटर्न की मदद से पैटर्न मैचिंग की जाती है:

let describe list =
    match list with
    | [] -> "Empty list"
    | head::tail -> sprintf "Non-empty list with head: %d" head

describe []        // => "Empty list"
describe [1]       // => "Non-empty with head: 1"
describe [5; 7; 9] // => "Non-empty with head: 5"

पैटर्न मैचिंग करते समय आप किसी वैल्यू को छोड़ भी सकते हैं; जब किसी खास केस में आपको किसी वैल्यू की परवाह नहीं होती (यानी आप उस वैल्यू का इस्तेमाल नहीं करने वाले होते), तो इस बात को जताने के लिए आप अंडरस्कोर ('_') लगा सकते हैं:

let describe list =
    match list with
    | [] -> "Empty list"
    | [x] -> "List with one item"
    | [_; y] -> "List with two items (first item ignored)"
    | _ -> "List with many items (all items ignored)"

describe []        // => "Empty list"
describe [1]       // => "List with one item"
describe [5; 7]     // => "List with two items (first item ignored)"
describe [5; 7; 9] // => "List with many items (all items ignored)"

पैटर्न मैचिंग में अकेला '_' हमेशा सबसे अंत में आना चाहिए; जो भी वैल्यू बाकी किसी भी केस से मेल नहीं खाती, उसे यही केस संभाल लेता है।

निर्देश

इस अभ्यास में आप कोड लिखेंगे। इस कोड की मदद से आप उन प्रोग्रामिंग भाषाओं का हिसाब रख सकेंगे जिन्हें आप Exercism पर सीखना चाहते हैं।

आपके सामने छह टास्क हैं, और इन सभी में ऐरे से काम पड़ेगा।

1. एक नया ऐरे बनाइए

आप जिन भाषाओं को सीखना चाहते हैं, उनका हिसाब रखने के लिए आपको एक नया ऐरे बनाना होगा। ऐसी newList बाइंडिंग बनाइए जिसमें एक नया, खाली ऐरे हो।

newList
// => []

2. मौजूदा ऐरे बनाइए

इस समय आपके पास एक कागज़ का टुकड़ा है, जिस पर वे भाषाएँ लिखी हैं जो आप सीखना चाहते हैं: F#, Clojure और Haskell। इस ऐरे को दर्शाने के लिए existingList बाइंडिंग बनाइए।

existingList
// => ["F#"; "Clojure"; "Haskell"]

3. ऐरे में एक नई भाषा जोड़िए

जैसे-जैसे आप Exercism पर घूमते हैं और नई रोचक भाषाएँ ढूँढते हैं, आप उन्हें अपने ऐरे में जोड़ना चाहते हैं। अपने ऐरे के शुरू में एक नई भाषा जोड़ने के लिए addLanguage फंक्शन बनाइए।

addLanguage "TypeScript" ["JavaScript"; "CoffeeScript"]
// => ["TypeScript"; "JavaScript"; "CoffeeScript"]

4. ऐरे में भाषाओं की गिनती कीजिए

भाषाओं को एक-एक करके गिनना सुविधाजनक नहीं है। अपने ऐरे में भाषाओं की संख्या गिनने के लिए countLanguages फंक्शन बनाइए।

countLanguages ["C#"; "Racket"; "Rust"; "Ruby"]
// => 4

5. ऐरे को उलटिए

किसी समय आपको पता चलता है कि आपका ऐरे वास्तव में उलटे क्रम में है! अपने ऐरे को उलटने के लिए reverseList फंक्शन बनाइए।

reverseList ["Prolog"; "C"; "Idris"; "Assembly"]
// => ["Assembly"; "Idris"; "C"; "Prolog"]

6. जाँचिए कि ऐरे रोमांचक है या नहीं

आपको सभी भाषाएँ पसंद हैं, लेकिन F# का स्थान आपके दिल में खास है। इसलिए भाषाओं का कोई ऐरे आपके लिए रोमांचक तब होता है, जब:

  • ऐरे का पहला एलिमेंट F# हो।
  • ऐरे का दूसरा एलिमेंट F# हो और ऐरे में दो या तीन भाषाएँ हों।

भाषाओं का ऐरे रोमांचक है या नहीं, यह जाँचने के लिए excitingList फंक्शन बनाइए:

excitingList ["Nim"; "F#"]
// => true
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
F# Exercism

Tracks on Tracks on Tracks शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और F# को 18 कॉन्सेप्ट148 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।