যোগফল শূন্য – প্রোগ্রামিং ইন্টারভিউ সমস্যা ৬

সমস্যাঃ একটি পূর্ণসংখ্যার অ্যারেতে তিনটি করে সংখ্যা নিলে কতগুলো পৃথক ত্রয়ী পাওয়া যায়, যাদের যোগফল শূন্য (0) হবে?

যেমন, A = [-1, 0, 1, 2, -1, -4], দেওয়া থাকলে, সমাধান হচ্ছে, (-1, 0, 1) ও (-1, -1, 2). প্রতিটি ত্রয়ীর সংখ্যাগুলো ছোট থেকে বড় ক্রমে লিখতে হবে, মানে -1, 2, -1 লিখা যাবে না, বরং -1, -1, 2 লিখতে হবে।

সমাধানঃ সমস্যাটি খুব সহজেই তিনটি নেস্টেড লুপ ব্যবহার করে সমাধান করা যায়, সেক্ষেত্রে সমাধানের কমপ্লেক্সিট হয় O(n^3). ইন্টারভিউতে এই সমস্যা দিলে প্রথমেই এই কোড লেখা যাব না, বরং ইন্টারভিউয়ারকে জিজ্ঞাসা করতে হবে এবং আমার দৃঢ় বিশ্বাস, ইন্টারভিউয়ার এই সমাধানের কোড লিখে সময় নষ্ট করতে উৎসাহিত করবেন না, বরং কমপ্লেক্সিটি আরো কমাতে বলবেন।

আমরা যদি অ্যারেটি শুরুতেই সর্ট করে নিই, তাহলে সবচেয়ে ভেতরের লুপের বদলে বাইনারি সার্চ ব্যবহার করা যায়, এবং সেক্ষেত্রে কমপ্লেক্সিটি হয়, O(n^2 log n), যা O(n^3)-এর চেয়ে ভালো। কিন্তু সমস্যাটি O(n^2) কমপ্লেক্সিটিতেই সমাধান করা সম্ভব। আমি প্রথমেই বলব, পাঠককে একটু নিজে চেষ্টা করার জন্য। নিজে চেষ্টা করে নিচের যেকোনো একটি লিঙ্কে সমাধান করে যাচাই করা যাবে –
https://www.interviewbit.com/problems/3-sum-zero/
https://leetcode.com/problems/3sum/description/

আমি একটি নমুনা ইনপুট ও আউটপুট দিয়ে দিচ্ছি –

ইনপুট – A = [ 1, -4, 0, 0, 5, -5, 1, 0, -2, 4, -4, 1, -1, -4, 3, 4, -1, -1, -3]

আউটপুট – [[-5, 0, 5], [-5, 1, 4], [-4, -1, 5], [-4, 0, 4], [-4, 1, 3], [-3, -2, 5], [-3, -1, 4], [-3, 0, 3], [-2, -1, 3], [-2, 1, 1], [-1, 0, 1], [0, 0, 0]]

সমস্যাটি আমি আজকে সন্ধ্যায় সমাধান করেছি (আমি পাইথন ব্যবহার করেছি), কিন্তু পুরো সমাধান লিখে দিয়ে পাঠককে প্রোগ্রামিংয়ের আনন্দ থেকে বঞ্চিত করতে চাইছি না।

উল্লেখ্য যে, এই প্রশ্নটি গুগল ও ফেসবুকের ইন্টারভিউতে ইতিপূর্বে জিজ্ঞাসা করা হয়েছে।

ফেসবুক ম্যাসেঞ্জার

স্মার্টফোনের জন্য ফেসবুক মেসেঞ্জারের স্বতন্ত্র ওয়েব অ্যাপ্লিকেশন চালু করেছে ফেসবুক। তাই বলে ভাববেন না যে ফেসবুক বন্ধুদের সাথে চ্যাট করা বন্ধ করে দিয়েছে। ফেসবুক কখনোই মেসেঞ্জারকে ফেসবুক থেকে বাদ দিবে না। বরং আজ থেকে messenger.com দিয়ে মেসেঞ্জারের জন্য নতুন ওয়েব ব্রাউজার ভার্সন চালু করেছে, যেখানে আপনি বন্ধুদের সাথে শুধুমাত্র চ্যাট করতে পারবেন। আপনি যদি নিউজ ফিড আপডেট বা বন্ধুদের প্রোফাইল দেখতে চান সেক্ষেত্রে আপনাকে ফেসবুকের মূল ওয়েবসাইটে যেতে হবে । এই ফেসবুক মেসেঞ্জারের একটাই উদ্দেশ্য সেটা হচ্ছে তাৎক্ষণিক বার্তা আদান-প্রদান (ম্যাসেজিং)। কেবল চালু হওয়া এই ওয়েব অ্যাপ্লিকেশনটি মোবাইল এবং ডেক্সটপে ব্যবহার করতে পারবেন। তবে ডেস্কটপে কিছু সীমাবদ্ধতা আছে। এখানে আপনি ছবি, স্টিকার, সিগনেচার ইত্যাদি পাঠাতে পারলেও এখনো ডেস্কটপে কোনো ভয়েস ম্যাসেজ রেকর্ড বা পাঠানোর সুবিধা যোগ করা হয়নি। একটি মেন্যু সেটিংস রয়েছে যেটি দিয়ে আপনি সাউন্ড ইফেক্ট বন্ধ বা চালু করতে পারবেন। তবে আপনি যদি কাউকে ব্লক করতে চান বা গোপনীয়তা পরিবর্তন করতে চান সেক্ষেত্রে আপনাকে ফেসবুকের প্রধান ওয়েবসাইটে যেতে হবে। যদি আপনি শুধু মাত্র চ্যাট করতে চান তবে এটি আপনার জন্য একটি চমৎকার অ্যাপ।

লেখকঃ ইমরান হোসেন।

ফেসবুক দিয়ে অর্থ আদান-প্রদান

বিগত কয়েক বছর ধরেই শোনা যাচ্ছিল যে ফেসবুক তাদের ওয়েবসাইটের মাধ্যমে অর্থ আদান প্রদানের ব্যবস্থা শুরু করবে। আর গত বছরের অক্টোবরে যখন একটি কোড ফাঁস হয় এই বিষয়ে তখন প্রায় সকলেই নিশ্চিত হয়ে গিয়েছিল যে দ্রুতই এই সুবিধা হয়তোবা চালু হবে। আর আজ ফেসবুক পুরোপুরি ভাবে এই সুবিধা সকল ইউএস নাগরিকের জন্যে চালু করল।

ফেসবুক আজ তাদের অফিশিয়াল ব্লগে এই বিষয়ে একটি খবর প্রকাশ করে। তাদের দেয়া তথ্যমতে, খুব দ্রুতই সেই সুবিধাটি অ্যান্ড্রয়েড, আইওএস এবং ডেস্কটপে চালু করা হবে। আর ফেসবুক এক্ষেত্রে সর্বোচ্চ নিরাপত্তা নিশ্চিত করে। অবশ্য, ফেসবুক ২০০৭ সাল থেকে নানা গেম এবং বিজ্ঞাপন দাতাদের জন্যে ট্র্যান্স্যাকশন নিয়ন্ত্রন করে থাকে আর বর্তমানে তা প্রতিদিন ১০ লক্ষ এর অধিক হয়। সুতরাং মেসেঞ্জারের মাধ্যমে এই নতুন সুবিধায় নিরাপত্তা নিশ্চিত করা তাদের জন্যে খুব একটা সমস্যা হবে না।

নিরাপত্তার বিষয়ে ফেসবুক তাদের ব্লগে বলেছে, “অর্থ লেনদেনের ক্ষেত্রে ফেসবুক সবসময় নিরাপত্তাকে সবচেয়ে বেশি গুরুত্ত দিয়েছে। আমরা এমন এক মাধ্যম ব্যবহার করি যেখানে সম্পূর্ণ যোগাযোগ ব্যবস্থাকে এনক্রিপ্ট করা হয় এবং এটি ফেসবুক, ব্যবহারকারীর কার্ডের তথ্য সকল ক্ষেত্রেই। আমরা এক্ষেত্রে সর্বাধুনিক হার্ডওয়্যার এবং সফটওয়্যার প্রযুক্তি ব্যবহার করি। একটি এন্টি ফ্রড বিশেষজ্ঞ দল সর্বক্ষণ সকল লেনদেন পর্যবেক্ষণ করে ব্যবহারকারীর অ্যাকাউন্ট নিরাপদ রাখতে।”

ফেসবুকে এই সুবিধা সম্পূর্ণ বিনামূল্যে ব্যবহার করা যাবে। এটি বর্তমানে ফেসবুকের ইউএস এর ব্যবহারকারী পাবে। আর এক্ষেত্রে ব্যবহারকারীর ইউএস ব্যাংক অ্যাকাউন্টের সাথে সংযুক্ত ডেবিট কার্ড থাকতে হবে। ক্রেডিট কার্ডে এ এই সুবিধা রাখা হয়নি নিরাপত্তা এবং অতিরিক্ত ফি এড়ানোর জন্যে।

অর্থ পাঠানোর ক্ষেত্রে যা করতে হবে-

১। যাকে পাঠাতে চান তার সাথে মেসেঞ্জারে কনভারসেশনটি চালু করুন
২। ‘$’ ডলার এর এই আইকনটিতে ট্যাপ করুন এবং কত অর্থ পাঠাতে চান তা লিখুন
৩। পে নামক অপশনটিতে ট্যাপ করুন এবং ডেবিট কার্ডের তথ্য দিন

অর্থ গ্রহন করতে যা করতে হবে-

১। কনভারসেশনটি খুলুন
২। ডেবিট কার্ডের তথ্য দিয়ে অর্থ গ্রহন করুন

যদিও অর্থ পাঠানোর সাথে সাথে গ্রাহক তা পাবে তবে তা ব্যাংকে দেখাতে ২-৩ দিন অতিরিক্ত সময় লাগতে পারে। ব্যবহারকারী চাইলে ডেবিট কার্ডের তথ্য দিয়ে সুরক্ষার জন্যে একটি পিন নির্বাচন করতে পারবে। এছাড়া আইওএস ব্যবহারকারীরা টাচ আইডি সুবিধা পাবে। অতিরিক্ত হিসেবে আরেকটি নিরাপত্তা পিনও দেয়া যাবে।

ফেসবুক এ সুবিধা মেসেঞ্জারের মাধ্যমে চালু করার ফলে মুলত মেসেঞ্জারের গ্রহণযোগ্যতা সকলের কাছে আরও শক্তিশালী করে তুলেছে। গত বছর চ্যাট করার জন্যে আরেকটি অতিরিক্ত অ্যাপ হিসেবে মেসেঞ্জার ব্যবহার করতে সকল ব্যবহারকারীকে বাধ্য করলে নানা সমালোচনার মুখে পরে ফেসবুক। এ নতুন সুবিধা ফলে এটি থেকে কিছুটা উঠে আসতে পারবে ফেসবুক। এছাড়া যদি ফেসবুক ভবিষ্যৎ এ ক্রয় বিক্রয় করার সুবিধা চালু করে তবে আরেকটি নতুন ডাটা পাবে তারা ব্যবহারকারীদের লক্ষ্য করে বিজ্ঞাপন ব্যবস্থা আরও উন্নত করতে।

তবে বর্তমানে ফেসবুক তাদের ব্যবহারকারিদের এ মাধ্যমে ব্যবহারের সময় বৃদ্ধির দিকেই বেশি মনোযোগ দিচ্ছে। ইতোমধ্যে ফেসবুকে গড়ে ২১ মিনিট করে দিনে সময় কাটায় একজন ইউএস ব্যবহারকারী। যা কিনা একজন ইন্টারনেট ব্যবহারকারীর মোট ব্যবহারের ৬%। হিসেবের দিক থেকে ফেসবুক বর্তমানে গুগলের পিছনে দ্বিতীয় অবস্থানে আছে এ দিক দিয়ে। এখন দেখা যাক ফেসবুকের এই নতুন সুবিধা ব্যবহারকারীর সময় ব্যয়ে কী পরিমাণে পরিবর্তন আনতে পারে।

লেখকঃ এহসানুল হক।

উন্নয়নশীল দেশের জন্যে ফেসবুকের অ্যান্ড্রয়েড অ্যাপে পরিবর্তন

facebook-645x250

ফেসবুক প্রায় দু বছর আগে ঘোষণা করেছিল যে তারা তাদের সোশ্যাল মিডিয়া প্ল্যাটফর্মকে মোবাইল কেন্দ্রিক হিসেবে গড়ে তুলবে। এ উদ্দেশ্যে তারা অনেক কাজই করেছে তবে এবার তারা নজর দিয়েছে স্বল্পোন্নত এবং উন্নয়নশীল দেশগুলোতে যেখানে কিনা ইন্টারনেট ডাটার খরচ প্রচুর। আর তাই তারা তাদের ফেসবুক অ্যাপটি নতুন করে গঠন করেছে।

ফেসবুক সম্প্রতি এ বছরের শুরু দিকে আফ্রিকায় কিছু গবেষণা চালিয়েছে। তারা লক্ষ্য করেছে কিভাবে করে তাদের ফেসবুক অ্যাপ আফ্রিকায় ব্যবহার করা হয়ে থাকে। এই গবেষণার কারন এখানে অধিকাংশ মানুষই নিম্নমানের অ্যান্ড্রয়েড স্মার্টফোন ব্যবহার করে থাকে এবং মোবাইল নেটওয়ার্ক সাধারণ মানের। তাই এই অঞ্চলের মানুষরা ফেসবুক কিভাবে ব্যবহার করে সে গবেষণা থেকে কিভাবে করে তাদের মধ্যে ফেসবুক ব্যবহার কিভাবে করে বাড়ানো যায় তাও উঠে আসবে। আর এই গবেষণার ফলাফল হল নতুন অ্যান্ড্রয়েড আপডেট যা কিনা ফেসবুকের দাবিমতে নানা ক্ষেত্রে কার্যক্ষমতা বৃদ্ধি করবে। এর মধ্যে যে সকল বিষয়গুলো আছে তা হল-

  • অ্যাপটি চালু হতে ৫০ শতাংশ কম সময় নিবে
  • অ্যাপটি ৫০ শতাংশ কমে ইন্টারনেট ডাটা খরচ করবে
  • ফেসবুকে অ্যাপের ইমেজ লোড ব্যর্থতার পরিমাণ ৯০ শতাংশ হ্রাস করবে
  • অ্যাপটির আকার ৬৫ শতাংশ পর্যন্ত হ্রাস করা হয়েছে

এই সকল ক্ষেত্রে উন্নত করতে ফেসবুককে নানা ধরনের সমাধানের আশ্রয় নিতে হয়েছে। যার মধ্যে আছে গুগলের নতুন ইমেজ ফরম্যাট ওয়েবপি এর ব্যবহার যা কিনা ইতোমধ্যে গুগল ক্রোম এবং অপেরা ম্যাক্স ব্রাউজারে ব্যবহার করা হয়। এই ইমেজ ফরম্যাট ব্যবহারের ফলে ফেসবুকে ইমেজ ক্ষেত্রে ডাটা বাচবে প্রায় ২৫-৩৫ শতাংশ জেপিজি এর তুলনায় এবং পিএনজি এর তুলনায় ৮০ শতাংশ। আর এর সবকিছুই সম্ভব হবে ছবির মানের উপর কোন প্রকার খারাপ প্রভাব না ফেলে।

এছাড়া বিভিন্ন স্ক্রিন রেজুলেশনের, প্রসেসর এবং র‍্যামের ডিভাইসের জন্যে বিভিন্ন ধরনের এপিকে ফাইল গুগল প্লে স্টোরে সংযোজন করেছে ফেসবুক। ফলে ব্যবহারকারী যেই ধরনের ফোনই ব্যবহার করুক না কেন সে পাবে সর্বশেষ আপডেটেড ফেসবুক সংস্করণ এবং তাঁর সকল সুবিধা। এছাড়া অ্যাপটি কাজ করবে দ্রুত, লোড হতে সময় নিবে কম আর এর আকার হবে ছোট।

এছাড়া ইমেজ লোডিং ব্যর্থতার মান কমাতে তারা নতুন নেটওয়ার্ক কনসেপ্ট তাদের মোবাইল অ্যাপে ব্যবহার করা শুরু করেছে। যা হল OkHttp।

ফেসবুকের ইঞ্জিনিয়ারিং ম্যানেজার এলেক্স সৌরভ এ বিষয়ে বলেন, “আমাদের উদ্দেশ্য শুধুমাত্র উচ্চমানের স্মার্টফোন এবং উন্নত এলটিই নেটওয়ার্কে ভাল অভিজ্ঞতা দেয়া নয়। আমরা চাই ফেসবুক সকলের জন্যে কাজ করুক- তা যেই অঞ্চল হোক না কেন, নেটওয়ার্ক এর অবস্থা যাই হোক না কেন এবং যেই মোবাইল ফোনই হোক না কেন।”

সৌরভ তাদের এই গবেষণা করতে গিয়ে নানা অভিজ্ঞতার কথাও বর্ণনা করে। যেমন তারা তাদের মাসিক ইন্টারনেট ডাটা ফেসবুক অ্যাপের মাধ্যমে মাত্র ৪০ মিনিটেই খরচ করে ফেলে। এছাড়া আছে মেমরি সমস্যা, লোড হতে অতিরিক্ত সময় লাগা, অ্যাপ ক্র্যাশ করা এবং অন্যান্য সমস্যা যা কিনা স্বল্পোন্নত দেশে চিরচেনা কিন্তু তাদেরকে একটি তিক্ত অভিজ্ঞতা প্রদান করেছে।

ফেসবুকের এই কার্যক্রমকে অনেকেই সাধুবাদ জানিয়েছে। কারন স্বল্পোন্নত অথবা উন্নয়নশীল দেশগুলোতে ফেসবুকের নজর দেয়া উচিত। তবে ফেসবুক যেখানে পশ্চিমা বাজারে প্রায় পূর্ণতা পেয়ে গেছে সেক্ষেত্রে ফেসবুক যে এ সকল দেশে আগে কিংবা পরে নজর দিতে বাধ্য তা বোধগম্য।