summaryrefslogtreecommitdiff
path: root/amazing
diff options
context:
space:
mode:
authorAditya Naik2018-05-09 21:44:24 -0400
committerAditya Naik2018-05-09 21:44:24 -0400
commitc6e35f76dfe3eefddd64ca64dda3ab1449048464 (patch)
tree21c7ccca9f1fc8a4a575508a5ba109da513d4c59 /amazing
initial
Diffstat (limited to 'amazing')
-rwxr-xr-xamazing/amazingbin0 -> 102112 bytes
-rw-r--r--amazing/amazing.cpp163
-rw-r--r--amazing/amazing.in108
-rw-r--r--amazing/amazing.py4
-rw-r--r--amazing/backup126
5 files changed, 401 insertions, 0 deletions
diff --git a/amazing/amazing b/amazing/amazing
new file mode 100755
index 0000000..9a65934
--- /dev/null
+++ b/amazing/amazing
Binary files differ
diff --git a/amazing/amazing.cpp b/amazing/amazing.cpp
new file mode 100644
index 0000000..e9bc8d6
--- /dev/null
+++ b/amazing/amazing.cpp
@@ -0,0 +1,163 @@
+#include <iostream>
+#include <string>
+#include <vector>
+#include <iomanip>
+using namespace std;
+/*
+rows
+j 0 1 2 3 4
+i
+0 <0 1 0 1 0>
+1 <0 1 0 1 0>
+2 <0 0 0 0 0>
+ */
+// struct sq{
+// sq* N;
+// sq* S;
+// sq* E;
+// sq* W;
+// int count;
+// };
+
+
+char turn_left(char);
+char turn_right(char);
+
+int main(){
+ int b, w, count[100][100]={0};
+ vector<char> sq[100];
+ string s;
+
+ cin>>b>>w;
+ while(b>0){
+ int count[100][100]={0};
+ vector<char> sq[100];
+ string s;
+
+ for(int i=0;i<b;i++){
+ cin>>s;
+ for(int j=0;j<w;j++)
+ sq[i].push_back(s[j]);
+ }
+
+ int j = 0, i=b-1;
+ int wallj = 0, walli=b;
+ char dir='E';
+ bool returned=false;
+
+ while(!returned){
+ if((walli<b && walli>=0) && (wallj>=0 && wallj<w))
+ if(sq[walli][wallj]=='0'){
+ if(dir=='S'){
+ walli--;
+ wallj++;
+ }
+ else if(dir=='W'){
+ walli++;
+ wallj++;
+ }
+ else if(dir=='N'){
+ walli++;
+ wallj--;
+ }
+ else if(dir=='E'){
+ walli--;
+ wallj--;
+ }
+ dir = turn_right(dir);
+ }
+
+ if(dir=='E'){
+ if(j+1<w && sq[i][j+1]=='0'){
+ j++;
+ wallj++;
+ count[i][j]++;
+ }
+ else{
+ dir = turn_left(dir);
+ walli--;
+ wallj++;
+ }
+ }
+ else if(dir=='N'){
+ if(i-1>=0 && sq[i-1][j]=='0'){
+ i--;
+ walli--;
+ count[i][j]++;
+ }
+ else{
+ dir = turn_left(dir);
+ walli--;
+ wallj--;
+ }
+ }
+ else if(dir=='W'){
+ if(j-1>=0 && sq[i][j-1]=='0'){
+ j--;
+ wallj--;
+ count[i][j]++;
+ }
+ else{
+ dir = turn_left(dir);
+ walli++;
+ wallj--;
+ }
+ }
+ else if(dir=='S'){
+ if(i+1<b && sq[i+1][j]=='0'){
+ i++;
+ walli++;
+ count[i][j]++;
+ }
+ else{
+ dir = turn_left(dir);
+ walli++;
+ wallj++;
+ }
+ }
+
+ if(i==b-1 && j==0)
+ returned = true;
+ }
+
+ int visited[5]={0};
+ for(int i=0; i<b; i++){
+ for(int j=0; j<w; j++){
+ if(count[i][j]>4)
+ continue;
+ else if(sq[i][j]=='0')
+ visited[count[i][j]]++;
+ }
+ }
+ for(int k=0; k<5; k++)
+ cout<<right<<setw(3)<<visited[k];
+ cout<<endl;
+ cin>>b>>w;
+ }
+}
+
+char turn_left(char dir){
+ char new_dir;
+ if(dir=='E')
+ new_dir = 'N';
+ else if(dir=='N')
+ new_dir = 'W';
+ else if(dir=='W')
+ new_dir = 'S';
+ else if(dir == 'S')
+ new_dir = 'E';
+ return new_dir;
+}
+
+char turn_right(char dir){
+ char new_dir;
+ if(dir=='E')
+ new_dir = 'S';
+ else if(dir=='N')
+ new_dir = 'E';
+ else if(dir=='W')
+ new_dir = 'N';
+ else if(dir == 'S')
+ new_dir = 'W';
+ return new_dir;
+}
diff --git a/amazing/amazing.in b/amazing/amazing.in
new file mode 100644
index 0000000..52d676a
--- /dev/null
+++ b/amazing/amazing.in
@@ -0,0 +1,108 @@
+11 10
+0010000100
+0100000001
+0100000100
+1010000000
+0001000000
+0000000000
+0011011000
+0010000001
+0101000000
+0000000011
+0010100101
+2 24
+001100010000000000000000
+000010101100101000001010
+12 28
+1000100000101000010000100100
+0001001000000001001001000010
+0000000000000100000001000100
+1000011100000000000100000001
+0001000100010010000011000010
+0000100000000000000001101000
+0000000000000000001010000000
+0100000000010010000000100000
+0001000000110000101010100100
+0000110000001101000000001000
+0000100000111001000000100000
+0001101100000010111010111100
+29 6
+000000
+111000
+110011
+000000
+110011
+000000
+000100
+101000
+000000
+000100
+100001
+000100
+010000
+001010
+000000
+001010
+100110
+001100
+110000
+001000
+000001
+000100
+100000
+000000
+001000
+001100
+000000
+010000
+000000
+8 27
+110100000100000100010000000
+000000000001010101010000001
+000110110000010000010000001
+000100100001000001000000000
+000000001000111101000010010
+001000100100110001000010100
+001000000011000000000101000
+000000000000000100000001000
+11 24
+010000100000000001001001
+000000000101001000000110
+010000000010000000000101
+010010001100000001000001
+000100000000000000100100
+000100011010100000101000
+001001000100000000100101
+001001110000000000000001
+110011001000100001000000
+000000001000100100110100
+000010100000000000011001
+8 29
+01000110000000000000010000000
+11010101000000000011000000000
+00000000100100100000000000000
+11000100011000000000001010000
+00000001111000100000000000000
+00000011000000000000100100100
+00011100000111001100100000000
+00110000001000100000100011100
+5 3
+001
+010
+100
+000
+000
+9 3
+011
+000
+011
+000
+000
+000
+000
+000
+000
+2 11
+00000000001
+00111001000
+0 0 \ No newline at end of file
diff --git a/amazing/amazing.py b/amazing/amazing.py
new file mode 100644
index 0000000..6df6194
--- /dev/null
+++ b/amazing/amazing.py
@@ -0,0 +1,4 @@
+
+
+class square:
+
diff --git a/amazing/backup b/amazing/backup
new file mode 100644
index 0000000..2ffcb12
--- /dev/null
+++ b/amazing/backup
@@ -0,0 +1,126 @@
+#include <iostream>
+#include <string>
+#include <vector>
+using namespace std;
+/*
+rows
+j 0 1 2 3 4
+i
+0 <0 1 0 1 0>
+1 <0 1 0 1 0>
+2 <0 0 0 0 0>
+ */
+// struct sq{
+// sq* N;
+// sq* S;
+// sq* E;
+// sq* W;
+// int count;
+// };
+
+
+char turn_left(char);
+char turn_right(char);
+
+int main(){
+ int b, w, count[100][100]={0};
+ vector<char> sq[100];
+ string s;
+
+ cin>>b>>w;
+ while(b>0){
+ for(int i=0;i<b;i++){
+ cin>>s;
+ for(int j=0;j<w;j++)
+ sq[i];
+ }
+
+ int j = 0, i=b-1;
+ int wallj = 0, walli=b;
+ char dir='E';
+ bool returned=false;
+
+ while(!returned){
+ count[i][j]++;
+
+ if(sq[walli][wallj]==0)
+ dir = turn_right(dir);
+
+ if(dir=='E'){
+ if(j+1<w && sq[i][j+1]=='0'){
+ j++;
+ wallj++;
+ }
+ else
+ dir = turn_left(dir);
+ }
+ else if(dir=='N'){
+ if(i-1>=0 && sq[i-1][j]=='0'){
+ i--;
+ walli--;
+ }
+ else
+ dir = turn_left(dir);
+ }
+ else if(dir=='W'){
+ if(j-1>=0 && sq[i][j-1]=='0'){
+ j--;
+ wallj--;
+ }
+ else
+ dir = turn_left(dir);
+ }
+ else if(dir=='S'){
+ if(i+1<b && sq[i+1][j]=='0'){
+ i++;
+ walli++;
+ }
+ else
+ dir = turn_left(dir);
+ }
+
+ if(i==b-1 && j==0)
+ returned = true;
+ }
+
+ int visited[5]={0};
+ for(int i=0; i<b; i++){
+ for(int j=0; j<w; j++){
+ if(count[i][j]>4)
+ continue;
+ else if(sq[i][j]=='0')
+ visited[count[i][j]]++;
+ }
+ }
+ for(int k=0; k<5; k++)
+ cout<<visited[k]<<" ";
+ cout<<endl;
+ cin>>b>>w;
+ }
+}
+
+char turn_left(char dir){
+ char new_dir;
+ if(dir=='E')
+ new_dir = 'N';
+ else if(dir=='N')
+ new_dir = 'W';
+ else if(dir=='W')
+ new_dir = 'S';
+ else if(dir == 'S')
+ new_dir = 'E';
+ return new_dir;
+}
+
+char turn_right(char dir){
+ char new_dir;
+ if(dir=='E')
+ new_dir = 'S';
+ else if(dir=='N')
+ new_dir = 'E';
+ else if(dir=='W')
+ new_dir = 'N';
+ else if(dir == 'S')
+ new_dir = 'W';
+ return new_dir;
+}