Skip to content

Commit 4e38900

Browse files
committed
Add "Ordinal Numbers" hole
1 parent 04303a2 commit 4e38900

File tree

5 files changed

+46
-17
lines changed

5 files changed

+46
-17
lines changed

holes.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ Transform
6666
* ISBN Check Digit **TODO**
6767
* Morse Decoder
6868
* Morse Encoder
69+
* Ordinal Numbers
6970
* Pangram Grep
7071
* Roman to Arabic
7172
* Seven Segment

routes/ordinal_numbers.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package routes
2+
3+
import (
4+
"math/rand"
5+
"strconv"
6+
)
7+
8+
func ordinalNumbers() (args []string, out string) {
9+
for _, i := range rand.Perm(200) {
10+
s := strconv.Itoa(i)
11+
12+
args = append(args, s)
13+
out += s + ord(i) + "\n"
14+
}
15+
16+
// Drop the trailing newline.
17+
out = out[:len(out)-1]
18+
19+
return
20+
}

routes/render.go

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,24 @@ import (
1414
"github.com/JRaspass/code-golf/cookie"
1515
)
1616

17+
func ord(i int) string {
18+
switch i % 10 {
19+
case 1:
20+
if i%100 != 11 {
21+
return "st"
22+
}
23+
case 2:
24+
if i%100 != 12 {
25+
return "nd"
26+
}
27+
case 3:
28+
if i%100 != 13 {
29+
return "rd"
30+
}
31+
}
32+
return "th"
33+
}
34+
1735
var tmpl = template.New("").Funcs(template.FuncMap{
1836
// NOTE Only handles 0 - 999,999
1937
"comma": func(i int) string {
@@ -23,23 +41,7 @@ var tmpl = template.New("").Funcs(template.FuncMap{
2341

2442
return strconv.Itoa(i)
2543
},
26-
"ord": func(i int) string {
27-
switch i % 10 {
28-
case 1:
29-
if i%100 != 11 {
30-
return "st"
31-
}
32-
case 2:
33-
if i%100 != 12 {
34-
return "nd"
35-
}
36-
case 3:
37-
if i%100 != 13 {
38-
return "rd"
39-
}
40-
}
41-
return "th"
42-
},
44+
"ord": ord,
4345
})
4446

4547
func init() {

routes/solution.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ func solution(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
4444
args, out.Exp = brainfuck()
4545
case "morse-decoder", "morse-encoder":
4646
args, out.Exp = morse(in.Hole == "morse-decoder")
47+
case "ordinal-numbers":
48+
args, out.Exp = ordinalNumbers()
4749
case "pangram-grep":
4850
args, out.Exp = pangramGrep()
4951
case "poker":

routes/types.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,10 @@ A Partridge in a Pear Tree.</blockquote>`,
248248
"", "",
249249
"odious-numbers", "Odious Numbers", "Fast",
250250
"An odious number is a non-negative number that has an odd number of 1s in its binary expansion.<p>Print all the odious numbers from <b>0</b> to <b>50</b> inclusive, each on their own line.<p>Numbers that are not odious are called <a href=evil-numbers>evil numbers</a>.</p>",
251+
}, {
252+
"", "",
253+
"ordinal-numbers", "Ordinal Numbers", "Fast",
254+
"Given various integers as arguments, print the argument and its <a href=//en.wikipedia.org/wiki/Ordinal_number_%28linguistics%29>ordinal suffix</a>.",
251255
}, {
252256
"", "",
253257
"pangram-grep", "Pangram Grep", "Medium",

0 commit comments

Comments
 (0)