আমি ম্যাট্রিক্স সম্পর্কিত কয়েকটি চ্যালেঞ্জ লিখেছি এবং সবার জন্য সাধারণ বিষয় হ'ল আমি উদাহরণ এবং পরীক্ষার ক্ষেত্রে উভয় ক্ষেত্রেই ম্যাট্রিকগুলি উপস্থাপন করার সময় নীচের মত একটি ফর্ম্যাট ব্যবহার করি:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
এটি সম্ভবত অনেক ভাষায় একটি জটিল বিন্যাস।
চ্যালেঞ্জ:
একটি প্রোগ্রাম / ফাংশন লিখুন যা ইনপুট হিসাবে শীর্ষে দেওয়া ফর্মটিতে একটি ম্যাট্রিক্স নিতে পারে (এই পোস্ট থেকে সরাসরি অনুলিপি / আটকানো), এবং নীচে দেখানো তিনটি প্রচলিত ফর্ম্যাটের সমস্তটিতে একই ম্যাট্রিক্স আউটপুট ।
ইনপুট ফর্ম্যাট:
স্থানগুলিতে বিবিধ সংখ্যার দ্বারা পৃথক করা নম্বর এবং সারিগুলি উপস্থাপনের জন্য নিউলাইনগুলি (পরীক্ষার কেস দেখুন)।
- সংখ্যার মধ্যে স্পেসের সংখ্যাটি সামঞ্জস্য হওয়ার গ্যারান্টিযুক্ত নয়। তবে আপনি ধরে নিতে পারেন যে প্রতিটি কলামের শেষ অঙ্কটি প্রান্তিককরণ (যদি তা কোনও সাহায্য করে)।
- পূর্ণসংখ্যা এবং ভাসমান উভয়ই থাকতে পারে এবং এগুলি ইতিবাচক, নেতিবাচক বা শূন্য হতে পারে। একটি ম্যাট্রিক্স একই সময়ে পূর্ণসংখ্যার এবং ভাসমান থাকবে না ।
- আপনি ধরে নিতে পারেন যে নেতিবাচক ফ্লোটের জন্য বিয়োগ ও দশমিক পয়েন্ট সহ কোনও সংখ্যা 10 টি অক্ষরের বেশি নয়।
- আপনি ধরে নিতে পারেন যে প্রতিটি সারিতে এবং প্রতিটি কলামে একই সংখ্যক এন্ট্রি রয়েছে।
- কোনও খালি ইনপুট ম্যাট্রিক থাকবে না, তবে একক সংখ্যা বা ম্যাট্রিকেস কেবল একটি সারি বা কলাম সহ থাকতে পারে।
- আপনি এই ক্ষেত্রে পরীক্ষার ক্ষেত্রে প্রদর্শিত আউটপুট ফর্ম্যাটগুলির মধ্যে চয়ন করতে পারেন
আপনার প্রোগ্রাম / ফাংশনটিতে ইনপুটটি অবশ্যই হ্যান্ডেল করতে হবে যদি তা সরাসরি এই পোস্ট থেকে অনুলিপি করা হয় এবং দোভাষীর (এসটিডিআইএন বা ফাংশন আর্গুমেন্ট বা সমতুল্য কিছু হিসাবে) আটকানো হয়। আপনার পছন্দসই (বন্ধনী, উদ্ধৃতি চিহ্ন, বন্ধনী) সামনে এবং / অথবা ম্যাট্রিক্সের পরে আপনার থাকতে পারে তবে আপনাকে ম্যাট্রিক্সকে এমন অক্ষরের অনুক্রম হিসাবে বিবেচনা করতে হবে যা পরিবর্তন করা যায় না (এতে নতুন লাইনের অন্তর্ভুক্ত রয়েছে)।
স্পষ্ট করার জন্য: ধরে নিন আপনার ফাংশন / প্রোগ্রামটি কল করা হয়েছে f
এবং ম্যাট্রিক্সটি হ'ল:
1 -2
3 5
6 7
তারপরে আপনি ম্যাট্রিক্সকে এই জাতীয় ফাংশন আর্গুমেন্ট হিসাবে দিতে পারেন (এবং অন্যান্য অনেক বিকল্প)
f(1 -2
3 5
6 7)
f([1 -2
3 5
6 7])
f("""1 -2
3 5
6 7""")
যদি আপনার ভাষা, কোনওভাবেই অনুলিপি হিসাবে অনুলিপি / পেস্ট করা ম্যাট্রিক্স না নিতে পারে তবে আমি ভয় করি যে আপনাকে অন্য কোনও ভাষা বেছে নিতে হবে।
আউটপুট ফর্ম্যাট:
আপনাকে নিম্নলিখিত তিনটি ফর্ম্যাটে ম্যাট্রিক্স আউটপুট করা উচিত (অর্ডার কোনও ব্যাপার নয়):
[[16, 2, 3, 13], [5, 11, 10, 8], [9, 7, 6, 12], [4, 14, 15, 1]]
{{16, 2, 3, 13}, {5, 11, 10, 8}, {9, 7, 6, 12}, {4, 14, 15, 1}}
[16, 2, 3, 13; 5, 11, 10, 8; 9, 7, 6, 12; 4, 14, 15, 1]
- আপনি চাইলে তিনটি আউটপুট আলাদা করতে পারেন (যেমন একটি নিউলাইন)
- আপনাকে ইনপুট হিসাবে একই নির্ভুলতা ব্যবহার করে সংখ্যাগুলি আউটপুট করতে হবে (উদাহরণস্বরূপ, আপনাকে অবশ্যই দশমিকের সংখ্যা ছাঁটাইতে হবে না, আউটপুট পূর্ণসংখ্যাকেও ফ্লোট হিসাবে চিহ্নিত করতে হবে না)।
- স্পেসগুলি বাধ্যতামূলক
- আপনাকে অবশ্যই
-
নেতিবাচক সংখ্যার জন্য ব্যবহার করতে হবে , না_
বা অনুরূপ।
পরীক্ষার কেস:
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
----
[[16, 2, 3, 13], [5, 11, 10, 8], [9, 7, 6, 12], [4, 14, 15, 1]]
{{16, 2, 3, 13}, {5, 11, 10, 8}, {9, 7, 6, 12}, {4, 14, 15, 1}}
[16, 2, 3, 13; 5, 11, 10, 8; 9, 7, 6, 12; 4, 14, 15, 1]
0.14778 0.27114 0.24415
0.45997 0.12287 0.67470
0.28945 0.37928 0.51887
----
[[0.14778, 0.27114, 0.24415], [0.45997, 0.12287, 0.6747], [0.28945, 0.37928, 0.51887]]
{{0.14778, 0.27114, 0.24415}, {0.45997, 0.12287, 0.6747}, {0.28945, 0.37928, 0.51887}}
[0.14778, 0.27114, 0.24415; 0.45997, 0.12287, 0.6747; 0.28945, 0.37928, 0.51887]
-0.0398301 0.2403455 -0.2253368 0.3565870 0.0605803 0.0830780
-0.3254422 -0.1185191 -0.2989537 0.1647319 0.3621135 0.2018815
-0.0022281 -0.3362287 -0.3568447 0.4419063 0.3801872 -0.2847033
---
[[-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780], [-0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815], [-0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033],]
{{-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780}, {-0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815}, {-0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033},}
[-0.0398301, 0.2403455, -0.2253368, 0.3565870, 0.0605803, 0.0830780; -0.3254422, -0.1185191, -0.2989537, 0.1647319, 0.3621135, 0.2018815; -0.0022281, -0.3362287, -0.3568447, 0.4419063, 0.3801872, -0.2847033]
0 4 1 0
0 0 -6 0
0 1 4 -3
2 0 0 8
0 0 0 0
----
[[0, 4, 1, 0], [0, 0, -6, 0], [0, 1, 4, -3], [2, 0, 0, 8], [0, 0, 0, 0]]
{{0, 4, 1, 0}, {0, 0, -6, 0}, {0, 1, 4, -3}, {2, 0, 0, 8}, {0, 0, 0, 0}}
[0, 4, 1, 0; 0, 0, -6, 0; 0, 1, 4, -3; 2, 0, 0, 8; 0, 0, 0, 0]
1
----
[1] (or [[1]])
{1} (or {{1}})
[1] (or 1)
1 2
----
[1, 2] (or [[1, 2]])
{1, 2} (or {{1, 2}})
[1, 2]
4
5
----
[[4], [5]]
{{4}, {5}}
[4; 5]
আমি পুরোপুরি সচেতন আছি এই , কিন্তু এই প্রতিদ্বন্দ্বিতায়, কষ্টকর, I / O বিন্যাস পুরো বিন্দু। কিছু ভাষাতে আউটপুট ফর্ম্যাট করা সম্পর্কে চ্যালেঞ্জটি হ'ল, অন্য ইনপুট পড়ার সময় অন্য ভাষাগুলির মধ্যে সবচেয়ে শক্ত অংশ হবে।
যদি ইনপুটটি পড়া শক্ত হয় তবে নিরুৎসাহিত হবেন না, সেগুলি জমা দেওয়া সবচেয়ে মজার বিষয় হতে পারে। সংক্ষিপ্তটি অবশ্যই চিত্তাকর্ষক হিসাবে একই নয়। এবং সর্বদা হিসাবে, ব্যাখ্যা উত্সাহিত করা হয়!