ট্র্যাক
/
jq
jq
/
অনুশীলনী
/
ফুলের ক্ষেত
ফুলের ক্ষেত

ফুলের ক্ষেত

কঠিন

ভূমিকা

Flower Field হলো জনপ্রিয় গেম Minesweeper-এর একটি সহানুভূতিপূর্ণ পুনর্কল্পনা। গেমটির উদ্দেশ্য হলো সংখ্যাগত সংকেতের সাহায্যে বাগানের সব ফুল খুঁজে বের করা; এই সংকেতগুলো জানায় একটি ঘরের সঙ্গে সরাসরি (আনুভূমিক, উল্লম্ব বা কর্ণ বরাবর) কতগুলো ফুল সংলগ্ন আছে। ইতালি, জার্মানি, দক্ষিণ কোরিয়া, জাপান ও তাইওয়ানের Microsoft Windows-এর আঞ্চলিক সংস্করণগুলোতে Flower Field অন্তর্ভুক্ত হয়েছিল।

নির্দেশনা

আপনার কাজ হলো একটি সম্পূর্ণ ফ্লাওয়ার ফিল্ড বাগানের খালি ঘরগুলোতে ফুলের সংখ্যা যোগ করা। বাগানটি নিজেই একটি আয়তাকার বোর্ড, যা এমন ঘর দিয়ে গঠিত যেগুলো হয় খালি (' '), নয়তো একটি ফুল ('*')।

প্রতিটি খালি ঘরের জন্য তার সংলগ্ন (অনুভূমিক, উল্লম্ব ও তির্যকভাবে) ফুলের সংখ্যা গণনা করুন। খালি ঘরটির সংলগ্নে কোনো ফুল না থাকলে সেটি খালি রেখে দিন। অন্যথায় সেটিকে সংলগ্ন ফুলের সংখ্যা দিয়ে প্রতিস্থাপন করুন।

উদাহরণস্বরূপ, আপনি এইরকম একটি ৫ x ৪ বোর্ড পেতে পারেন (স্ক্রিনে দেখানোর জন্য এখানে খালি জায়গাগুলো '·' অক্ষর দিয়ে দেখানো হয়েছে):

·*·*·
··*··
··*··
·····

যেটিকে আপনার কোড এই রূপে রূপান্তর করবে:

1*3*1
13*31
·2*2·
·111·

jq-এর অতিরিক্ত কমান্ড-লাইন অপশন

টেস্টগুলোতে jq-এর জন্য অতিরিক্ত কিছু অপশন দেখতে পাবেন।

run jq -s -R -c -f flower-field.jq << 'END_INPUT'

এগুলো কী?

  • -s

    এটি "slurp" মোড। ইনপুটকে JSON অবজেক্টের একটি স্ট্রিম হিসেবে না ধরে, পুরো ইনপুট একটি অ্যারেতে slurp করা হয়।

    $ seq 5 | jq -c '.'
    1
    2
    3
    4
    5
    $ seq 5 | jq -s -c '.'
    [1,2,3,4,5]
    
  • -R

    -r অপশনটি আপনি হয়তো আগেই দেখেছেন, যেটি "raw" স্ট্রিং আউটপুট দেয় (কোট ছাড়া)। এটা তার উল্টো। ইনপুটের প্রতিটি লাইনকে একটি স্ট্রিং হিসেবে ধরা হয়।

    দুটি উদাহরণ:

    $ seq 5 | jq -R -c .
    "1"
    "2"
    "3"
    "4"
    "5"
    
    $ echo 42 | jq '. * 2'      # input is a JSON number
    84
    $ echo 42 | jq -R '. * 2'   # input is a JSON string
    "4242"
    

এই দুইটি অপশন একসাথে ব্যবহার করলে আপনি স্ট্রিংয়ের একটি অ্যারে পাবেন না: বরং পুরো ইনপুটটাই একটি একক স্ট্রিং হিসেবে পাবেন, লাইন-শেষের নিউলাইনগুলোসহ।

$ seq 5 | jq -s -R -c .
"1\n2\n3\n4\n5\n"

এটা সামলানোই এই অনুশীলনীর চ্যালেঞ্জের একটি অংশ।

GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
jq Exercism

ফুলের ক্ষেত শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, jq ট্র্যাকের 12টি কনসেপ্ট75টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।

ডিপ ডাইভ: ফুলের ক্ষেত!

আমরা দেখব নেস্টেড for লুপ, বাউন্ড চেকিং সহজ করতে min/max-এর চতুর ব্যবহার, ফাংশনাল পাইপলাইন আর দ্বিমাত্রিক ম্যাট্রিক্সের ব্যবহার।