Select featured exercises for Apps August

Next month (August), will have the Apps August theme, which will feature a whopping 14 languages:

  • ABAP
  • CoffeeScript
  • Dart
  • Delphi
  • Elm
  • Java
  • JavaScript
  • Kotlin
  • Objective-C
  • PHP
  • PureScript
  • ReasonML
  • Swift
  • TypeScript

Due to the wide variety in languages, selecting exercises with a common them will be impossible, so let’s just try to find some not-too-difficulty exercises that require the least amount of tracks to add them.

This is the list of the shared exercises for those tracks, excluding hello-world and any previously featured exercises (It is likely that we’ll need some exercises to be added):
Note: I’ve excluded any exercises that were implemented by less than 7 tracks

exercise abap coffeescript dart delphi elm java javascript kotlin objective-c php purescript reasonml swift typescript
anagram :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark:
phone-number :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
atbash-cipher :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark:
pascals-triangle :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark:
rna-transcription :x: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
scrabble-score :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark:
triangle :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark:
all-your-base :x: :x: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
beer-song :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :x: :white_check_mark: :white_check_mark:
luhn :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :x: :white_check_mark: :white_check_mark:
nth-prime :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :x: :white_check_mark: :white_check_mark:
crypto-square :white_check_mark: :x: :x: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark:
gigasecond :x: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :x: :white_check_mark: :white_check_mark:
grains :white_check_mark: :x: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :x: :white_check_mark: :white_check_mark:
minesweeper :white_check_mark: :x: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark:
nucleotide-count :x: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :x: :white_check_mark: :white_check_mark:
prime-factors :white_check_mark: :x: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :x: :white_check_mark: :white_check_mark:
run-length-encoding :white_check_mark: :x: :x: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark:
diamond :x: :x: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark:
grade-school :x: :x: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :x: :white_check_mark: :white_check_mark:
resistor-color :white_check_mark: :x: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :x: :white_check_mark: :x: :white_check_mark:
series :x: :x: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :x: :white_check_mark: :white_check_mark:
wordy :x: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :x: :x: :white_check_mark: :white_check_mark:
binary-search-tree :x: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :x: :x: :x: :x: :white_check_mark: :white_check_mark:
darts :white_check_mark: :x: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :x: :x: :x: :white_check_mark:
matrix :white_check_mark: :x: :x: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :x: :x: :white_check_mark: :white_check_mark:
meetup :x: :x: :x: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :x:
perfect-numbers :x: :x: :x: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :x: :white_check_mark: :white_check_mark:
pig-latin :x: :x: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :x: :white_check_mark: :x: :x: :white_check_mark: :white_check_mark:
say :x: :x: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :x: :x: :white_check_mark: :white_check_mark:
transpose :x: :x: :x: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :x: :white_check_mark: :white_check_mark:
bowling :x: :x: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :x: :white_check_mark: :x: :x: :white_check_mark: :white_check_mark:
flatten-array :x: :x: :x: :x: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :x: :white_check_mark: :white_check_mark:
isbn-verifier :x: :x: :white_check_mark: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :x: :x: :x: :x: :white_check_mark: :white_check_mark:
kindergarten-garden :white_check_mark: :x: :x: :white_check_mark: :x: :white_check_mark: :white_check_mark: :white_check_mark: :x: :x: :x: :x: :white_check_mark: :white_check_mark:
palindrome-products :x: :white_check_mark: :x: :white_check_mark: :x: :white_check_mark: :white_check_mark: :x: :x: :white_check_mark: :x: :x: :white_check_mark: :white_check_mark:
queen-attack :x: :white_check_mark: :x: :white_check_mark: :x: :white_check_mark: :white_check_mark: :x: :x: :white_check_mark: :x: :x: :white_check_mark: :white_check_mark:
sublist :x: :x: :x: :x: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark: :x: :x: :x: :white_check_mark: :white_check_mark:
1 Like

The table in form for perhaps easier consumption:
A = abap
C = coffeescript
DA = dart
DE = delphi
E = elm
J = java
JS = javascript
K = kotlin
O = objective-c
PH = php
PU = purescript
R = reasonml
S = swift
T = typescript

exercise             A  C  DA  DE  E  J  JS  K  O  PH  PU  R  S  T
anagram              1  1  1   1   1  1  1   1  1  1   0   1  1  1
phone-number         1  0  1   1   1  1  1   1  1  1   1   1  1  1
atbash-cipher        1  1  0   1   1  1  1   1  1  1   1   0  1  1
pascals-triangle     0  1  1   1   1  1  1   1  1  1   1   0  1  1
rna-transcription    0  0  1   1   1  1  1   1  1  1   1   1  1  1
scrabble-score       1  0  1   1   1  1  1   1  1  1   1   0  1  1
triangle             0  1  1   1   1  1  1   1  1  1   1   0  1  1
all-your-base        0  0  0   1   1  1  1   1  1  1   1   1  1  1
beer-song            1  1  1   1   0  1  1   1  1  1   0   0  1  1
luhn                 0  1  1   1   1  1  1   1  1  1   0   0  1  1
nth-prime            1  1  1   1   0  1  1   1  1  1   0   0  1  1
crypto-square        1  0  0   1   0  1  1   1  1  1   1   0  1  1
gigasecond           0  0  1   1   1  1  1   1  1  1   0   0  1  1
grains               1  0  0   1   1  1  1   1  1  1   0   0  1  1
minesweeper          1  0  1   1   0  1  1   1  0  1   0   1  1  1
nucleotide-count     0  1  0   1   1  1  1   1  1  1   0   0  1  1
prime-factors        1  0  1   1   0  1  1   1  1  1   0   0  1  1
run-length-encoding  1  0  0   0   1  1  1   1  1  1   0   1  1  1
diamond              0  0  1   1   0  1  1   1  0  1   1   0  1  1
grade-school         0  0  0   1   1  1  1   1  1  1   0   0  1  1
resistor-color       1  0  1   1   0  1  1   1  0  1   0   1  0  1
series               0  0  0   1   1  1  1   1  1  1   0   0  1  1
wordy                0  1  0   1   1  1  1   1  0  1   0   0  1  1
binary-search-tree   0  1  1   1   0  1  1   1  0  0   0   0  1  1
darts                1  0  1   1   0  1  1   1  0  1   0   0  0  1
matrix               1  0  0   1   0  1  1   1  0  1   0   0  1  1
meetup               0  0  0   1   0  1  1   1  1  1   1   0  1  0
perfect-numbers      0  0  0   1   0  1  1   1  1  1   0   0  1  1
pig-latin            0  0  1   1   0  1  1   1  0  1   0   0  1  1
say                  0  0  0   1   1  1  1   1  1  0   0   0  1  1
transpose            0  0  0   0   1  1  1   1  1  1   0   0  1  1
bowling              0  0  0   1   1  1  1   0  0  1   0   0  1  1
flatten-array        0  0  0   0   0  1  1   1  1  1   0   0  1  1
isbn-verifier        0  0  1   1   0  1  1   1  0  0   0   0  1  1
kindergarten-garden  1  0  0   1   0  1  1   1  0  0   0   0  1  1
palindrome-products  0  1  0   1   0  1  1   0  0  1   0   0  1  1
queen-attack         0  1  0   1   0  1  1   0  0  1   0   0  1  1
sublist              0  0  0   0   1  1  1   1  1  0   0   0  1  1
3 Likes

If there is a need for a specific exercise for coffescript, can I help with adding that.

As a first attempt, maybe the following 5 exercises would be viable options:

  • anagram: missing in PureScript
  • phone-number: missing CoffeeScript
  • triangle: missing in ABAP and ReasonML
  • rna-transcription: missing in ABAP and CoffeeScript
  • scrabble-score: missing in CoffeeScript and ReasonML

This gives the student a nice mixture of strings (anagram, phone-number, rna-transcription, scrabble-score), numbers (triangle, scrabble-score), possibly using regular expressions (anagram, phone number), iteration (rna-transcription, scrabble-score) and collections (scrabble-score).

Thoughts?

I’m adding anagram to the PureScript track: Add `anagram` exercise by ErikSchierboom · Pull Request #271 · exercism/purescript · GitHub

  • anagram
  • phone-number
  • triangle
  • rna-transcription
  • scrabble-score

Are these featured exercises locked-in for August?

They are! Unless there are any big objections.

That would mean we would still need the following exercises:

  • abap:
    rna-transcription , triangle

  • reasonml:
    scrabble-score, triangle

1 Like

I did Coffeescript in the beginning of the month so all of them can be crossed out.

And Erik did purescript

Yes. I don’t think I can do ABAP and I haven’t had time for ReasonML. If any can help, it would be much appreciated!

1 Like

I’ve done triangle & @Meatball has done scrabble-score for ReasonML.

But there is still a timeout issue for the ReasonML test runner. Nothing will run when submitted via the website.

I’ve been trying to troubleshoot it, but I can’t even get the docker container to pick up and test a solution locally at the moment - everything always fails. I will continue to poke at it.

2 Likes

Working on the ABAP exercises.

@ErikSchierboom Done - Triangle and RNA Transcription

3 Likes

I love this. Every month the community comes together to help fill the gaps. Great teamwork!

3 Likes

Hi @ErikSchierboom ,

I was hoping the ABAP PR, posted above, might be looked at ?

I included it by re-editing the original post, but perhaps that means no notification is sent ?

Thank you.

@ajborla Merged!

The triangle PR has been merged! Thanks.

1 Like

Thank you ! A quick question: Is authorship recognized via a batch job, or is it done when the PR is merged ? If the latter, it does not appear to have occurred in this instance.

Thanks for alerting us. There was a race condition. I’ve fixed it with a PR here: Fix race condition in creating reputation tokens by iHiD · Pull Request #5874 · exercism/website · GitHub

@ErikSchierboom I think our daily resync jobs probably catch this fine, but I just thought I’d mention it for you to double-check :slight_smile: