-
-
Notifications
You must be signed in to change notification settings - Fork 358
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add C++ code for Flood Fill algorithm #860
Add C++ code for Flood Fill algorithm #860
Conversation
39d11f6
to
5092b1d
Compare
5092b1d
to
0f7ffef
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall this looks pretty good to me. The only problem that needs to be fixed is the ranges for source code lines included in the text.
I left some suggestions in find_neighbors
that are generally
- use
const
wherever possible and - use references when iterating
which apply for all the functions, not just the one I annotated. They aren't critical for the algorithm, but they're good practice.
I wanted to keep things simple, C++ can get quite verbose 😁 |
0f7ffef
to
2d5d690
Compare
2d5d690
to
608a6eb
Compare
Constified and referenced where I could. Ranges should be fixed with new ranges. |
This looks good to me, happy to merge, as long as @berquist is also happy! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yep, I am happy. Thanks!
* pep8ify python * rename Tree_example.py * standardize python output * standardize c output * standardize c++ output * standardize rust output * standardize javascript output * standardize julia output * Standardized Coconut output * fix coconut * standardize go output * standardize common lisp output * Verlet Integration: Output standardization (#855) * Standardize julia output * Standardize kotlin output This also fixes a previous bug, which caused the time and velocity values to not get printed correctly. * Standardized c output * Standardized cpp output * Standardized lisp output * Standardized fortran output I was not able to prevent the preceding whitespaces, but they can just be trimmed. * Standardized go output * Standardized java output * Standardize javascript output * Standardize nim output * Standardize python output * Standardize ruby output As the original implementation only returned the time and not the velocity, the code needed to be adjusted a bit. Now it returns the two values as an array which gets deconstructed and printed. * Standardize rust output * Standardize swift output * Standardized haskell output * Standardized haskell output (no quote marks) * attempt at fix for asm Co-authored-by: Jérémie Gillet <jie.gillet@gmail.com> Co-authored-by: James Schloss <jrs.schloss@gmail.com> * standardize php output * standardize swift output * removed outdated comments in Coconut implementation * standardize haskell output * Fix asm exit codes (#858) * standardize crystal output * Flood fill in Coconut (#836) * Added Barnsley fern in Coconut (+ .editorconfig for Coconut) (#814) * Added the Jarvis march in Coconut (#734) * Fix minor typo * Change folder structure of convolutions (#861) This puts every chapters' code into its own directory, which is useful for automatic validation. * standardize csharp output * standardize java output * fix php line numbers and python filename * fix coconut and python line numbers * fix minor bug in C * fix labels and minor bug in go * minor label fix in python * Huffman encoding in Coconut (#732) * Update README.md Changing readme link to reflect change in twitch url * Add C# implemenation for 1D Convolutions (#846) * Add C# implemenation for 1D Convolutions * Fix off by one error and julia line numbers * Fix off by one error for linear convolutions * Fix trailing zero * Update contents/convolutions/code/csharp/1DConvolution.cs Co-authored-by: Trashtalk217 <trashtalk217@gmail.com> * Update contents/convolutions/code/csharp/1DConvolution.cs Co-authored-by: Trashtalk217 <trashtalk217@gmail.com> * Update contents/convolutions/code/csharp/1DConvolution.cs Co-authored-by: Trashtalk217 <trashtalk217@gmail.com> * Update contents/convolutions/code/csharp/1DConvolution.cs Co-authored-by: Trashtalk217 <trashtalk217@gmail.com> * Update contents/convolutions/code/csharp/1DConvolution.cs Co-authored-by: Trashtalk217 <trashtalk217@gmail.com> * Update contents/convolutions/code/csharp/1DConvolution.cs Co-authored-by: Trashtalk217 <trashtalk217@gmail.com> * Update contents/convolutions/code/csharp/1DConvolution.cs Co-authored-by: Trashtalk217 <trashtalk217@gmail.com> * Update contents/convolutions/code/csharp/1DConvolution.cs Co-authored-by: Trashtalk217 <trashtalk217@gmail.com> * Update contents/convolutions/code/csharp/1DConvolution.cs Co-authored-by: Trashtalk217 <trashtalk217@gmail.com> * Update contents/convolutions/code/csharp/1DConvolution.cs Co-authored-by: Trashtalk217 <trashtalk217@gmail.com> * Update contents/convolutions/code/csharp/1DConvolution.cs Co-authored-by: Trashtalk217 <trashtalk217@gmail.com> * Update contents/convolutions/code/csharp/1DConvolution.cs Co-authored-by: Trashtalk217 <trashtalk217@gmail.com> * Update contents/convolutions/code/csharp/1DConvolution.cs Co-authored-by: Trashtalk217 <trashtalk217@gmail.com> * Add trailing new line Co-authored-by: Trashtalk217 <trashtalk217@gmail.com> * IFS Common Lisp implementation (#722) * first working version * cleaned up the chaos-game function and added some helpfull comments * changed the .md file and upped iterations * Skeleton of the final solution * Update contents/IFS/IFS.md Co-authored-by: Eric Berquist <eric.berquist@gmail.com> Co-authored-by: James Schloss <jrs.schloss@gmail.com> Co-authored-by: Eric Berquist <eric.berquist@gmail.com> * added MonteCarlo in PowerShell (#760) * Add Rust implementation for The Barnsley Fern (#818) * Add Rust implementation for The Barnsley Fern * Change operators constants and add Cargo.toml * Fix bug in matrix multiplication Co-authored-by: James Schloss <jrs.schloss@gmail.com> * changing barnsley.md to read the correct coconut file (#867) * added approximate counting implementation in python (#866) * added approximate counting implementation in python * Update approximate_counting.py * updating approximate_counting.py * removed redundancies * fixing linking issues in convolution chapter (#868) * Add initial devcontainer (#862) * small changes to convolutional theorem chapter and code to make things more reproduceable (#872) * added convolutional theorem implementation in python (#869) * added convolutional theorem implementation in python * fixed chapter linking * added comments to the code * changed random distribution to sawtooth * corrected previous commit * fixed comments Co-authored-by: James Schloss <jrs.schloss@gmail.com> * Use `[#]\n` instead of `[#]` for human readable output (#873) * Add approximate counting algorithm in C (#844) * Add approximate counting algorithm in C * Fix typo Co-authored-by: stormofice <58337328+stormofice@users.noreply.github.com> Co-authored-by: stormofice <58337328+stormofice@users.noreply.github.com> Co-authored-by: James Schloss <jrs.schloss@gmail.com> * added 1d convolution implementation in python (#874) * added 1d convolution implementation in python * fixed some mistakes in the code so it outputs correct results * making the code look better * spacing code properly for readability * fixing 1d convolution markdown file (#879) * Add racket setup to devcontainer (#875) * Normalize inputs for scheme euclid algorithm (#878) Change inputs to make it consistent with other examples. * Add initial setup for Swift in devcontainer (#880) * Add scheme setup to devcontainer (#876) * Clean up Monte Carlo integration in Racket (#781) * Clean up Monte Carlo integration in Racket * Add blank lines in Monte Carlo integration in Clojure * Change Racket lang include from lisp to racket * Add C++ code for Flood Fill algorithm (#860) * fixing chapter to use split-op code (#888) * use [#]\n for readability * Implemented stacks and queues in Java (#897) * Java tree traversal: updated dfsRecursiveInOrderBinary (#899) * Tree traversal in smalltalk (#453) * fixed print statements (#901) * Fixes in PATH that make dlang, emojicode and factor usable (#890) * fixing huffman encoding for Julia and adding Test (#828) * JavaScript tree traversal: updated dfsInorder (#902) * julia: change printf to print * pep8ify python * rename Tree_example.py * standardize python output * standardize c output * standardize c++ output * standardize rust output * standardize javascript output Resolved conflict with master (by Amaras) * standardize julia output Resolved conflict with master (by Amaras) * Standardized Coconut output * fix coconut * standardize go output * standardize common lisp output * standardize php output * standardize swift output * removed outdated comments in Coconut implementation * standardize haskell output * standardize crystal output * standardize csharp output * standardize java output Resolved the conflict with fixing dfs * fix php line numbers and python filename * fix coconut and python line numbers * fix minor bug in C * fix labels and minor bug in go * minor label fix in python * use [#]\n for readability * julia: change printf to print * update Tree.java. remove MainClass.java Co-authored-by: Sammy Plat <amaras@vivaldi.net> Co-authored-by: stormofice <58337328+stormofice@users.noreply.github.com> Co-authored-by: Jérémie Gillet <jie.gillet@gmail.com> Co-authored-by: James Schloss <jrs.schloss@gmail.com> Co-authored-by: Eric Berquist <eric.berquist@gmail.com> Co-authored-by: Trashtalk217 <trashtalk217@gmail.com> Co-authored-by: PaddyKe <34421580+PaddyKe@users.noreply.github.com> Co-authored-by: Dimitri Belopopsky <ShadowMitia@users.noreply.github.com> Co-authored-by: Ayman Lafaz <ayman.lafaz@um5r.ac.ma> Co-authored-by: Nicholas Tindle <nicktindle@outlook.com> Co-authored-by: Mahdi <24981501+mahdisarikhani@users.noreply.github.com> Co-authored-by: Henrik Christensen <sensen1695@hotmail.com> Co-authored-by: Neverik <neverliberty@gmail.com>
I've tried to keep it as close as possible to the Julia code. I also had to battle a bit with type conversions to remove warnings. If anyone has advice on making this code a bit clearer, let me know!
I used this command to compile my code:
g++ -std=c++17 -Wall -Wextra -Wshadow -Wnon-virtual-dtor -Wold-style-cast -Wcast-align -Wunused -Woverloaded-virtual -Wpedantic -Wconversion -Wsign-conversion -Wnull-dereference -Wdouble-promotion -Wformat=2 flood_fill.cpp && ./a.out