trackler 2.2.1.169 → 2.2.1.170

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/isbn-verifier/canonical-data.json +9 -1
  4. data/tracks/ballerina/.gitignore +1 -0
  5. data/tracks/ballerina/.travis.yml +20 -2
  6. data/tracks/ballerina/config.json +15 -5
  7. data/tracks/ballerina/config/maintainers.json +13 -2
  8. data/tracks/ballerina/exercises/.ballerina/.gitignore +2 -0
  9. data/tracks/ballerina/exercises/hello-world-service/.meta/reference/hello_world_service.bal +17 -0
  10. data/tracks/ballerina/exercises/hello-world-service/hello_world_service.bal +10 -0
  11. data/tracks/ballerina/exercises/hello-world-service/hello_world_service.client.out +3 -0
  12. data/tracks/ballerina/exercises/hello-world-service/hello_world_service.description +3 -0
  13. data/tracks/ballerina/exercises/hello-world-service/hello_world_service.server.out +12 -0
  14. data/tracks/ballerina/exercises/hello-world-service/tests/hello_world_service_test.bal +36 -0
  15. data/tracks/ballerina/exercises/hello-world/.meta/reference/hello_world.bal +5 -0
  16. data/tracks/ballerina/exercises/hello-world/README.md +21 -0
  17. data/tracks/ballerina/exercises/hello-world/hello_world.bal +6 -0
  18. data/tracks/ballerina/exercises/hello-world/tests/hello_world_test.bal +22 -0
  19. data/tracks/ballerina/exercises/run_ballerina_tests.sh +30 -0
  20. data/tracks/kotlin/exercises/difference-of-squares/.meta/version +1 -1
  21. data/tracks/kotlin/exercises/perfect-numbers/.meta/version +1 -1
  22. data/tracks/kotlin/exercises/raindrops/.meta/version +1 -1
  23. data/tracks/kotlin/exercises/scrabble-score/.meta/version +1 -1
  24. data/tracks/kotlin/exercises/secret-handshake/.meta/version +1 -1
  25. data/tracks/kotlin/exercises/space-age/.meta/version +1 -1
  26. data/tracks/kotlin/exercises/sum-of-multiples/.meta/version +1 -1
  27. data/tracks/powershell/exercises/bob/BobResponse.example.ps1 +24 -0
  28. data/tracks/powershell/exercises/bob/BobResponse.ps1 +24 -0
  29. data/tracks/powershell/exercises/hamming/HammingDifference.example.ps1 +27 -0
  30. data/tracks/powershell/exercises/hamming/HammingDifference.ps1 +27 -0
  31. data/tracks/powershell/exercises/hello-world/HelloWorld.example.ps1 +13 -0
  32. data/tracks/powershell/exercises/hello-world/HelloWorld.ps1 +13 -0
  33. data/tracks/powershell/exercises/leap/LeapYear.example.ps1 +27 -0
  34. data/tracks/powershell/exercises/leap/LeapYear.ps1 +25 -0
  35. data/tracks/powershell/exercises/nucleotide-count/NucleotideCount.example.ps1 +21 -0
  36. data/tracks/powershell/exercises/nucleotide-count/NucleotideCount.ps1 +21 -0
  37. data/tracks/powershell/exercises/raindrops/Raindrops.example.ps1 +25 -0
  38. data/tracks/powershell/exercises/raindrops/Raindrops.ps1 +25 -0
  39. data/tracks/powershell/exercises/reverse-string/ReverseString.example.ps1 +18 -11
  40. data/tracks/powershell/exercises/reverse-string/ReverseString.ps1 +18 -10
  41. data/tracks/powershell/exercises/sum-of-multiples/SumOfMultiples.example.ps1 +17 -15
  42. data/tracks/powershell/exercises/sum-of-multiples/SumOfMultiples.ps1 +17 -15
  43. data/tracks/powershell/exercises/two-fer/TwoFer.example.ps1 +21 -0
  44. data/tracks/powershell/exercises/two-fer/TwoFer.ps1 +21 -0
  45. data/tracks/rust/config.json +11 -1
  46. data/tracks/rust/config/maintainers.json +34 -28
  47. metadata +14 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7ac97baa3d95b5fac5839d39492fdc5ab7bb6475
4
- data.tar.gz: 12d70c30408a6223a225465decb0e43fba0a1dc9
3
+ metadata.gz: 408d82244ac628e626dc56a53945bd9e6c300e55
4
+ data.tar.gz: 6c3d74efe041daa41b8c8c3837a9627f2778a330
5
5
  SHA512:
6
- metadata.gz: f4e708c51b3e34a6947c4a0e24ac1e65577ff206edd47c28ecbdbb29015712e966656cbf484599e579fbc3c55994d8469bd42fdb4575b4ec108dccb420f32eff
7
- data.tar.gz: 1ab16c23dfb945249683ac5b8ccd1c6bcc7556651fdbd66e3afe81be434fefaf3f88bee458a6fbed8b22a594e203f7a66a36ee4feab5381931868d4b80ffae10
6
+ metadata.gz: 799e7ad0edec826f96aa0136b91b9a8df1abe03c63d3edc7cdf2096e8deb36943570c87bf59e2e52b9d84fb0dc2ef4647498e65a77112ef280678badeb238056
7
+ data.tar.gz: d778ec6e0242da6518b8a207bed5b248c3a7d910d450500e3768d7576e04181f7a25c546f0dbacf0fa441f44ee84be891339e27a13a3b2269710bac15c4de5cc
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.2.1.169"
2
+ VERSION = "2.2.1.170"
3
3
  end
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "exercise": "isbn-verifier",
3
- "version": "2.5.0",
3
+ "version": "2.6.0",
4
4
  "comments": [
5
5
  "An expected value of true indicates a valid ISBN-10, ",
6
6
  "whereas false means the ISBN-10 is invalid."
@@ -86,6 +86,14 @@
86
86
  },
87
87
  "expected": false
88
88
  },
89
+ {
90
+ "description": "too short isbn",
91
+ "property": "isValid",
92
+ "input": {
93
+ "isbn": "00"
94
+ },
95
+ "expected": false
96
+ },
89
97
  {
90
98
  "description": "isbn without check digit",
91
99
  "property": "isValid",
@@ -2,3 +2,4 @@
2
2
  .DS_Store
3
3
  bin/configlet
4
4
  bin/configlet.exe
5
+ target/
@@ -1,5 +1,23 @@
1
1
  language: bash
2
2
 
3
3
  script:
4
- - bin/fetch-configlet
5
- - bin/configlet lint --track TRACK_ID .
4
+ # - bin/fetch-configlet
5
+ # - bin/configlet lint --track TRACK_ID .
6
+ - STRING="Downloading ballerina..."
7
+ - BALLERINA_VERSION="ballerina-platform-0.970.0"
8
+ - echo $STRING
9
+ # Download Ballerina dist
10
+ - wget https://product-dist.ballerina.io/downloads/0.970.0/$BALLERINA_VERSION.zip
11
+
12
+ # Unzip the zip file
13
+ - unzip $BALLERINA_VERSION.zip
14
+
15
+ # Add Ballerina to the path variable
16
+ - export PATH=$PATH:$(pwd)/$BALLERINA_VERSION/bin
17
+
18
+ # Print Ballerina version
19
+ - ballerina version
20
+
21
+ # Change the directory
22
+ - cd exercises
23
+ - sh run_ballerina_tests.sh
@@ -2,10 +2,20 @@
2
2
  "track_id": "ballerina",
3
3
  "language": "Ballerina",
4
4
  "active": false,
5
+ "blurb": "",
5
6
  "ignore_pattern": "[Ee]xample",
6
- "solution_pattern": "[Ee]xample",
7
+ "solution_pattern": "reference",
7
8
  "test_pattern": "[Tt]est",
8
- "foregone": [],
9
- "exercises": null,
10
- "deprecated": []
11
- }
9
+ "exercises": [
10
+ {
11
+ "slug": "hello-world",
12
+ "uuid": "91441035-67fa-40e3-a4d5-39476801172a",
13
+ "core": true,
14
+ "unlocked_by": null,
15
+ "difficulty": 1,
16
+ "topics": [
17
+ "strings"
18
+ ]
19
+ }
20
+ ]
21
+ }
@@ -1,4 +1,15 @@
1
1
  {
2
2
  "docs_url": "https://github.com/exercism/docs/blob/master/maintaining-a-track/maintainer-configuration.md",
3
- "maintainers": []
4
- }
3
+ "maintainers": [
4
+ {
5
+ "github_username": "kasun04",
6
+ "alumnus": true,
7
+ "show_on_website": false,
8
+ "name": null,
9
+ "link_text": null,
10
+ "link_url": null,
11
+ "avatar_url": null,
12
+ "bio": null
13
+ }
14
+ ]
15
+ }
@@ -0,0 +1,2 @@
1
+ *
2
+ !.gitignore
@@ -0,0 +1,17 @@
1
+ import ballerina/http;
2
+ import ballerina/log;
3
+
4
+ // By default, Ballerina exposes a service via HTTP/1.1.
5
+ service<http:Service> hello bind { port: 9090 } {
6
+
7
+ // Invoke all resources with arguments of server connector and request.
8
+ sayHello(endpoint caller, http:Request req) {
9
+ http:Response res = new;
10
+ // Use a util method to set a string payload.
11
+ res.setPayload("Hello, World!");
12
+
13
+ // Send the response back to the caller.
14
+ caller->respond(res) but { error e => log:printError(
15
+ "Error sending response", err = e) };
16
+ }
17
+ }
@@ -0,0 +1,10 @@
1
+ import ballerina/http;
2
+ import ballerina/log;
3
+
4
+ // By default, Ballerina exposes a service via HTTP/1.1.
5
+ service<http:Service> hello bind { port: 9090 } {
6
+
7
+ // Invoke all resources with arguments of server connector and request.
8
+ sayHello(endpoint caller, http:Request req) {
9
+ }
10
+ }
@@ -0,0 +1,3 @@
1
+ // Invoke the service using "curl".
2
+ $ curl http://localhost:9090/hello/sayHello
3
+ Hello, World!
@@ -0,0 +1,3 @@
1
+ // In Ballerina, services represent collections of network accessible entry points.
2
+ // Resources represent one such entry point.
3
+ // How a resource is exposed over a network protocol depends on the listener that binds the service.
@@ -0,0 +1,12 @@
1
+ # To start the service, navigate to the directory that contains the
2
+ # `.bal` file and use the `ballerina run` command.
3
+ $ ballerina run hello_world_service.bal
4
+ ballerina: initiating service(s) in 'hello_world_service.bal'
5
+ ballerina: started HTTP/WS server connector 0.0.0.0:9090
6
+
7
+ # To build a compiled program file, use the
8
+ # `ballerina build` command followed by
9
+ # the service package.
10
+ $ ballerina build hello_world_service.bal
11
+ $ ls
12
+ hello_world_service.balx hello_world_service.bal
@@ -0,0 +1,36 @@
1
+ import ballerina/test;
2
+ import ballerina/io;
3
+ import ballerina/http;
4
+
5
+ boolean serviceStarted;
6
+
7
+ function startService() {
8
+ serviceStarted = test:startServices("hello-world-service");
9
+ }
10
+
11
+ @test:Config {
12
+ before: "startService",
13
+ after: "stopService"
14
+ }
15
+ function testFunc() {
16
+ // Invoking the main function
17
+ endpoint http:Client httpEndpoint { url: "http://localhost:9090" };
18
+ // Chck whether the server is started
19
+ test:assertTrue(serviceStarted, msg = "Unable to start the service");
20
+
21
+ string response1 = "Hello, World!";
22
+
23
+ // Send a GET request to the specified endpoint
24
+ var response = httpEndpoint->get("/hello/sayHello");
25
+ match response {
26
+ http:Response resp => {
27
+ var res = check resp.getTextPayload();
28
+ test:assertEquals(res, response1);
29
+ }
30
+ error err => test:assertFail(msg = "Failed to call the endpoint:");
31
+ }
32
+ }
33
+
34
+ function stopService() {
35
+ test:stopServices("hello-world-service");
36
+ }
@@ -0,0 +1,5 @@
1
+ import ballerina/io;
2
+
3
+ function main(string... args) {
4
+ io:println("Hello, World!");
5
+ }
@@ -0,0 +1,21 @@
1
+ # Hello World
2
+
3
+ The classical introductory exercise. Just say "Hello, World!".
4
+
5
+ ["Hello, World!"](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program) is
6
+ the traditional first program for beginning programming in a new language
7
+ or environment.
8
+
9
+ The objectives are simple:
10
+
11
+ - Write a function that returns the string "Hello, World!".
12
+ - Run the test suite and make sure that it succeeds.
13
+ - Submit your solution and check it at the website.
14
+
15
+ If everything goes well, you will be ready to fetch your first real exercise.
16
+ ## Source
17
+
18
+ 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)
19
+
20
+ ## Submitting Incomplete Solutions
21
+ It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -0,0 +1,6 @@
1
+ import ballerina/io;
2
+
3
+ function main(string... args) {
4
+ error err = { message:"Empyt Message" };
5
+ throw err;
6
+ }
@@ -0,0 +1,22 @@
1
+ import ballerina/test;
2
+ import ballerina/io;
3
+
4
+ any[] outputs = [];
5
+ int counter = 0;
6
+
7
+ // This is the mock function which will replace the real function
8
+ @test:Mock {
9
+ packageName: "ballerina.io",
10
+ functionName: "println"
11
+ }
12
+ public function mockPrint(any... s) {
13
+ outputs[counter] = s[0];
14
+ counter++;
15
+ }
16
+
17
+ @test:Config
18
+ function testFunc() {
19
+ // Invoking the main function
20
+ main();
21
+ test:assertEquals("Hello, World!", outputs[0]);
22
+ }
@@ -0,0 +1,30 @@
1
+ #!/bin/bash
2
+
3
+
4
+ for dir in ./*/
5
+ do
6
+ dir=${dir%*/}
7
+ test_name=${dir##*/}
8
+ echo $test_name
9
+
10
+ if [ -d temp_test ]; then
11
+ echo "Cleaning temp files..."
12
+ rm -r temp_test
13
+ fi
14
+
15
+ mkdir temp_test
16
+ cp -r $test_name ./temp_test
17
+ rm -r ./temp_test/$test_name/.meta
18
+ cp -r $test_name/.meta/reference/* ./temp_test/$test_name
19
+ cp -r ./.ballerina ./temp_test
20
+ cd ./temp_test
21
+ ballerina init
22
+ ballerina test $test_name
23
+ cd ..
24
+ rm -r temp_test
25
+
26
+
27
+
28
+
29
+ done
30
+
@@ -1 +1 @@
1
- 1.0.1
1
+ 1.1.0
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.0
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.0
@@ -1 +1 @@
1
- 1.1.0
1
+ 1.2.0
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.0
@@ -1 +1 @@
1
- 1.1.0
1
+ 1.2.0
@@ -1,4 +1,28 @@
1
1
  Function Get-BobResponse() {
2
+ <#
3
+ .SYNOPSIS
4
+ Bob is a lackadaisical teenager. In conversation, his responses are very limited.
5
+
6
+ .DESCRIPTION
7
+ Bob is a lackadaisical teenager. In conversation, his responses are very limited.
8
+
9
+ Bob answers 'Sure.' if you ask him a question.
10
+
11
+ He answers 'Whoa, chill out!' if you yell at him.
12
+
13
+ He answers 'Calm down, I know what I'm doing!' if you yell a question at him.
14
+
15
+ He says 'Fine. Be that way!' if you address him without actually saying
16
+ anything.
17
+
18
+ He answers 'Whatever.' to anything else.
19
+
20
+ .PARAMETER HeyBob
21
+ The sentence you say to Bob.
22
+
23
+ .EXAMPLE
24
+ Get-BobResponse -HeyBob "Hi Bob"
25
+ #>
2
26
  [CmdletBinding()]
3
27
  Param(
4
28
  [string]$HeyBob
@@ -1,4 +1,28 @@
1
1
  Function Get-BobResponse() {
2
+ <#
3
+ .SYNOPSIS
4
+ Bob is a lackadaisical teenager. In conversation, his responses are very limited.
5
+
6
+ .DESCRIPTION
7
+ Bob is a lackadaisical teenager. In conversation, his responses are very limited.
8
+
9
+ Bob answers 'Sure.' if you ask him a question.
10
+
11
+ He answers 'Whoa, chill out!' if you yell at him.
12
+
13
+ He answers 'Calm down, I know what I'm doing!' if you yell a question at him.
14
+
15
+ He says 'Fine. Be that way!' if you address him without actually saying
16
+ anything.
17
+
18
+ He answers 'Whatever.' to anything else.
19
+
20
+ .PARAMETER HeyBob
21
+ The sentence you say to Bob.
22
+
23
+ .EXAMPLE
24
+ Get-BobResponse -HeyBob "Hi Bob"
25
+ #>
2
26
  [CmdletBinding()]
3
27
  Param(
4
28
  [string]$HeyBob
@@ -1,4 +1,31 @@
1
1
  function Get-HammingDifference([string]$strand1, [string]$strand2) {
2
+ <#
3
+ .SYNOPSIS
4
+ Calculate the Hamming difference between two DNA strands.
5
+
6
+ .DESCRIPTION
7
+ By counting the number of differences between two homologous DNA strands
8
+ taken from different genomes with a common ancestor, we get a measure of
9
+ the minimum number of point mutations that could have occurred on the
10
+ evolutionary path between the two strands.
11
+
12
+ This is called the 'Hamming distance'.
13
+
14
+ It is found by comparing two DNA strands and counting how many of the
15
+ nucleotides are different from their equivalent in the other string.
16
+
17
+ .PARAMETER strand1
18
+ The first DNA strand
19
+
20
+ .PARAMETER strand2
21
+ The second DNA strand
22
+
23
+ .EXAMPLE
24
+ Get-HammingDifference -strand1 "GAGCCTACTAACGGGAT" -strand2 "CATCGTAATGACGGCCT"
25
+
26
+ This will return a difference of 7.
27
+ #>
28
+
2
29
  if ( $strand1.length -ne $strand2.length) {
3
30
  Throw "Mismatching string lengths"
4
31
  }
@@ -1,3 +1,30 @@
1
1
  function Get-HammingDifference([string]$strand1, [string]$strand2) {
2
+ <#
3
+ .SYNOPSIS
4
+ Calculate the Hamming difference between two DNA strands.
5
+
6
+ .DESCRIPTION
7
+ By counting the number of differences between two homologous DNA strands
8
+ taken from different genomes with a common ancestor, we get a measure of
9
+ the minimum number of point mutations that could have occurred on the
10
+ evolutionary path between the two strands.
11
+
12
+ This is called the 'Hamming distance'.
13
+
14
+ It is found by comparing two DNA strands and counting how many of the
15
+ nucleotides are different from their equivalent in the other string.
16
+
17
+ .PARAMETER strand1
18
+ The first DNA strand
19
+
20
+ .PARAMETER strand2
21
+ The second DNA strand
22
+
23
+ .EXAMPLE
24
+ Get-HammingDifference -strand1 "GAGCCTACTAACGGGAT" -strand2 "CATCGTAATGACGGCCT"
25
+
26
+ This will return a difference of 7.
27
+ #>
28
+
2
29
  Throw "Exercise not implemented"
3
30
  }
@@ -1,4 +1,17 @@
1
1
  function Get-HelloWorld {
2
+ <#
3
+ .SYNOPSIS
4
+ Outputs "Hello World"
5
+
6
+ .DESCRIPTION
7
+ Output "Hello World" or "Hello <Name>" if Name is supplied to the CmdLet.
8
+
9
+ .PARAMETER person
10
+ Name of the person to display. If not supplied, Hello World should be displayed
11
+
12
+ .EXAMPLE
13
+ Get-HelloWorld
14
+ #>
2
15
  param( [string]$person = "World")
3
16
 
4
17
  return "Hello, $person!"
@@ -1,4 +1,17 @@
1
1
  function Get-HelloWorld {
2
+ <#
3
+ .SYNOPSIS
4
+ Outputs "Hello World"
5
+
6
+ .DESCRIPTION
7
+ Output "Hello World" or "Hello <Name>" if Name is supplied to the CmdLet.
8
+
9
+ .PARAMETER person
10
+ Name of the person to display. If not supplied, Hello World should be displayed
11
+
12
+ .EXAMPLE
13
+ Get-HelloWorld
14
+ #>
2
15
  param([string]$person = "World")
3
16
 
4
17
  Throw "Exercise not implemented"
@@ -1,5 +1,32 @@
1
1
  function Test-LeapYear {
2
+ <#
3
+ .SYNOPSIS
4
+ Given a year, report if it is a leap year.
5
+
6
+ .DESCRIPTION
7
+ Calculate whether the supplied year is a leap year. A leap year is determined from the following
8
+ calculation:
9
+
10
+ on every year that is evenly divisible by 4
11
+ except every year that is evenly divisible by 100
12
+ unless the year is also evenly divisible by 400
13
+
14
+ .PARAMETER year
15
+ The year to test
16
+
17
+ .EXAMPLE
18
+ Test-LeapYear -year 2018
19
+
20
+ Returns false
21
+
22
+ .EXAMPLE
23
+ Test-LeapYear -year 2020
24
+
25
+ Returns True
26
+ #>
27
+
2
28
  param( [int]$year )
29
+
3
30
  # This could be solved using the native system.datetime object
4
31
  # but that isn't in the spirit of exercism.
5
32
  #[system.datetime]::isleapyear($year)
@@ -1,4 +1,29 @@
1
1
  function Test-LeapYear {
2
+ <#
3
+ .SYNOPSIS
4
+ Given a year, report if it is a leap year.
5
+
6
+ .DESCRIPTION
7
+ Calculate whether the supplied year is a leap year. A leap year is determined from the following
8
+ calculation:
9
+
10
+ on every year that is evenly divisible by 4
11
+ except every year that is evenly divisible by 100
12
+ unless the year is also evenly divisible by 400
13
+
14
+ .PARAMETER year
15
+ The year to test
16
+
17
+ .EXAMPLE
18
+ Test-LeapYear -year 2018
19
+
20
+ Returns false
21
+
22
+ .EXAMPLE
23
+ Test-LeapYear -year 2020
24
+
25
+ Returns True
26
+ #>
2
27
  param( [int]$year )
3
28
 
4
29
  Throw "Exercise not implemented"
@@ -1,4 +1,25 @@
1
1
  Function Get-NucleotideCount() {
2
+ <#
3
+ .SYNOPSIS
4
+ Given a single stranded DNA string, compute how many times each nucleotide occurs in the string.
5
+
6
+ .DESCRIPTION
7
+ The genetic language of every living thing on the planet is DNA.
8
+ DNA is a large molecule that is built from an extremely long sequence of individual elements called nucleotides.
9
+ 4 types exist in DNA and these differ only slightly and can be represented as the following symbols: 'A' for adenine, 'C' for cytosine, 'G' for guanine, and 'T' thymine.
10
+
11
+ The function counts the occurances of A, C, G and T in the supplied strand. It then outputs in the format:
12
+
13
+ A:0, C:0, G:0, T:0
14
+
15
+ .PARAMETER Strand
16
+ The DNA strand to count
17
+
18
+ .EXAMPLE
19
+ Get-NucleotideCount -Strand "ACGTAGCTT"
20
+
21
+ Retuns: A:2 C:2 G:2 T:3
22
+ #>
2
23
  [CmdletBinding()]
3
24
  Param(
4
25
  [string]$Strand = ""
@@ -1,4 +1,25 @@
1
1
  Function Get-NucleotideCount() {
2
+ <#
3
+ .SYNOPSIS
4
+ Given a single stranded DNA string, compute how many times each nucleotide occurs in the string.
5
+
6
+ .DESCRIPTION
7
+ The genetic language of every living thing on the planet is DNA.
8
+ DNA is a large molecule that is built from an extremely long sequence of individual elements called nucleotides.
9
+ 4 types exist in DNA and these differ only slightly and can be represented as the following symbols: 'A' for adenine, 'C' for cytosine, 'G' for guanine, and 'T' thymine.
10
+
11
+ The function counts the occurances of A, C, G and T in the supplied strand. It then outputs in the format:
12
+
13
+ A:0, C:0, G:0, T:0
14
+
15
+ .PARAMETER Strand
16
+ The DNA strand to count
17
+
18
+ .EXAMPLE
19
+ Get-NucleotideCount -Strand "ACGTAGCTT"
20
+
21
+ Retuns: A:2 C:2 G:2 T:3
22
+ #>
2
23
  [CmdletBinding()]
3
24
  Param(
4
25
  [string]$Strand
@@ -1,4 +1,29 @@
1
1
  Function Get-Raindrops() {
2
+ <#
3
+ .SYNOPSIS
4
+ Given a number convert it to Pling, Plang, Plong if it has factors of 3, 5 or 7.
5
+
6
+ .DESCRIPTION
7
+ Convert a number to a string, the contents of which depend on the number's factors.
8
+
9
+ - If the number has 3 as a factor, output 'Pling'.
10
+ - If the number has 5 as a factor, output 'Plang'.
11
+ - If the number has 7 as a factor, output 'Plong'.
12
+ - If the number does not have 3, 5, or 7 as a factor, just pass the number's digits straight through.
13
+
14
+ .PARAMETER Rain
15
+ The number to evaluate
16
+
17
+ .EXAMPLE
18
+ Get-Raindrops -Rain 35
19
+
20
+ This will return PlangPlong as it has factors of 5 and 7
21
+
22
+ .EXAMPLE
23
+ Get-Raindrops -Rain 12121
24
+
25
+ This will return 12121 as it does not contain factors of 3, 5 or 7 so the value is passed through.
26
+ #>
2
27
  [CmdletBinding()]
3
28
  Param(
4
29
  [int]$Rain
@@ -1,4 +1,29 @@
1
1
  Function Get-Raindrops() {
2
+ <#
3
+ .SYNOPSIS
4
+ Given a number convert it to Pling, Plang, Plong if it has factors of 3, 5 or 7.
5
+
6
+ .DESCRIPTION
7
+ Convert a number to a string, the contents of which depend on the number's factors.
8
+
9
+ - If the number has 3 as a factor, output 'Pling'.
10
+ - If the number has 5 as a factor, output 'Plang'.
11
+ - If the number has 7 as a factor, output 'Plong'.
12
+ - If the number does not have 3, 5, or 7 as a factor, just pass the number's digits straight through.
13
+
14
+ .PARAMETER Rain
15
+ The number to evaluate
16
+
17
+ .EXAMPLE
18
+ Get-Raindrops -Rain 35
19
+
20
+ This will return PlangPlong as it has factors of 5 and 7
21
+
22
+ .EXAMPLE
23
+ Get-Raindrops -Rain 12121
24
+
25
+ This will return 12121 as it does not contain factors of 3, 5 or 7 so the value is passed through.
26
+ #>
2
27
  [CmdletBinding()]
3
28
  Param(
4
29
  [int]$Rain
@@ -1,17 +1,24 @@
1
- <#
2
- .SYNOPSIS
3
- Reverse a string
1
+ Function Get-ReverseString {
2
+ <#
3
+ .SYNOPSIS
4
+ Reverse a string
4
5
 
5
- .DESCRIPTION
6
- Reverses the string in its entirety. That is it does not reverse each word in a string individually.
6
+ .DESCRIPTION
7
+ Reverses the string in its entirety. That is it does not reverse each word in a string individually.
7
8
 
8
- .PARAMETER Forward
9
- The string to be reversed
9
+ .PARAMETER Forward
10
+ The string to be reversed
10
11
 
11
- .EXAMPLE
12
- Get-ReverseString "PowerShell"
13
- #>
14
- Function Get-ReverseString {
12
+ .EXAMPLE
13
+ Get-ReverseString "PowerShell"
14
+
15
+ This will return llehSrewoP
16
+
17
+ .EXAMPLE
18
+ Get-ReverseString "racecar"
19
+
20
+ This will return racecar as it is a palindrome
21
+ #>
15
22
  [CmdletBinding()]
16
23
  Param(
17
24
  [Parameter(Position=1, ValueFromPipeline=$true)]
@@ -1,16 +1,24 @@
1
- <#
2
- .SYNOPSIS
3
- Reverse a string
1
+ Function Get-ReverseString {
2
+ <#
3
+ .SYNOPSIS
4
+ Reverse a string
4
5
 
5
- .DESCRIPTION
6
- Reverses the string in its entirety. That is it does not reverse each word in a string individually.
6
+ .DESCRIPTION
7
+ Reverses the string in its entirety. That is it does not reverse each word in a string individually.
7
8
 
8
- .PARAMETER Forward
9
- The string to be reversed
9
+ .PARAMETER Forward
10
+ The string to be reversed
10
11
 
11
- .EXAMPLE
12
- Get-ReverseString "PowerShell"
13
- #>Function Get-ReverseString {
12
+ .EXAMPLE
13
+ Get-ReverseString "PowerShell"
14
+
15
+ This will return llehSrewoP
16
+
17
+ .EXAMPLE
18
+ Get-ReverseString "racecar"
19
+
20
+ This will return racecar as it is a palindrome
21
+ #>
14
22
  [CmdletBinding()]
15
23
  Param(
16
24
  [Parameter(Position=1, ValueFromPipeline=$true)]
@@ -1,22 +1,24 @@
1
- <#
2
- .SYNOPSIS
3
- Given a number, find the sum of all the unique multiples of particular numbers up to
4
- but not including that number.
1
+ Function Get-SumOfMultiples {
2
+ <#
3
+ .SYNOPSIS
4
+ Given a number, find the sum of all the unique multiples of particular numbers up to
5
+ but not including that number.
5
6
 
6
- .DESCRIPTION
7
- If we list all the natural numbers below 20 that are multiples of 3 or 5,
8
- we get 3, 5, 6, 9, 10, 12, 15, and 18.
7
+ .DESCRIPTION
8
+ If we list all the natural numbers below 20 that are multiples of 3 or 5,
9
+ we get 3, 5, 6, 9, 10, 12, 15, and 18.
9
10
 
10
- .PARAMETER Multiples
11
- An array of the factors
11
+ .PARAMETER Multiples
12
+ An array of the factors
12
13
 
13
- .PARAMETER Limit
14
- The value BELOW which we test for
14
+ .PARAMETER Limit
15
+ The value BELOW which we test for
15
16
 
16
- .EXAMPLE
17
- Get-SumOfMultiples -Multiples @(3, 5) -Limit 10
18
- #>
19
- Function Get-SumOfMultiples {
17
+ .EXAMPLE
18
+ Get-SumOfMultiples -Multiples @(3, 5) -Limit 10
19
+
20
+ Returns 23
21
+ #>
20
22
  [CmdletBinding()]
21
23
  Param(
22
24
  [int[]]$Multiples,
@@ -1,22 +1,24 @@
1
- <#
2
- .SYNOPSIS
3
- Given a number, find the sum of all the unique multiples of particular numbers up to
4
- but not including that number.
1
+ Function Get-SumOfMultiples {
2
+ <#
3
+ .SYNOPSIS
4
+ Given a number, find the sum of all the unique multiples of particular numbers up to
5
+ but not including that number.
5
6
 
6
- .DESCRIPTION
7
- If we list all the natural numbers below 20 that are multiples of 3 or 5,
8
- we get 3, 5, 6, 9, 10, 12, 15, and 18.
7
+ .DESCRIPTION
8
+ If we list all the natural numbers below 20 that are multiples of 3 or 5,
9
+ we get 3, 5, 6, 9, 10, 12, 15, and 18.
9
10
 
10
- .PARAMETER Multiples
11
- An array of the factors
11
+ .PARAMETER Multiples
12
+ An array of the factors
12
13
 
13
- .PARAMETER Limit
14
- The value BELOW which we test for
14
+ .PARAMETER Limit
15
+ The value BELOW which we test for
15
16
 
16
- .EXAMPLE
17
- Get-SumOfMultiples -Multiples @(3, 5) -Limit 10
18
- #>
19
- Function Get-SumOfMultiples {
17
+ .EXAMPLE
18
+ Get-SumOfMultiples -Multiples @(3, 5) -Limit 10
19
+
20
+ Returns 23
21
+ #>
20
22
  [CmdletBinding()]
21
23
  Param(
22
24
  [int[]]$Multiples,
@@ -1,4 +1,25 @@
1
1
  Function Get-TwoFer(){
2
+ <#
3
+ .SYNOPSIS
4
+ "Two-fer" is short for two for one. One for you and one for me.
5
+
6
+ .DESCRIPTION
7
+ If the given name is "Alice", the result should be "One for Alice, one for me."
8
+ If no name is given, the result should be "One for you, one for me."
9
+
10
+ .PARAMETER Name
11
+ The name to use.
12
+
13
+ .EXAMPLE
14
+ Get-TwoFer
15
+
16
+ Will return: One for you, one for me
17
+
18
+ .EXAMPLE
19
+ Get-TwoFer -Name Alice
20
+
21
+ Will return: One for Alice, one for me
22
+ #>
2
23
  [CmdletBinding()]
3
24
  Param(
4
25
  [Parameter(Mandatory=$false, Position=0)]
@@ -1,4 +1,25 @@
1
1
  Function Get-TwoFer(){
2
+ <#
3
+ .SYNOPSIS
4
+ "Two-fer" is short for two for one. One for you and one for me.
5
+
6
+ .DESCRIPTION
7
+ If the given name is "Alice", the result should be "One for Alice, one for me."
8
+ If no name is given, the result should be "One for you, one for me."
9
+
10
+ .PARAMETER Name
11
+ The name to use.
12
+
13
+ .EXAMPLE
14
+ Get-TwoFer
15
+
16
+ Will return: One for you, one for me
17
+
18
+ .EXAMPLE
19
+ Get-TwoFer -Name Alice
20
+
21
+ Will return: One for Alice, one for me
22
+ #>
2
23
  [CmdletBinding()]
3
24
  Param(
4
25
  [Parameter(Mandatory=$true, Position=0)]
@@ -417,6 +417,8 @@
417
417
  {
418
418
  "slug": "crypto-square",
419
419
  "uuid": "0cc485e9-43ba-4d97-a622-ee4cb8b9f1f7",
420
+ "core": false,
421
+ "unlocked_by": null,
420
422
  "difficulty": 4,
421
423
  "topics": [
422
424
  "arrays",
@@ -1003,12 +1005,20 @@
1003
1005
  {
1004
1006
  "slug": "nucleotide-codons",
1005
1007
  "uuid": "8dae8f4d-368d-477d-907e-bf746921bfbf",
1008
+ "core": false,
1009
+ "unlocked_by": null,
1010
+ "difficulty": 0,
1011
+ "topics": null,
1006
1012
  "deprecated": true
1007
1013
  },
1008
1014
  {
1009
1015
  "slug": "hexadecimal",
1010
1016
  "uuid": "496fd79f-1678-4aa2-8110-c32c6aaf545e",
1017
+ "core": false,
1018
+ "unlocked_by": null,
1019
+ "difficulty": 0,
1020
+ "topics": null,
1011
1021
  "deprecated": true
1012
1022
  }
1013
1023
  ]
1014
- }
1024
+ }
@@ -1,59 +1,65 @@
1
1
  {
2
+ "docs_url": "",
2
3
  "maintainers": [
3
4
  {
4
- "alumnus": false,
5
- "avatar_url": null,
6
- "bio": null,
7
5
  "github_username": "IanWhitney",
6
+ "alumnus": false,
7
+ "show_on_website": false,
8
+ "name": null,
8
9
  "link_text": null,
9
10
  "link_url": null,
10
- "name": null,
11
- "show_on_website": false
11
+ "avatar_url": null,
12
+ "bio": null
12
13
  },
13
14
  {
14
- "alumnus": true,
15
15
  "github_username": "etrepum",
16
- "show_on_website": false
16
+ "alumnus": true,
17
+ "show_on_website": false,
18
+ "name": null,
19
+ "link_text": null,
20
+ "link_url": null,
21
+ "avatar_url": null,
22
+ "bio": null
17
23
  },
18
24
  {
19
- "alumnus": false,
20
- "avatar_url": null,
21
- "bio": null,
22
25
  "github_username": "ijanos",
26
+ "alumnus": false,
27
+ "show_on_website": false,
28
+ "name": null,
23
29
  "link_text": null,
24
30
  "link_url": null,
25
- "name": null,
26
- "show_on_website": false
31
+ "avatar_url": null,
32
+ "bio": null
27
33
  },
28
34
  {
29
- "alumnus": false,
30
- "avatar_url": null,
31
- "bio": null,
32
35
  "github_username": "petertseng",
36
+ "alumnus": false,
37
+ "show_on_website": false,
38
+ "name": null,
33
39
  "link_text": null,
34
40
  "link_url": null,
35
- "name": null,
36
- "show_on_website": false
41
+ "avatar_url": null,
42
+ "bio": null
37
43
  },
38
44
  {
39
- "alumnus": false,
40
- "avatar_url": null,
41
- "bio": null,
42
45
  "github_username": "EduardoBautista",
46
+ "alumnus": false,
47
+ "show_on_website": false,
48
+ "name": null,
43
49
  "link_text": null,
44
50
  "link_url": null,
45
- "name": null,
46
- "show_on_website": false
51
+ "avatar_url": null,
52
+ "bio": null
47
53
  },
48
54
  {
49
- "alumnus": false,
50
- "avatar_url": null,
51
- "bio": null,
52
55
  "github_username": "coriolinus",
56
+ "alumnus": false,
57
+ "show_on_website": false,
58
+ "name": null,
53
59
  "link_text": null,
54
60
  "link_url": null,
55
- "name": null,
56
- "show_on_website": false
61
+ "avatar_url": null,
62
+ "bio": null
57
63
  }
58
64
  ]
59
- }
65
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trackler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1.169
4
+ version: 2.2.1.170
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-18 00:00:00.000000000 Z
11
+ date: 2018-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -612,6 +612,18 @@ files:
612
612
  - tracks/ballerina/docs/LEARNING.md
613
613
  - tracks/ballerina/docs/RESOURCES.md
614
614
  - tracks/ballerina/docs/TESTS.md
615
+ - tracks/ballerina/exercises/.ballerina/.gitignore
616
+ - tracks/ballerina/exercises/hello-world-service/.meta/reference/hello_world_service.bal
617
+ - tracks/ballerina/exercises/hello-world-service/hello_world_service.bal
618
+ - tracks/ballerina/exercises/hello-world-service/hello_world_service.client.out
619
+ - tracks/ballerina/exercises/hello-world-service/hello_world_service.description
620
+ - tracks/ballerina/exercises/hello-world-service/hello_world_service.server.out
621
+ - tracks/ballerina/exercises/hello-world-service/tests/hello_world_service_test.bal
622
+ - tracks/ballerina/exercises/hello-world/.meta/reference/hello_world.bal
623
+ - tracks/ballerina/exercises/hello-world/README.md
624
+ - tracks/ballerina/exercises/hello-world/hello_world.bal
625
+ - tracks/ballerina/exercises/hello-world/tests/hello_world_test.bal
626
+ - tracks/ballerina/exercises/run_ballerina_tests.sh
615
627
  - tracks/ballerina/img/.keep
616
628
  - tracks/bash/.git
617
629
  - tracks/bash/.gitattributes