israqshakil/assignment-4
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
Important Note:
তোমাকে কোডের সব লজিক এবং ভ্যারিয়েবল গুলো ফাংশনের ভেতরে লিখতে হবে। কোন ভ্যরিয়েবল তুমি ফাংশনের বাইরে অর্থাৎ গ্লোবালি ডিক্লেয়ার করবেনা।
ফাংশনের বাইরে যদি কোড লিখে থাকো যেমন ধরো ফাংশন কে কল করা বা কনসোল করা সেগুলো সাবমিট করার আগে অবশ্যই ডিলেট করে দিতে হবে বা কমেন্ট করে দিতে হবে।
প্রশ্নে যে ফাংশনের নাম দেয়া হয়েছে সেটা ই ব্যবহার করতে হবে। অন্য নাম ব্যবহার করা যাবেনা।
প্রতি টা প্রবলেম ভালো ভাবে পড়বে , লজিক খোজার চেষ্টা করবে, এবং এরপর কোড করে প্রবলেম টি সল্ভ করবে।
চ্যালেঞ্জ অংশে যে শুধুমাত্র যে অংশ টুকুর জন্য ভ্যালিডেশন করতে বলা হয়েছে শুধু মাত্র তত টুকু ইমপ্লিমেন্ট করলে ই হবে। তার থেকে বেশী করার প্রয়োজন নেই।
প্রতি টা প্রবলেম এ ই দেখবে যে ফাংশন থেকে কিছু return করতে হবে। function থেকে specific যা রিটার্ন করতে বলা হয়েছে তা ই রিটার্ন করবে। এর বাইরে নিজের মনের মতো করে কিছু রিটার্ন করবেনা। console ও করবেনা । যদি এমন টা করো তাহলে কোড ঠিক থাকলে ও তুমি মার্ক পাবেনা।
প্রশ্ন ভালো করে পড়বে। চ্যাটজিপিটি থেকে শুরু করে অন্য যেকোন এ আই টুল অথবা বন্ধুর হেল্প নেয়া যাবেনা। তুমি যদি এই কাজ টি করো এর মানে হলো নিজের পায়ে নিজে কুড়াল মারছো। আর আমাদের এ আই এক্সটেনশন যদি তোমার ফাংশন কে AI Generated হিসেবে ডিটেক্ট করে, তাহলে তুমি এসাইনমেন্ট এ জিরো পাবে।
Deadlineঃ
60 Marks Deadline Till 15 August 11.59 PM
50 Marks Deadline Till 17 August 11.59 PM
30 Marks Deadline - Any Time after 17 August 11.59 PM
What to Submit: শুধু মাত্র function গুলো কে কপি করে সাবমিট করে দিতে হবে।
সবগুলো function কে কপি করে একটি আলাদা ফাইলে নিয়ে যান।
যত console.log করা লাইন আছে। সব গুলো কে কেটে দিন / কমেন্ট করে দিন।
এবার পুরো ফাইল টি কে কপি করে submission box এ পেস্ট করুন।
নিচের এক্সাম্পল টি দেখুন।
❌❌Wrong Submission
✅✅ Perfect Submission
let a = 20; //❌ global variable
function sum(a, b) {
let sum = a + b;
return sum;
}
console.log(sum(10, 2)); // ❌ Console
function isNumber(num) {
if (typeof num == "number") {
return true;
} else {
return false;
}
}
isNumber("hello"); // ❌ function Call
function isHoliday(str) {
if (str.toLowerCase() == "friday") {
return true;
} else return false;
}
function sum(a, b) {
let sum = a + b;
return sum;
}
function isNumber(num) {
if (typeof num == "number") {
return true;
} else {
return false;
}
}
function isHoliday(str) {
if (str.toLowerCase() == "friday") {
return true;
} else return false;
}
Let’s Start The Journey of Problem Solving
😎
Problem-01 : Train TT's Fine Calculator
⚠️ Function Name Must be totalFine()
ট্রেনের একজন TT হিসেবে কাজ করছেন রবিন। প্রতিদিন অসংখ্য যাত্রী টিকিট হারিয়ে ফেলেন কিংবা কাটেন ই না। টিকিটবিহীন যাত্রীদের জরিমানা করতে গিয়ে প্রতিবার ক্যালকুলেশন করতে অনেক সময় লাগে। তাই TT রবিন চায়, এমন একটি ফাংশন যেখানে যাত্রীর ট্রেন ভাড়া দিলেই জরিমানার নির্ভুল হিসাব চলে আসবে।
তুমি যেহেতু প্রোগ্রামার , তাই তোমাকে রবিন সাহেবের জন্য totalFine নামে একটা function তৈরী করে দিতে হবে। যেটা fare কে ইনপুট হিসেবে নেবে। এবং fine ক্যালকুলেট করে return করবে।
🧮 জরিমানা নির্ধারণের নিয়ম:
মোট জরিমানা = টিকিটের মূল ভাড়া + (২০% সারচার্জ) + অতিরিক্ত ৩০ টাকা সার্ভিস চার্জ
📥 Input:
ফাংশনটি একটি পজিটিভ সংখ্যা (number) ইনপুট নেবে
🚀 Output:
Input এর ওপর ভিত্তি করে ফাংশনটি মোট জরিমানা হিসাব করে একটি সংখ্যা return করবে
Output দশমিক সংখ্যা হতে পারে।
Note: তোমাকে অবশ্যই output টা রিটার্ন করতে হবে। console.log করলে কোন মার্ক পাবেনা
🚩Challenge:
যদি ইনপুট টি number না হয় অথবা পজিটিভ সংখ্যা না হয় তাহলে "Invalid" স্ট্রিং রিটার্ন করবে।
💡Hints: যদি ইনপুট 200 হয়, তাহলে fine হবে: 200 + 200 × ( 20 / 100) + 30 = 270 Taka
SAMPLE INPUT
SAMPLE OUTPUT ( number / invalid )
200
270
0
Invalid
50
90
552
692.4
-35
Invalid
"65"
Invalid
"Gorib tai ticket katinai"
Invalid
নিচের কোড স্নিপেট টি কপি করো এবং requirement অনুযায়ী ফাংশন টি কমপ্লিট করো।
function totalFine( fare ) {
// You have to write your code here
}
Problem-02 : Clean & Capitalize Characters
⚠️ Function Name Must be onlyCharacter()
রাফি একজন উঠতি Ethical Hacker. 💻 সে প্রতিদিন নানা ধরণের এনক্রিপ্টেড তথ্য নিয়ে কাজ করে। সর্বশেষ এক মিশনে সে কিছু সিক্রেট বার্তা পায়, কিন্তু বার্তা গুলো তে মাঝখানে অনেক স্পেস, ছোট হাতের অক্ষর , বড় হাতের অক্ষর এবং নানা রকম গ্যাপ থাকে। যা পড়তে দুর্ভেদ্য লাগে।
রাফি চায়, সে যেন যেকোনো string ফরম্যাট করার জন্য একটি টুল বানাতে পারে, যা শুধুমাত্র ক্যারেক্টার রেখে বাকিটুকু বাদ দিবে এবং সব ক্যাপিটাল লেটারে রূপান্তর করবে।
তোমার কাজ হলো রাফির জন্য onlyCharacter() নামের একটি ফাংশন তৈরি করা, যা যেকোনো স্ট্রিং ইনপুট থেকে শুধুমাত্র character বের করে সেই character গুলোর বড় হাতের সংস্করণ রিটার্ন করবে।
📥 Input:
ফাংশনের ইনপুট হবে একটি স্ট্রিং (string)।
ইনপুট স্ট্রিং-এর মধ্যে অনেক স্পেস থাকতে পারে এবং character ছোট/বড় হাতের হতে পারে।
🚀 Output:
ফাংশনটি সব স্পেস বাদ দিয়ে, অবশিষ্ট সব character কে ক্যাপিটাল লেটারে রূপান্তর করে রিটার্ন করবে।
Note: তোমাকে অবশ্যই output টা রিটার্ন করতে হবে। console.log করলে কোন মার্ক পাবেনা
🚩Challenge: যদি ইনপুট টি string না হয় তাহলে "Invalid" স্ট্রিং রিটার্ন করবে।
SAMPLE INPUT ( string )
SAMPLE OUTPUT (string)
" h e llo wor ld"
HELLOWORLD
"Cy bar- At tac k "
CYBAR-ATTACK
" ha ck m e 1 @ru.c n "
HACKME1@RU.CN
"Serv er : : Do wn"
SERVER::DOWN
["hack", "me"]
Invalid
true
Invalid
নিচের কোড স্নিপেট টি কপি করো এবং ফাংশন টি কে উপরের রিকোয়ারমেন্ট অনুযায়ী কমপ্লিট করো।
function onlyCharacter( str ) {
// You have to write your code here
}
Problem-03 : FIFA Best Team Award
⚠️ Function Name Must be bestTeam()
ফুটবল খেলার মাঠে শুধু গোল নয়, ফাউল, হলুদ কার্ড, লাল কার্ডও খুব গুরুত্বপূর্ণ!
দুইটি দল খেলেছে—তারা কে কত ফাউল করেছে, কয়টা হলুদ কার্ড ও লাল কার্ড পেয়েছে তা দেখে বিচারক ঠিক করবে কে বেশি ফেয়ার প্লে করেছে। তোমার কাজ হচ্ছে একটি ফাংশন বানানো, যার নাম হবে bestTeam(). এই ফাংশনটি দুইটি দলের খেলার রিপোর্ট (object আকারে) ইনপুট হিসেবে নেবে আর রিটার্ন করবে সেই দলের নাম যে সবচেয়ে কম নিয়ম ভেঙেছে অর্থাৎ বেশি ফেয়ার ছিল।
👉 যেই দলের foul + redCard + yellowCard এর পরিমান কম → সেই দল বেশি ফেয়ার
📥 Input:
ফাংশনটি ২টা object ইনপুট নেবে। প্রতিটা object-এ নিচের ৪টি property থাকবে:
name: দলের নাম (string)
foul: কতবার ফাউল হয়েছে (number)
cardY: হলুদ কার্ড সংখ্যা (number)
cardR: লাল কার্ড সংখ্যা (number)
🚀 Output:
যেই দলের (foul + cardY + cardR ) কম → সে দলের name property এর ভ্যালু return করবে
দুই দলের (foul + cardY + cardR ) সমান হলে → return করবে "Tie"
Note: তোমাকে অবশ্যই output টা রিটার্ন করতে হবে। console.log করলে কোন মার্ক পাবেনা
🚩Challenge: যদি ইনপুট গুলো Object না হয় তাহলে "Invalid" স্ট্রিং রিটার্ন করবে।
SAMPLE INPUT
SAMPLE OUTPUT (string)
{ name: "Brazil", foul: 5, cardY: 1, cardR: 0 },
{ name: "Argentina", foul: 7, cardY: 0, cardR: 0 }
Brazil
{ name: "Germany", foul: 12, cardY: 0, cardR: 0 },
{ name: "Sweden", foul: 7, cardY: 4, cardR: 1 }
Tie
{ name: "Germany", foul: 10, cardY: 1, cardR: 1 },
{ name: "France", foul: 10, cardY: 2, cardR: 1 }
Germany
{ name: "Germany", foul: 10, cardY: 1, cardR: 1 },"France"
Invalid
নিচের কোড স্নিপেট টি কপি করো এবং ফাংশন টি কে উপরের রিকোয়ারমেন্ট অনুযায়ী কমপ্লিট করো।
function bestTeam( player1, player2 ) {
// You have to write your code here
}
Problem-04: Same Same But Different 😕
⚠️ Function Name Must be isSame()
তোমার কাজ হচ্ছে একটি ফাংশন তৈরি করা যার নাম হবে isSame()। এই ফাংশনটি দুটি অ্যারে ইনপুট হিসেবে নেবে, তারপর চেক করবে — এই দুইটি অ্যারে Same কিনা যদি ২ টা Array সেইম হয় তাহলে ফাংশন টি return করবে true । আর না হলে return করবে false ।
২ টা Array Same হবার শর্ত -
🚩Array ২ টির length সমান হতে হবে।
🚩Array ২ টির প্রতিটি index এর value exactly same হতে হবে।
📥 Input:
ফাংশন টি দুইটি Array ইনপুট হিসেবে নেবে।
Array এর ভেতর যেকোন ধরনের primitive type data থাকতে পারে।
🚀 Output:
Function টি একটা boolean value return করবে।
যদি দুইটি অ্যারে সেইম হয় তাহলে ফাংশন return করবে true । আর অন্যথায় return করবে false
Note: তোমাকে অবশ্যই output টা রিটার্ন করতে হবে। console.log করলে কোন মার্ক পাবেনা
🚩Challenge:
যদি ইনপুট দুটি Array না হয়, তাহলে ফাংশন return করবে:"Invalid"
SAMPLE INPUT
SAMPLE OUTPUT (boolean/string)
[1, 2, 3] , [1 , 2 , 3]
true
[34 , 5 ,7 ,9 ], [ 34 , 5 , 7 ]
false
[1, undefined , 3] , [1,null ,3]
false
[1 , 4 , 5], [1 , 4 , 5]
true
[1 , "4" , 4] ,[1 , 4 , 4]
false
[2 , 5 , 6] ,256
Invalid
{data: [2 , 5 , 6] } , [2 , 5 , 6]
Invalid
নিচের কোড স্নিপেট টি কপি করো এবং ফাংশন টি কে উপরের রিকোয়ারমেন্ট অনুযায়ী কমপ্লিট করো।
function isSame(arr1 , arr2 ) {
// You have to write your code here
}
Problem-05: Exam Result Report Generator
⚠️ Function Name Must be resultReport()
তোমাকে resultReport() নামে একটা ফাংশন বানাতে হবে , যেটা একটি নাম্বারের Array ইনপুট হিসেবে নেবে (যেখানে একজন student এর মার্কসগুলো থাকবে) এবং রিটার্ন করবে একটি object, যেখানে থাকবে ৩ টি প্রোপার্টি —
finalScore : পরীক্ষার গড় নম্বর | pass: মোট কয়টি বিষয় পাস করেছে | fail: কয়টি বিষয় ফেল করেছে
মনে রাখতে হবেঃ
👉 প্রতিটি সাবজেক্টে পাশ মার্ক হলো 40
👉 finalScore কখনো দশমিক হবেনা। এটাকে rounded করে পুর্ন সংখ্যায় রুপান্তর করতে হবে।
📥 Input:
Function টি একটি array ইনপুট নেবে, যেটিতে থাকবে প্রতিটি পরীক্ষায় প্রাপ্ত number
🚀 Output:
Output হবে একটি object , যার ভেতরে 3 টা প্রোপার্টি থাকবে।
finalScore : শিক্ষার্থীর গড় নম্বর ( rounded )
pass: মোট কয়টি বিষয় পাস করেছে
fail: আর কয়টি বিষয় ফেল করেছে
Note: তোমাকে অবশ্যই output টা রিটার্ন করতে হবে। console.log করলে কোন মার্ক পাবেনা
🚩Challenge:
ইনপুট যদি Array না হয় তাহলে "Invalid" return করবে।
SAMPLE INPUT
SAMPLE OUTPUT ( object / string )
[]
{ finalScore: 0 , pass: 0, fail: 0 }
//explore why you got NaN 😉
[98, 87, 67, 91, 92, 33, 87]
{ finalScore: 79, pass: 6, fail: 1 }
[99, 87, 67, 12 ,87]
{ finalScore: 70, pass: 4, fail: 1 }
[99]
{ finalScore: 99, pass: 1, fail: 0 }
100
Invalid
নিচের কোড স্নিপেট টি কপি করো এবং ফাংশন টি কে উপরের রিকোয়ারমেন্ট অনুযায়ী কমপ্লিট করো।
function resultReport( marks ) {
// You have to write your code here
}