Skip to content

Commit

Permalink
Merge branch 'lightoj-dev:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
im-nayeem authored Jul 26, 2023
2 parents 7c917c7 + 02bcb01 commit faf95ff
Show file tree
Hide file tree
Showing 43 changed files with 3,298 additions and 3 deletions.
33 changes: 33 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<!--
Point to the github issue number this pull request closes.
Example:
Closes #123.
-->

Closes **TODO**.

<!--
Include the LightOJ Problem url the changes are about.
Example:
Problem link: https://lightoj.com/problem/1000.
-->

Problem link: **TODO**.

### Changes introduced in this PR

<!--
Write a summary of the changes that are included in this PR.
Examples:
- This PR adds an English tutorial for problem 1000.
- This PR fixes source code of the previously written
tutorial of 1000.
- This PR adds a new solution approach.
- ...
-->

**TODO**

28 changes: 28 additions & 0 deletions .github/workflows/inactive_issue.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Close inactive issues

on:
# Run this workflow weekly on Friday at 00:00 UTC
# [cron](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html#tag_20_25_07)
schedule:
- cron: "0 0 * * 5"

jobs:
close-inactive-issues:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
# https://github.com/marketplace/actions/close-stale-issues
- uses: actions/stale@v5
with:
days-before-issue-stale: 30
days-before-issue-close: 10
stale-issue-label: "inactive"
stale-issue-message: "This issue was labeled `inactive` because it has been open for 30 days with no activity."
close-issue-message: "This issue was closed because there has been no activity for 10 days since being labeled as `inactive`."
# do not mark PRs as stale/inactive
days-before-pr-stale: -1
# do not close PRs
days-before-pr-close: -1

103 changes: 103 additions & 0 deletions 1012/bn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# ক্যাটাগরি : ডি এফ এস

### প্রশ্নে কি জিজ্ঞেস করেছে ?

কাহিনীর অর্থে : একজন রাজা তার ছেলেকে রাজ্য ছাড়তে বলেন । পুত্র উনার কথা মান্য করে রাজ্য ছাড়ে । পরবর্তীতে রাজকুমার এমন একটি জায়গায় যান যেখানে প্রতিটি অঞ্চল হয় পানিতে পূর্ণ
অথবা জমিন । রাজকুমার জানতে চান উনার জায়গা হতে কতগুলা জমিন এ উনি যেতে পারবেন

গাণিতিক অর্থে : একটি nxm গ্রিড দেয়া থাকবে । একটি পজিশন '@' দেয়া থাকবে যে জায়গা থেকে শুরু করে কয়টি সেল এ যেতে পারবো ? একটা সেল থেকে অন্য সেল এ যাওয়া যাবে যদি সেল টি তে '.' থাকে | আমরা কোন সেল এ '#' থাকলে যেতে পারবো না

### যা যা শিখা উচিত এইটা করার আগে :
[ডি এফ এস ](http://www.shafaetsplanet.com/?p=973 ) (এটি বি এফ এস দিয়ে ও করা যাবে )

## সমাধান

আমরা প্রথমে একটি nxm ক্যারেক্টার অ্যারে তে আমাদের পুরো গ্রিড স্টোর করবো
নিচের উদাহরণ এর মত একটি 2D অ্যারে তে আমরা ক্যারেক্টার গুলা নিব

![alt text](https://user-images.githubusercontent.com/72943111/202870913-02f03555-4222-4eed-a889-b6aee8117c38.png)


প্রতিটি সেল সারি x এবং কলাম y নির্দেশ করে । সমস্যাটি হিসাবে একটি ঘর থেকে তার সংলগ্ন বাম, ডান, উপরে এবং নীচের ঘরে যেতে পারি। তাই একটি ঘর থেকে তার সংলগ্ন ঘরে যেতে আমাদের নিম্ন বর্ণিত কাজ করতে হবে:

```
Left - (x-1,y)
Right - (x+1,y)
Up - (x,y-1)
Down - (x,y+1)
```

প্রতিবার ম্যানুয়ালি এটি করার পরিবর্তে আমরা ডিরেকশনাল অ্যারে ব্যবহার করতে পারি এবং লুপ এর সাহায্যে তা ট্রাভেরস করতে পারি

```
int dx[]={+1,-1,+0,-0}
int dy[]={+0,-0,+1,-1}
```

এখন প্রারম্ভিক বিন্দু @ থেকে, আমরা প্রতিটি সংলগ্ন কোষে যাই এবং এটি একটি বৈধ সেল কিনা তা পরীক্ষা করি। আমাদের মনে রাখতে হবে যে আমরা গ্রিড এর বাইরে , ওয়াটার সেল # এবং যে কোষগুলি আগে পরিদর্শন করেছি ঐগুলা তে যেতে পারবো না । এটি আমরা চেক করার জন্য একটি ফাংশন লিখতে পারি।
```
bool valid(int x,int y)
{
if(x>=0 && x<h && y>=0 && y<w && str[x][y]!='#' && !vis[x][y]) return true;
return false;
}
```

আমরা কতগুলি কোষ পরিদর্শন করতে পারি তা ট্র্যাক করার জন্য আমরা একটি কাউন্টার রাখতে হবে

### কিছু সতর্কতা
প্রতি কেস এর পর vis এবং cnt ক্লিয়ার করতে হবে

## সম্পূর্ণ কোড
```
#include<bits/stdc++.h>
using namespace std;
char A[21][21];
int cnt=0,vis[21][21],n,m;
void dfs(int x,int y)
{
if(x==n || y==m ||x==-1 || y==-1)
return;
if(vis[x][y]==1)
return ;
if(A[x][y]=='#')
return ;
cnt++;
vis[x][y]=1;
dfs(x+1,y);
dfs(x,y+1);
dfs(x-1,y);
dfs(x,y-1);
}
int main()
{
int t,tes=1;
cin>>t;
while(t--)
{
int x,y;
cin>>m>>n;
string s;
for(int i=0; i<n; i++)
{
cin>>s;
for(int j=0; j<s.size(); j++)
{
A[i][j]=s[j];
if(A[i][j]=='@')
{
x=i;
y=j;
}
}
}
dfs(x,y);
cout<<"Case "<<tes<<": "<<cnt<<endl;
cnt=0;
memset(vis,0,sizeof(vis));
tes++;
}
}
```
51 changes: 51 additions & 0 deletions 1022/bn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Circle in Square LOJ 1022

### প্রশ্নে কি জিজ্ঞেস করেছে ?

প্রশ্নে একটি বর্গ দেয়া থাকবে এবং এর ভিতরে একটি বৃত্ত এমন ভাবে রাখা হবে যেন বৃত্ত টি বর্গের চার বাহুকে স্পর্শ করে । আমাদের কে বৃত্ত দ্বারা আবৃত্ত নয় কিন্তু বর্গের ভিতরে এরকম এলাকার
ক্ষেত্রফল বের করতে হবে

### যা যা শিখা উচিত এইটা করার আগে :
+ [বৃত্তের ক্ষেত্রফল](https://www.khanacademy.org/math/cc-seventh-grade-math/cc-7th-geometry/cc-7th-area-circumference/v/area-of-a-circle )
+ [বর্গের ক্ষেত্রফল](https://www.khanacademy.org/math/geometry-home/geometry-area-perimeter/geometry-perimeter/v/perimeter-and-area-basics)

## সমাধান

### বৃত্তের ক্ষেত্রফল কে আমরা সবুজ অঞ্চল দিয়ে দেখালাম
![alt text](https://user-images.githubusercontent.com/72943111/204069997-194fa2dc-d3b4-48ae-8444-7ac5b62d0e58.png)

### বর্গের ক্ষেত্রফল কে আমরা লাল অঞ্চল দিয়ে দেখালাম
![alt text](https://user-images.githubusercontent.com/72943111/204070016-f4d87f3c-230c-43ed-bbcb-2e02329492fd.png)

### বৃত্ত কে বর্গের উপরে রাখলে দৃশ্যমান লাল অঞ্চলের ক্ষেত্রফল বের করতে হবে
![alt text](https://user-images.githubusercontent.com/72943111/204070010-bfcaab02-e089-4357-85cf-edeba2d2091a.png)

* বর্গের ক্ষেত্রফল বের করি (ধরি a)
* বৃত্তের ক্ষেত্রফল বের করি (ধরি b)
* a - b ই হল আমাদের কাঙ্ক্ষিত এলাকা যা চিত্রের মাঝে সহজে ই বোঝা যাচ্ছে

## কিছু সতর্কতা
double ডাটা টাইপ নিয়ে কাজ করতে হবে |

## সি ++ কোড
```
#include<bits/stdc++.h>
using namespace std;
#define pi 2*acos(0.0)
int main()
{
int tes=1,t;
cin>>t;
while(t--)
{
double a,b;
cin>>a;
b=a*2;
printf("Case %d: %0.2lf\n",tes++,b*b-pi*a*a);
}
return 0;
}
```



1 change: 1 addition & 0 deletions 1030/en.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,4 @@ int main() {
cs++;
}
}
```
Loading

0 comments on commit faf95ff

Please sign in to comment.