Skip to content

Commit

Permalink
updated readme.md
Browse files Browse the repository at this point in the history
  • Loading branch information
adnanaziz committed Mar 21, 2018
1 parent 14eaa5a commit 17e064d
Showing 1 changed file with 66 additions and 59 deletions.
125 changes: 66 additions & 59 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
# EPI Judge

## Intro

The EPI Judge is ready! This screenshot should give you a good idea of what it's about.

<img src="http://elementsofprogramminginterviews.com/img/judge-ide-example.png" width="600px"></img>
## Introduction

EPI Judge consists of the following:

Expand All @@ -14,103 +10,108 @@ EPI Judge consists of the following:

## Installation

The installation is super-simple &mdash; there's no install! You just **download the project, point your IDE/editor to it**, and start the code-debug cycle, with instant feedback! You can download the judge as a git project via `git clone`, or just get the source as a [zip](https://github.com/adnanaziz/EPIJudge/archive/master.zip).
Here's how to download the judge:

### C++ project import
$ git clone https://github.com/adnanaziz/EPIJudge.git
If you do not have `git`, here's a good [tutorial](https://www.atlassian.com/git/tutorials/install-git) on installing git itself.

If you want to import the project into your favourite IDE, you probably need to create IDE project with [CMake](https://cmake.org/) (no need to do it for CLion, it supports CMake out-of-the-box).
## Running the judge using IDEs

Here is an example recipe for generationg Visual Studio project ([list](https://cmake.org/cmake/help/v3.10/manual/cmake-generators.7.html) of all CMake supported IDEs).
After installing CMake, open your terminal, go to `epi_judge_cpp` folder and run following commands:
Check out these one minute videos to see how easy it is to get started with the judge.

mkdir vs
cd vs
cmake -G "Visual Studio 15 2017" ..

Then just open `epi_judge_cpp/vs/epi_judge_cpp.sln` solution with Visual Studio and it will load all EPI programs.
### Python

### Supported compilers
[PyCharm](https://youtu.be/ImD_iI-uGYo), [Eclipse](https://youtu.be/rZ1qqwEXwQY), [NetBeans](https://youtu.be/Z41jW1TyZwY)

The judge has been tested with these compilers. Let us know if you managed to compile all programs with an older version.
### Java

- **GCC** 5.4.1 (on Ubuntu 16.04)
- **Clang** 4.0 (on Ubuntu 16.04)
- **Apple LLVM Clang** 9.0.0
- **Visual Studio** 2017 (may be compatible with 2015, though we didn't check it (yet))
- **Java** 8
- **Python** 3.5
[IntelliJ IDEA](https://youtu.be/1BzHUpluQHM), [Eclipse](https://youtu.be/i9uz9Zazo0A)

### IDE guides
### C++

Check out one minute screencapture videos on YouTube to see how easy it is to get started with the judge.
[CLion](https://youtu.be/aHPDApyyYEg), [Visual Studio 2017](https://youtu.be/hgd8IIQpBEE)

#### C++

- [CLion](https://youtu.be/aHPDApyyYEg)
- [Visual Studio 2017](https://youtu.be/hgd8IIQpBEE)
## Running the judge from the command line

#### Java
### Python

- [IntelliJ IDEA](https://youtu.be/1BzHUpluQHM)
- [Eclipse](https://youtu.be/i9uz9Zazo0A)
$ python3 <program_name>.py

#### Python
#### Java

- [PyCharm](https://youtu.be/ImD_iI-uGYo)
- [Eclipse](https://youtu.be/rZ1qqwEXwQY)
- [NetBeans](https://youtu.be/Z41jW1TyZwY)
Use the [`Makefile`](https://github.com/adnanaziz/EPIJudge/blob/master/epi_judge_java/Makefile).

### Running from command-line
Compile and run a specific program:

#### C++
$ make <program_name>
Example:

You can manually compile and run all programs by directly invoking GCC or Clang compiler. Test framework is header-only, so no separate compilation is needed. Don't forget to add `-std=c++14` switch. Also you may need to provide `-pthread` switch (if you see some link errors with std::thread).
$ make Anagrams
Compile and run the last program that you edited:

Alternatively you can use Makefile in epi_judge_cpp directory (use `make <program_name>` for release build and `make <program_name>_dbg` for debug build) or use CMake with the provided CMakeLists.txt file. Default Makefile target ("last") compiles and runs the last edited file.
$ make

Example:
### C++

g++ -pthread -std=c++14 -O3 -o anagrams anagrams.cc
You can manually compile and run all programs by directly invoking GCC and Clang.

OR
$ g++ -pthread -std=c++14 -O3 -o anagrams anagrams.cc
You can also use the provided Makefile: `make <program_name>`. You can also use CMake with the provided CMakeLists.txt file.

make anagrams
$ make
The default Makefile target is the last edited file.

#### Java
$ make anagrams

Java compilation process is quite complicated, so we recommend you to use the provided Makefile. Run `make <program_name>` to compile and immediately start the program or run `make` to compile and start the last edited file.

Example:
## FAQ

make Anagrams
- How can I contact the authors?

#### Python
Please feel free to send us questions and feedback - `adnan.aziz@gmail.com` and `tsung.hsien.lee@gmail.com`

python3 <program_name>.py
- Help, my EPIJudge is not working, what should I do?

That's all.
If you do have issues, e.g., with install or with buggy tests, feel free to reach out to us via email. Please be as detailed as you can: the ideal is if you can upload a screencast video of the issue to youtube; failing that, please upload screenshots. The more detailed the description of the problem and your environment (OS, language version, IDE and version), the easier it’ll be for us to help you.

## Acknowledgments
- I'm new to programming, and don't have any kind of development environment, what should I do?

Please send us questions and feedback by email; we're adnan.aziz@gmail.com and tsung.hsien.lee@gmail.com
The IntelliJ Integrated Development environments described above are best-in-class, and have free versions that will work fine for the EPI Judge. They do not include the compilers. You can get the Java development environment from [Oracle](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html), and the Python development environment from [Python.org](https://www.python.org/downloads/). For C++, you have multiple options. The simplest is to install [VisualStudio](https://code.visualstudio.com/download), which includes both the IDE and the compiler. Google is a good resource for installation help.

A big shout-out to the hundreds of users who tried out the alpha release over the past couple of months. As always, we never fail to be impressed by the enthusiasm and commitment our readers have; it has served to bring out the best in us.
We all thank [Viacheslav Kroilov](https://github.com/metopa), for applying his exceptional software engineering skills to make EPI Judge a reality.
- What compilers are supported?

## FAQ
The judge has been tested with these compilers. Let us know if you managed to compile all programs with an older version.

- Help, my EPIJudge is not working, what should I do?
- **GCC** 5.4.1 (on Ubuntu 16.04)
- **Clang** 4.0 (on Ubuntu 16.04)
- **Apple LLVM Clang** 9.0.0
- **Visual Studio** 2017
- **Java** 8
- **Python** 3.5

If you do have issues, e.g., with install or with buggy tests, feel free to reach out to us via email. Please be as detailed as you can: the ideal is if you can upload a screencast video of the issue to youtube; failing that, please upload screenshots. The more detailed the description of the problem and your environment (OS, language version, IDE and version), the easier it’ll be for us to help you.
- What does the UI look like?

- I'm new to programming, and don't have any kind of development environment, what should I do?
Take a look at this screenshot.

The IntelliJ Integrated Development environments described above are best-in-class, and have free versions that will work fine for the EPI Judge. They do not include the compilers. You can get the Java development environment from [Oracle](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html), and the Python development environment from [Python.org](https://www.python.org/downloads/). For C++, you have multiple options. The simplest is to install [VisualStudio](https://code.visualstudio.com/download), which includes both the IDE and the compiler. Google is a good resource for installation help.
<img src="http://elementsofprogramminginterviews.com/img/judge-ide-example.png" width="600px"></img>

- How can I understand the test framework better?

The judge harness is fairly complex (but does not use nonstandard language features or libraries). You are welcome to study it, but we’d advise you against making changes to it (since it will lead to nasty merge conflicts when you update).

- How do I import the C++ project?

If you want to import the project into your favourite IDE, you probably need to create IDE project with [CMake](https://cmake.org/) (no need to do it for CLion, it supports CMake out-of-the-box).

Here is an example recipe for generationg Visual Studio project ([list](https://cmake.org/cmake/help/v3.10/manual/cmake-generators.7.html) of all CMake supported IDEs).
After installing CMake, open your terminal, go to `epi_judge_cpp` folder and run following commands:

mkdir vs
cd vs
cmake -G "Visual Studio 15 2017" ..

Then just open `epi_judge_cpp/vs/epi_judge_cpp.sln` solution with Visual Studio and it will load all EPI programs.

## Problem to Program Mapping

Expand Down Expand Up @@ -326,3 +327,9 @@ The judge harness is fairly complex (but does not use nonstandard language featu
| Find the longest subarray whose sum <= k | longest\_subarray\_with\_sum\_constraint.cc | LongestSubarrayWithSumConstraint.java | longest\_subarray\_with\_sum\_constraint.py |
| Road network | road\_network.cc | RoadNetwork.java | road\_network.py |
| Test if arbitrage is possible | arbitrage.cc | Arbitrage.java | arbitrage.py |

## Acknowledgments

A big shout-out to the hundreds of users who tried out the alpha release over the past couple of months. As always, we never fail to be impressed by the enthusiasm and commitment our readers have; it has served to bring out the best in us.
We all thank [Viacheslav Kroilov](https://github.com/metopa), for applying his exceptional software engineering skills to make EPI Judge a reality.

0 comments on commit 17e064d

Please sign in to comment.