আজ আপনি রুবি ট্রান্সপোজ পদ্ধতি ব্যবহার করে রুবিতে গ্রিডের সাথে কীভাবে মোকাবিলা করবেন তা শিখতে যাচ্ছেন।
কল্পনা করুন যে আপনার একটি নিখুঁত গ্রিড আছে, আসুন একটি 3×3 বর্গক্ষেত্র বলি, একটি বহুমাত্রিক বিন্যাসের আকারে৷
এবং আপনি সারিগুলি নিতে চান এবং সেগুলিকে কলামে রূপান্তর করতে চান৷ .
কেন আপনি এটা করতে চান?
একটি ব্যবহার হল ক্লাসিক গেমের জন্য:টিক-ট্যাক-টো।
আপনি একটি গ্রিড হিসাবে আপনার বোর্ড সংরক্ষণ করুন. তারপর একটি বিজয়ী চাল খুঁজে পেতে আপনাকে সারি চেক করতে হবে , কলাম &কর্ণ .
সমস্যা হল যে আপনি যদি আপনার গ্রিড একটি অ্যারে হিসাবে সংরক্ষণ করেন তবে আপনি কেবল সারিগুলিতে সরাসরি অ্যাক্সেস পাবেন৷
কলাম দ্য হার্ড ওয়ে
"সরাসরি অ্যাক্সেস" দ্বারা আমি বলতে চাচ্ছি যে আপনি আপনার অ্যারের উপর যেতে পারেন (each
সহ , map
, ইত্যাদি) প্রয়োজনের চেয়ে বেশি অ্যারে ইন্ডেক্সিং ব্যবহার না করে।
আসুন একটি উদাহরণ দেখি!
এখানে একটি গ্রিড আছে :
grid = [ [1,2,3], [4,5,6], [7,8,9] ]
আমি আপনার জন্য একটি ভিজ্যুয়াল তৈরি করেছি :
আপনি সূচী উল্লেখ করে কলাম পেতে পারেন।
উদাহরণস্বরূপ, প্রথম কলামটি হবে :
[grid[0][0], grid[1][0], grid[2][0]] # [1, 4, 7]
কিন্তু প্রথম সারিটি শুধু এই :
grid[0] # [1, 2, 3]
কিভাবে আমরা সারি দিয়ে কাজ করার মতো কলামের সাথে কাজ করা সহজ করতে পারি?
কলাম দ্য ইজি ওয়ে
এটি করার সহজ উপায় হল অ্যারে#ট্রান্সপোজ পদ্ধতি।
উদাহরণ :
columns = grid.transpose
হ্যাঁ, আপনাকে এতটুকুই করতে হবে!
এখন আপনি এই মত প্রথম কলাম পেতে পারেন:
columns[0] # [1, 4, 7]
আপনি দেখতে পাচ্ছেন যে অনেক পদ্ধতি জেনে আপনার অনেক কাজ বাঁচাতে পারে 🙂
টিক-ট্যাক-টো
আমি পুরো বিষয়টি ব্যাখ্যা করতে যাচ্ছি না। আমি আপনাকে দেখাতে চাই কিভাবে এই পদ্ধতিটি একটি বাস্তব প্রকল্পে প্রয়োগ করতে পারে৷
৷টিক-ট্যাক-টো গেম জিততে আপনাকে একটি সারি, একটি কলাম বা একটি তির্যক পূরণ করতে হবে৷
সারি চেক করার জন্য কোড এখানে আছে :
def check_rows @board.each { |row| return row.first if all_equal?(row) } end
এবং এখানে কলামের কোড আছে :
def check_columns @board.transpose.each { |row| return row.first if all_equal?(row) } end
লক্ষ্য করুন কিভাবে একমাত্র পার্থক্য হল transpose
পদ্ধতি!
এখানে all_equal?
আছে পদ্ধতি:
def all_equal?(row) return if row.first == nil row.each_cons(2).all? { |x,y| x == y } end
আপনি গণনাযোগ্য পদ্ধতিতে এই পোস্টটি পড়ে প্রতিটি_কন পদ্ধতি সম্পর্কে আরও জানতে পারেন।
সারাংশ
আপনি ট্রান্সপোজ পদ্ধতি সম্পর্কে শিখেছেন।
একটি নিখুঁত গ্রিড দেওয়া, ট্রান্সপোজ আপনাকে সহজে অ্যাক্সেসের জন্য সারিগুলিকে কলামে রূপান্তর করতে দেয়৷
আপনি যদি এই পোস্টটি উপভোগ করেন তবে আপনি আমার বই রুবি ডিপ ডাইভের একটি অনুলিপি কেনার কথা বিবেচনা করতে পারেন৷
৷