diff --git a/bash/hello-world/.exercism/metadata.json b/bash/hello-world/.exercism/metadata.json new file mode 100644 index 0000000..fc3a6ca --- /dev/null +++ b/bash/hello-world/.exercism/metadata.json @@ -0,0 +1 @@ +{"track":"bash","exercise":"hello-world","id":"adebe10672344659a063fdbb192ff08c","url":"https://exercism.io/my/solutions/adebe10672344659a063fdbb192ff08c","handle":"Xevion","is_requester":true,"auto_approve":true} \ No newline at end of file diff --git a/bash/hello-world/README.md b/bash/hello-world/README.md new file mode 100644 index 0000000..1c2e532 --- /dev/null +++ b/bash/hello-world/README.md @@ -0,0 +1,101 @@ +# Hello World + +The classical introductory exercise. Just say "Hello, World!". + +["Hello, World!"](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program) is +the traditional first program for beginning programming in a new language +or environment. + +The objectives are simple: + +- Write a function that returns the string "Hello, World!". +- Run the test suite and make sure that it succeeds. +- Submit your solution and check it at the website. + +If everything goes well, you will be ready to fetch your first real exercise. + +# Welcome to Bash! + +Unlike many other languages here, bash is a bit of a special snowflake. +If you are on a Mac or other unix-y platform, you almost definitely +already have bash. In fact, anything you type into the terminal is +likely going through bash. + +The downside to this is that there isn't much of a development +ecosystem around bash like there is for other languages, and there are +multiple versions of bash that can be frustratingly incompatible. Luckily +we shouldn't hit those differences for these basic examples, and if you +can get the tests to pass on your machine, we are doing great. + +## Installation + +As mentioned above, if you are on a unix-like OS (Mac OS X, Linux, Solaris, +etc), you probably already have bash. + +## Testing + +As there isn't much of a bash ecosystem, there also isn't really a de +facto leader in the bash testing area. For these examples we are using +[bats](https://github.com/sstephenson/bats). You should be able to +install it from your favorite package manager, on OS X with homebrew +this would look something like this: + +``` +$ brew install bats +==> Downloading +https://github.com/sstephenson/bats/archive/v0.4.0.tar.gz +==> Downloading from +https://codeload.github.com/sstephenson/bats/tar.gz/v0.4.0 +######################################################################## +100.0% +==> ./install.sh /opt/boxen/homebrew/Cellar/bats/0.4.0 +🍺 /opt/boxen/homebrew/Cellar/bats/0.4.0: 10 files, 60K, built in 2 +seconds +``` + + + +Run the tests with: + +```bash +bats hello_world_test.sh +``` + +After the first test(s) pass, continue by commenting out or removing the +`[[ $BATS_RUN_SKIPPED == true ]] || skip` +annotations prepending other tests. + +To run all tests, including the ones with `skip` annotations, run: + +```bash +BATS_RUN_SKIPPED=true bats hello_world_test.sh +``` + +## Source + +This is an exercise to introduce users to using Exercism [http://en.wikipedia.org/wiki/%22Hello,_world!%22_program](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program) + + +## External utilities +`Bash` is a language to write "scripts" -- programs that can call +external tools, such as +[`sed`](https://www.gnu.org/software/sed/), +[`awk`](https://www.gnu.org/software/gawk/), +[`date`](https://www.gnu.org/software/coreutils/manual/html_node/date-invocation.html) +and even programs written in other programming languages, +like [`Python`](https://www.python.org/). +This track does not restrict the usage of these utilities, and as long +as your solution is portable between systems and does not require +installation of third party applications, feel free to use them to solve +the exercise. + +For an extra challenge, if you would like to have a better understanding +of the language, try to re-implement the solution in pure `Bash`, +without using any external tools. Note that there are some types of +problems that bash cannot solve, such as performing floating point +arithmetic and manipulating dates: for those, you must call out to an +external tool. + +## Submitting Incomplete Solutions +It's possible to submit an incomplete solution so you can see how others +have completed the exercise. diff --git a/clojure/armstrong-numbers/.exercism/metadata.json b/clojure/armstrong-numbers/.exercism/metadata.json new file mode 100644 index 0000000..e39d804 --- /dev/null +++ b/clojure/armstrong-numbers/.exercism/metadata.json @@ -0,0 +1 @@ +{"track":"clojure","exercise":"armstrong-numbers","id":"1f1f7ae1eefc49a68f16bd4c78df74b5","url":"https://exercism.io/my/solutions/1f1f7ae1eefc49a68f16bd4c78df74b5","handle":"Xevion","is_requester":true,"auto_approve":false} \ No newline at end of file diff --git a/clojure/armstrong-numbers/README.md b/clojure/armstrong-numbers/README.md new file mode 100644 index 0000000..bf98993 --- /dev/null +++ b/clojure/armstrong-numbers/README.md @@ -0,0 +1,18 @@ +# Armstrong Numbers + +An [Armstrong number](https://en.wikipedia.org/wiki/Narcissistic_number) is a number that is the sum of its own digits each raised to the power of the number of digits. + +For example: + +- 9 is an Armstrong number, because `9 = 9^1 = 9` +- 10 is *not* an Armstrong number, because `10 != 1^2 + 0^2 = 1` +- 153 is an Armstrong number, because: `153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153` +- 154 is *not* an Armstrong number, because: `154 != 1^3 + 5^3 + 4^3 = 1 + 125 + 64 = 190` + +Write some code to determine whether a number is an Armstrong number. +## Source + +Wikipedia [https://en.wikipedia.org/wiki/Narcissistic_number](https://en.wikipedia.org/wiki/Narcissistic_number) + +## Submitting Incomplete Solutions +It's possible to submit an incomplete solution so you can see how others have completed the exercise. diff --git a/clojure/armstrong-numbers/project.clj b/clojure/armstrong-numbers/project.clj new file mode 100644 index 0000000..2573e30 --- /dev/null +++ b/clojure/armstrong-numbers/project.clj @@ -0,0 +1,5 @@ +(defproject armstrong-numbers "0.1.0-SNAPSHOT" + :description "armstrong-numbers exercise" + :url "https://github.com/exercism/clojure/tree/master/exercises/armstrong-numbers" + :dependencies [[org.clojure/clojure "1.10.0"]] + :main armstrong-numbers/-main) diff --git a/clojure/armstrong-numbers/src/armstrong_numbers.clj b/clojure/armstrong-numbers/src/armstrong_numbers.clj new file mode 100644 index 0000000..c15d188 --- /dev/null +++ b/clojure/armstrong-numbers/src/armstrong_numbers.clj @@ -0,0 +1,18 @@ +(ns armstrong-numbers) + +; (defn armstrong? [num] +; (let [x (clojure.string/split (str num) #"") +; x (mapv read-string x) +; x (mapv #(* % %) x) +; ] +; ( +; (prn x) +; ) +; ) +; ) + +(defn armstrong? [num] "ye") + +(defn main [& args] + (armstrong? 9119) +) \ No newline at end of file diff --git a/clojure/armstrong-numbers/test/armstrong_numbers_test.clj b/clojure/armstrong-numbers/test/armstrong_numbers_test.clj new file mode 100644 index 0000000..a0ae527 --- /dev/null +++ b/clojure/armstrong-numbers/test/armstrong_numbers_test.clj @@ -0,0 +1,39 @@ +(ns armstrong-numbers-test + (:require [clojure.test :refer [deftest is testing]] + [armstrong-numbers :refer [armstrong?]])) + +(deftest armstrong-number-5 + (testing "Single digit numbers are Armstrong numbers" + (is (armstrong? 5)))) + +(deftest not-armstrong-number-10 + (testing "There are no 2 digit Armstrong numbers" + (is (not (armstrong? 10))))) + +(deftest armstrong-number-153 + (testing "Three digit number that is an Armstrong number" + (is (armstrong? 153)))) + +(deftest not-armstrong-number-100 + (testing "Three digit number that is not an Armstrong number" + (is (not (armstrong? 100))))) + +(deftest armstrong-number-9474 + (testing "Four digit number that is an Armstrong number" + (is (armstrong? 9474)))) + +(deftest not-armstrong-number-9475 + (testing "Four digit number that is not an Armstrong number" + (is (not (armstrong? 9475))))) + +(deftest armstrong-number-9926315 + (testing "Seven digit number that is an Armstrong number" + (is (armstrong? 9926315)))) + +(deftest not-armstrong-number-9926314 + (testing "Seven digit number that is not an Armstrong number" + (is (not (armstrong? 9926314))))) + +(deftest armstrong-number-21897142587612075 + (testing "Seventeen digit number that is an Armstrong number" + (is (armstrong? 21897142587612075)))) diff --git a/clojure/hello-world/.exercism/metadata.json b/clojure/hello-world/.exercism/metadata.json new file mode 100644 index 0000000..7c392ed --- /dev/null +++ b/clojure/hello-world/.exercism/metadata.json @@ -0,0 +1 @@ +{"track":"clojure","exercise":"hello-world","id":"e94ec082bcbb430c9e70fe15c3af8c61","url":"https://exercism.io/my/solutions/e94ec082bcbb430c9e70fe15c3af8c61","handle":"Xevion","is_requester":true,"auto_approve":true} \ No newline at end of file diff --git a/clojure/hello-world/README.md b/clojure/hello-world/README.md new file mode 100644 index 0000000..f4ce04b --- /dev/null +++ b/clojure/hello-world/README.md @@ -0,0 +1,51 @@ +# Hello World + +The classical introductory exercise. Just say "Hello, World!". + +["Hello, World!"](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program) is +the traditional first program for beginning programming in a new language +or environment. + +The objectives are simple: + +- Write a function that returns the string "Hello, World!". +- Run the test suite and make sure that it succeeds. +- Submit your solution and check it at the website. + +If everything goes well, you will be ready to fetch your first real exercise. + +### Project Structure + +Clojure exercises in exercism use [leiningen](http://leiningen.org/) to configure and run your code +and use [leiningen standard directory structure](https://github.com/technomancy/leiningen/blob/master/doc/TUTORIAL.md#directory-layout). + +You will find a test file named `hello_world_test.clj` inside `test` directory. +Write your code in `src/hello_world.clj`. It should use the namespace `hello-world` so that tests can pick it up. + +### Running tests + +Run the tests using `lein test` command and make them pass: + +``` +$ lein test + +lein test hello-world-test + +Ran 1 tests containing 1 assertions. +0 failures, 0 errors. +``` + +Then submit the exercise using: + +``` +$ exercism submit src/hello_world.clj +``` + +For more detailed instructions and learning resources refer [exercism's clojure language page](http://exercism.io/languages/clojure). + +## Source + +This is an exercise to introduce users to using Exercism [http://en.wikipedia.org/wiki/%22Hello,_world!%22_program](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program) + +## Submitting Incomplete Solutions +It's possible to submit an incomplete solution so you can see how others have completed the exercise. diff --git a/clojure/hello-world/project.clj b/clojure/hello-world/project.clj new file mode 100644 index 0000000..b6b1aec --- /dev/null +++ b/clojure/hello-world/project.clj @@ -0,0 +1,4 @@ +(defproject hello-world "0.1.0-SNAPSHOT" + :description "hello-world exercise." + :url "https://github.com/exercism/clojure/tree/master/exercises/hello-world" + :dependencies [[org.clojure/clojure "1.10.0"]]) diff --git a/clojure/hello-world/src/hello_world.clj b/clojure/hello-world/src/hello_world.clj new file mode 100644 index 0000000..f799279 --- /dev/null +++ b/clojure/hello-world/src/hello_world.clj @@ -0,0 +1,3 @@ +(ns hello-world) + +(defn hello [] "Hello, World!") diff --git a/clojure/hello-world/test/hello_world_test.clj b/clojure/hello-world/test/hello_world_test.clj new file mode 100644 index 0000000..ce032d9 --- /dev/null +++ b/clojure/hello-world/test/hello_world_test.clj @@ -0,0 +1,6 @@ +(ns hello-world-test + (:require [clojure.test :refer [deftest is]] + hello-world)) + +(deftest hello-world-test + (is (= "Hello, World!" (hello-world/hello)))) diff --git a/java/hello-world/.exercism/metadata.json b/java/hello-world/.exercism/metadata.json new file mode 100644 index 0000000..3908d45 --- /dev/null +++ b/java/hello-world/.exercism/metadata.json @@ -0,0 +1 @@ +{"track":"java","exercise":"hello-world","id":"ccb8c3bff5c04de69094a72b4b26895f","url":"https://exercism.io/my/solutions/ccb8c3bff5c04de69094a72b4b26895f","handle":"Xevion","is_requester":true,"auto_approve":true} \ No newline at end of file diff --git a/java/hello-world/README.md b/java/hello-world/README.md new file mode 100644 index 0000000..adbd76b --- /dev/null +++ b/java/hello-world/README.md @@ -0,0 +1,54 @@ +# Hello World + +The classical introductory exercise. Just say "Hello, World!". + +["Hello, World!"](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program) is +the traditional first program for beginning programming in a new language +or environment. + +The objectives are simple: + +- Write a function that returns the string "Hello, World!". +- Run the test suite and make sure that it succeeds. +- Submit your solution and check it at the website. + +If everything goes well, you will be ready to fetch your first real exercise. + +# Tips + +Since this is your first Java exercise, we've included a detailed TUTORIAL.md +file that guides you through your solution. Check it out for tips and +assistance! + + + +## Setup + +Go through the setup instructions for Java to install the necessary +dependencies: + +[https://exercism.io/tracks/java/installation](https://exercism.io/tracks/java/installation) + +# Running the tests + +You can run all the tests for an exercise by entering the following in your +terminal: + +```sh +$ gradle test +``` + +> Use `gradlew.bat` if you're on Windows + +In the test suites all tests but the first have been skipped. + +Once you get a test passing, you can enable the next one by removing the +`@Ignore("Remove to run test")` annotation. + +## Source + +This is an exercise to introduce users to using Exercism [http://en.wikipedia.org/wiki/%22Hello,_world!%22_program](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program) + +## Submitting Incomplete Solutions +It's possible to submit an incomplete solution so you can see how others have +completed the exercise.