Opening files from the directories
#include < iostream >
#include < filesystem >
#include < vector >
#include < fstream >
namespace fs = std::filesystem;
int main(){
// Getting all the files in the directory "submissions"
std::vector< std::string > filenames;
fs::directory_iterator iter("./submissions");
for(const auto& p : iter){
if(p.is_directory()){
fs::directory_iterator iter2(p.path().string());
for(const auto& p2 : iter2){
if(p2.is_regular_file()) {
std::cout << "\tfile: " << p2.path() << " under the directory " << p.path().string() << '\n';
filenames.push_back(p2.path());
}
}
}
}
// Read one file from filenames vector.
std::string out = "";
std::string line = "";
std::ifstream myfile(filenames[0]);
if(myfile.is_open()){
while(getline(myfile, line)){
out += line;
out += '\n';
}
myfile.close();
}
std::cout << filenames[0] << '\n';
std::cout << out << std::endl;
}
#include < iostream >
using namespace std;
int main(){
string a = " ABCYZB";
string b = " ABZBC";
int n1 = a.length(); // 6
int n2 = b.length(); // 5
int** count = new int*[n2];
for(int i=0;i < n2;++i){
count[i] = new int[n1];
}
// set the first row and first col to be one
// i <- row index
// j <- col index
for(int i=0;i < n2;++i){
count[i][0] = 1;
}
for(int j=0; j < n1;++j){
count[0][j] = 1;
}
for(int i=1;i < n2;++i){
for(int j=1; j < n1;++j){
if( a[j] != b[i] ){
count[i][j] = fmax(count[i][j-1], count[i-1][j]);
}else{
count[i][j] = 1 + count[i-1][j-1];
}
}
}
// backtracking
int i = n2-1;
int j = n1-1;
string longest_sub = "";
while(i>=0 && j>=0){
if(a[j] == b[i]){
longest_sub = a[j] + longest_sub;
i = i - 1;
j = j - 1;
}else{
if(count[i][j-1] > count[i-1][j]){
j = j - 1;
}else{
i = i - 1;
}
}
}
cout << "longest_sub : " << longest_sub << '\n';
for(int i=0;i < n2;++i){
for(int j=0; j < n1;++j){
cout << count[i][j] << " ";
}
cout << '\n';
}
return 0;
}
To check if your Mac has a homebrew installed already, type brew on your terminal. If the error shows up saying it cannot recognize the command, then you have to install homebrew
Type the following line on your terminal to install the Homebrew. [Homebrew website]
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Now you have installed the Homebrew
Type the following line on your terminal to install the SFML.
brew install sfml
If you get an error from installation then you may need to type the following lines on your terminal.
export HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK=1 brew install sfml
The following code will show the animation of the ball bouncing on the walls.
#include < SFML/Graphics.hpp >
int main() {
// Set the window size.
int windows_height = 800;
int windows_width = 800;
sf::RenderWindow window(sf::VideoMode(windows_width, windows_height), "SFML works!");
// Set the radius of the ball.
float radius = 100;
sf::CircleShape circle(radius);
// Set the color of the ball.
circle.setFillColor(sf::Color::Green);
// Set the initial position of the ball
circle.setPosition(100, 300);
double velx = 1; // horizontal velocity
double vely = 1; // vertical velocity
while (window.isOpen()) {
// close the window when "close" button of the window is clicked
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
window.close();
}
}
// try to comment this line and see what happens!
window.clear();
// getting the position of the circle. (top left corner of the ball)
sf::Vector2f position = circle.getPosition();
float x = position.x; // x position
float y = position.y; // y position
// when the ball hits the boundary
// invert the velocity x
if(x<0){
velx = 1;
}else if(x>windows_width - 2*radius){
velx = -1;
}
// when the ball hits the boundary
// invert the velocity y
if(y<0){
vely = 1;
}else if(y>windows_height - 2*radius){
vely = -1;
}
// move the ball
circle.move(velx,vely);
// draw the ball on the canvas
window.draw(circle);
// showing
window.display();
}
return 0;
}