chore: add hackerrank solutions
This commit is contained in:
parent
3c9af95ec4
commit
04bbac8559
11
aoc2023/day21/example.txt
Normal file
11
aoc2023/day21/example.txt
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
...........
|
||||||
|
.....###.#.
|
||||||
|
.###.##..#.
|
||||||
|
..#.#...#..
|
||||||
|
....#.#....
|
||||||
|
.##..S####.
|
||||||
|
.##..#...#.
|
||||||
|
.......##..
|
||||||
|
.##.#.####.
|
||||||
|
.##..##.##.
|
||||||
|
...........
|
131
aoc2023/day21/input.txt
Normal file
131
aoc2023/day21/input.txt
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
...................................................................................................................................
|
||||||
|
.#.......#..#...#.......#......#....#..#...#...#....#.#..........................................#...............#..........#......
|
||||||
|
.............##..................#......#.#....#.......................##..#........................#......#..........#............
|
||||||
|
......#..........................#....#.....#.............#................##....#.#.............#.........#.##...........#........
|
||||||
|
.#................#............................#...........................#..##.....#..................#..##..#.#.........##......
|
||||||
|
.....#.............#.....##.............##..........#...........#.............#.....#...........#.#.......#....#......#..........#.
|
||||||
|
........#....................#....#.#.#......##........#...........#...........#..........#...#..........#......................#..
|
||||||
|
.........#.#...#.......#........#........##...#...#..##........................................##...#.#........................#...
|
||||||
|
......#.....#..#..#.#..#..............#...#..#.....#...........#.....#........#.#...........#...........#.#...............#.....#..
|
||||||
|
...........#.......####..#.#..............##................#.#.#.....................##.....................#...#..............#..
|
||||||
|
......###...#......#................##...#...#....#...........#...#..............#.........#..#..................................#.
|
||||||
|
...............#..##..........#...........................##......#.##.........................#..#.#...........#.#...........#....
|
||||||
|
...##........#...#...#...##...##...........#..#...................#...................#.#..#.........#.......#..#...........##...#.
|
||||||
|
................#.....#..##......#.....#.....##............#..#..........##...........................#.#.......##.....#.....#.....
|
||||||
|
.#..#.......#.#...#..##.....#............................#......#...#....#................#.#..#.....#.......##................#...
|
||||||
|
...............#.....#........................#..........#.....#..............................................#..................#.
|
||||||
|
.....#......#..........................................#....................................#..#.......#.#..#......#.#....#..##....
|
||||||
|
............##............#.......###.......................#..#....#......................................#..#.........#..........
|
||||||
|
..#...............#.....#...#...#......................#...#.#..............................#.#..#.#.....#.#.#..#....#.....#...##..
|
||||||
|
.#.............................##.................#.......#.......##....#....................#.....#.#........#.....#........#.....
|
||||||
|
.#....##...................##.....#.#..............#.#....#....#..#....#......#..........#.....##............#....#.............##.
|
||||||
|
.........#....#.....#..#.........#....#.#..........#...#...#.......#....#..##.......................#.#..#........#..#....#..#.#...
|
||||||
|
..#..................#.......#..#.#..............##.......#........#..............#.........#..#....#......#..#..........#.........
|
||||||
|
........#.....#......#.....#......#...#.......#....#.......#.#..#................#....................##.............#.......#.....
|
||||||
|
..#.................#..............#...........................................#.....#..................#...#.#..................#.
|
||||||
|
.......#......#.....#...........................#.....#..................#.....................#.....#.#......#........#.#.......#.
|
||||||
|
..#.#.#...................#...#..#................#....#.......#......................#...............#.........##...#.#.....###...
|
||||||
|
.....#...#....##....#........####...........#.................#...#...........................................#..............##....
|
||||||
|
..##.#..#.#..........#.#.#..#................................#..#.............#..#......#...........................#.##...........
|
||||||
|
..............#.............................##........#..##........................#.............................#........#........
|
||||||
|
........#.........#........#..#........#..#........#...#.#........#...........#.........................#.#..........#...#......#..
|
||||||
|
.........##.....#........#.....................#..#.............#.....#........#....................#....#.#.#......#.....#........
|
||||||
|
......................#...................####..#.........#....#.........#...........#..................#..#.................#.....
|
||||||
|
..#.........#...#.....##................##.##....#.....#....#..............................#..#.............#..#...................
|
||||||
|
..........##......#..#..............#.#....#......#................#.....#....#..............#..................#..................
|
||||||
|
.#.#..####...#....................#.#.#.....#...#...................#....#.#.....#.#.......#.#...........#......#.#................
|
||||||
|
.......#.........#..#.#..............###.......#....#.........................#.......#.###...#............#....#.#..#....###.#....
|
||||||
|
........#....#...#......#.................#..........................#.........................#...........##.............#.#......
|
||||||
|
.#..............#.....................#......#.............##............#..#..........#...................#...#....#..............
|
||||||
|
......#..#..#.#...............#........###.......#.#...........#...........#.#.........#..#.....................#......#..#.#......
|
||||||
|
.....#...............#.........#....#..........#.......#.......#......#...#..##.....#.....#........#.#.......#.......#..#...#......
|
||||||
|
..#............#.....................#...#.......#....###...........#.....#.#.................#................#.........#..##.#...
|
||||||
|
..............................#.....#..................................#.....##...............#.......#.........#.....#....##......
|
||||||
|
..#...##...#...#..............#.................##..#......#.................#....#......#...#...#......#..........................
|
||||||
|
.........#....#..............#........#..#...............#....#...#.....#..#......#.........#.......#.#..#........#...........#....
|
||||||
|
........#..#....................#.........#...##.#.#..............#......#.#..........##...##....#......................#..........
|
||||||
|
.##..#....#....#.......##......#............#..#......#.....##..................#####..#...#......#.#...#..........#.#.....#..#....
|
||||||
|
..#...........#....................#.......#......#.........#...............#......#........##........#.................#.....#.#..
|
||||||
|
..#....#.#...............#.#.........................#.............####..............................##................###.........
|
||||||
|
.....#.......................................#....#...##...#.......#.......#.....#.##..##.................#.....................##.
|
||||||
|
.........#...........#..#..##.#..........#..#.........#..#.....#...................................##....#...............#..#.#....
|
||||||
|
.....#..#...........##............#........#..................#............#..........#..........#..#...........#..................
|
||||||
|
............................#.........#...............#..................#.#....#.#..#........#.....#...........#...........#......
|
||||||
|
................#...##.#....#..##..........#.#........##.#..#..#.....................#....#.................#.#...............#....
|
||||||
|
.#.....#..............#.#..........#..#........#...............#..#.#..##..#.#.#.........................#.................#.......
|
||||||
|
....#..............#................#.....#..#.......#..#.#.........#..........#..........#.....#..........##.....#............#...
|
||||||
|
..............##...........#.......#......#..................#.......#.....#.#...#...............#.#........#......#............#..
|
||||||
|
................#.....#....#........#....#.......#.#.##.....#...#..#.##...#................#.#.....#....#.............#............
|
||||||
|
...........#.#.##..####.....#....#.#...#.#...........#...#.......................#.#....#.....#..#................###..............
|
||||||
|
...................#....#..........#.#..##.....#..#..#......###............#..#...........#....#......#............................
|
||||||
|
...........................................#.......#..............#.##.......##.......#...#.....#.#..#.....#..###..................
|
||||||
|
............###........#.......#.#....#.....#....#..#........#.........##....#.....#..........#......#............#..#.#...........
|
||||||
|
............#..........#................##.#..............#.....#................#....................................#..#.........
|
||||||
|
...........#.....#.....................#...#.....#.......#..........#....#.....###.....##.#.##.#.....#......#......#.......#.......
|
||||||
|
.....................#..#.....#...##.....#..#...........#....#....##............##.................##............##................
|
||||||
|
.................................................................S.................................................................
|
||||||
|
........#.#........#..........#.....#......#........#.#............#.#.........##...#............#...#.....#...........#.....#.....
|
||||||
|
..................##.......#......#..#..................#..##......#.........#...#.........#............#....#...........##........
|
||||||
|
..................#...........#.##.......#..............#....................#.#....#...##...#.....#.......#..#.....##.............
|
||||||
|
...........#....#....##...#................................#.........#.................#....#.......................#...#..........
|
||||||
|
.............#.#.#.....#.#...#.......#.#...........#....#.#.........#........##......#.......#.......##...#..........#.##..........
|
||||||
|
...........##.#....#....#..#.....#...............#......................#...........#.....#...........#.#.......#..................
|
||||||
|
.#.......................#.#...##.#....#.#...........#.#....##.##......#........................##....#.#....#.....................
|
||||||
|
...#..................#.#...........##....###.................#....................##......#.....#............#.##....#.......##...
|
||||||
|
.#..................####...#.#..#.##.#...####...#......#....................#..........................#....#......................
|
||||||
|
.....#..........#.....#.#...............#.........##...#......#.#.....#...........#.....#............##......#.....#...............
|
||||||
|
......#........#....#..#............................###.#...##........#........#.................#..#........#...............##....
|
||||||
|
......................#.........................##....#...#..............#..#............#.#....#......##.#......#.........##......
|
||||||
|
..................#....#...#.#.......#..............#..#..#...#.......#...#.....#.....#...............#.#.#...............#........
|
||||||
|
...#...##......................##..##...........#......#.............#............#...........##.......#....#......................
|
||||||
|
.............................##...........##...#...#.....#....#.......#.#..#.....##...............#..#.#......#..............##....
|
||||||
|
...#..#.#...#.......#..................#............#....#.#.##.#.........#......#........#..#..........#....##...........#....#...
|
||||||
|
.....#.............................#......#.#.....#.##.#.................#.........#..#..#.#.#........................#.#.......#..
|
||||||
|
....#........#........#....#.#.#.....#.##............###.#..........#...##......#........##...#.........#.............#........#...
|
||||||
|
..#..............................#.............................#......#...................#...#......#.............#...............
|
||||||
|
.......#...#...............#.................##....................#....##.......#....##....##...#..................#..............
|
||||||
|
.........................#...#..#.....##.............#...##.......#.....#...#..............#.....#.#.#..#........................#.
|
||||||
|
......#.......##.#.............#....................#...#...........#...#..##....#.....#............#...........#........#.........
|
||||||
|
...#....#...#......#........................#.....#.........#......#........#.....#.#...........#.#..............#......#....#.....
|
||||||
|
........#..........#...................#...........##.#..#...#................#....##.............#................#....#..........
|
||||||
|
........#.......#....#.............#..........#...................#.#....#.#........#..#..............................#..........#.
|
||||||
|
............#........#....................#.#.........#......#.............#................#...#.............#....#...............
|
||||||
|
..#..............................#..#....##.....#......................##...#..#.........#......#......................#...#...#.#.
|
||||||
|
.##....#.............#...........##..................#...#..............#.......#................................#.........#.......
|
||||||
|
.....#......#.#.....##...........#.....#.......#..........##..#.............#.#.........#.#.#.............##........#......#..#....
|
||||||
|
.......#.......#.#.#..#......................#....#............##....#...........#.........................#......#................
|
||||||
|
.........##.........#..............#.#.#....#...#.......#.................................#..##..................##.###.##...#.....
|
||||||
|
......................#...#.#.......#..#.#..........#........#.......#.................#..................................#........
|
||||||
|
....##........#.........#.........................#................#......#...#.....#..................................#..#.#......
|
||||||
|
...##..............#..................#...#......#........###..#.......#..........#..............................#......#..........
|
||||||
|
.#.#.#....#..........#......#.#.........#.....#...............................#.....#.#............#....#........#.............#...
|
||||||
|
........#.........#.........#......................#..#......##.....#..#..........................#......##....#......##.##.....#..
|
||||||
|
.##...#.......#.#....#..#.#...................#.........#....#...........#.....#.........#............##......#............#.......
|
||||||
|
.##..#.........#..........#.#.................................#.#.#...............................#............#......##...#.#.....
|
||||||
|
......#........#..#...#............#..............#............#......##.....#.................................#......#.#.....#....
|
||||||
|
..........#........#...........#....................................#.....#...............................#............##....#.##..
|
||||||
|
........#.............#..#......##..................#.............#..#...#.#.....#...#...............#........................#....
|
||||||
|
....#...............#..........#....#...........................#....##.##...................#.#.......#...#.##....#........##..#..
|
||||||
|
......#.....#..#..........###...#.................####.###..........#...........#..........#......#............................#...
|
||||||
|
.#...#......#........#..#............##...............#.##......#...#.....#....................#.........#............#...#........
|
||||||
|
................##...................#.##..............#...#..#.......#.......###........#..#..#........#...##.....................
|
||||||
|
..............#....#..#..#.............##..............#................................#.....#..#....###.##..............#........
|
||||||
|
..#..............#........................................#..........#.....#..................#............#..#....................
|
||||||
|
.........#...#.....#...#...##...........#.###............##...#........#......................##......#....#.......#...............
|
||||||
|
....#....#.....#.......#......................................#.#.#....#..#..#..........#...................#........#...#.........
|
||||||
|
..#..#..................#..............#...#..#.........#......#....#.#................##..........#..#................#...........
|
||||||
|
...#...................#...........#....#...#.............##...#.......#.#..........#..#...............#....#....#.............#...
|
||||||
|
.......................##.#.#..##........#....#.........#.#.#.....##..............#.......#.......##.#..........#.#................
|
||||||
|
.....#..#..................#..##....#.......#.............#...#.....#.............#.............#.#...............#.....##......##.
|
||||||
|
...#.#.....#..........#.#............#..#..........................##.............#....#.......#.#...#...#....................#.#..
|
||||||
|
............##.#............#....#....#....#..##...#...............................#...#...#.........#.......................##.##.
|
||||||
|
....#.#...............#...#.......#............#..#...........................#..............#..........#....#...#...#..#...#....#.
|
||||||
|
.......#..#..#.#..#......#..........................#...............#.........#...........#................#..#...#................
|
||||||
|
...#..#...#.....#.#.......#....................................................#........#..........#.#...#......#..........#.......
|
||||||
|
..#...#.......#..#..............#.#...#.....#...#....#............#..........##...#.........##.............#.......................
|
||||||
|
...#.............#...#....#...#.....#.#.#..............#..........#........#........##...........#..#.#......................#.....
|
||||||
|
.#.......#.................#...............#..........#.....................#.....#............#......##....#.....#...#....###.....
|
||||||
|
...##...........#..........#.#........#............#..#.#........................#.....##............#...##.#.......#.##....#......
|
||||||
|
...........#........#...........#.......#......#...#.....#............................#........#..#................#...#....##.....
|
||||||
|
...##.##.........#.####..#............#..#.....#.......................#......#..........#.#..#.#....##........#....#.....#..#..##.
|
||||||
|
...................................................................................................................................
|
30
aoc2023/day21/main.go
Normal file
30
aoc2023/day21/main.go
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
_ "embed"
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
aoc "go.sour.is/advent-of-code"
|
||||||
|
)
|
||||||
|
|
||||||
|
// var log = aoc.Log
|
||||||
|
|
||||||
|
func main() { aoc.MustResult(aoc.Runner(run)) }
|
||||||
|
|
||||||
|
type result struct {
|
||||||
|
valuePT1 int
|
||||||
|
valuePT2 int
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r result) String() string { return fmt.Sprintf("%#v", r) }
|
||||||
|
|
||||||
|
func run(scan *bufio.Scanner) (*result, error) {
|
||||||
|
|
||||||
|
for scan.Scan() {
|
||||||
|
_ = scan.Text()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return &result{}, nil
|
||||||
|
}
|
41
aoc2023/day21/main_test.go
Normal file
41
aoc2023/day21/main_test.go
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"bytes"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
_ "embed"
|
||||||
|
|
||||||
|
"github.com/matryer/is"
|
||||||
|
)
|
||||||
|
|
||||||
|
//go:embed example.txt
|
||||||
|
var example []byte
|
||||||
|
|
||||||
|
//go:embed input.txt
|
||||||
|
var input []byte
|
||||||
|
|
||||||
|
func TestExample(t *testing.T) {
|
||||||
|
is := is.New(t)
|
||||||
|
scan := bufio.NewScanner(bytes.NewReader(example))
|
||||||
|
|
||||||
|
result, err := run(scan)
|
||||||
|
is.NoErr(err)
|
||||||
|
|
||||||
|
t.Log(result)
|
||||||
|
is.Equal(result.valuePT1, 0)
|
||||||
|
is.Equal(result.valuePT2, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSolution(t *testing.T) {
|
||||||
|
is := is.New(t)
|
||||||
|
scan := bufio.NewScanner(bytes.NewReader(input))
|
||||||
|
|
||||||
|
result, err := run(scan)
|
||||||
|
is.NoErr(err)
|
||||||
|
|
||||||
|
t.Log(result)
|
||||||
|
is.Equal(result.valuePT1, 0)
|
||||||
|
is.Equal(result.valuePT2, 0)
|
||||||
|
}
|
|
@ -0,0 +1,84 @@
|
||||||
|
package main
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"bufio"
|
||||||
|
"strings"
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
func main() {
|
||||||
|
//Enter your code here. Read input from STDIN. Print output to STDOUT
|
||||||
|
scanner := bufio.NewScanner(os.Stdin)
|
||||||
|
|
||||||
|
var nodes int
|
||||||
|
var tree *node
|
||||||
|
var target [2]int
|
||||||
|
|
||||||
|
for scanner.Scan() {
|
||||||
|
text := scanner.Text()
|
||||||
|
if nodes == 0 {
|
||||||
|
nodes, _ = strconv.Atoi(text)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if tree == nil {
|
||||||
|
for _, s := range strings.Fields(text) {
|
||||||
|
v, _ := strconv.Atoi(s)
|
||||||
|
tree = insertNode(tree, &node{value:v})
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, s := range strings.Fields(text) {
|
||||||
|
v, _ := strconv.Atoi(s)
|
||||||
|
target[i] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if target[0]>target[1] {
|
||||||
|
target[0], target[1] = target[1], target[0]
|
||||||
|
}
|
||||||
|
fmt.Fprintln(os.Stderr, tree)
|
||||||
|
if n := lsa(tree, target); n != nil {
|
||||||
|
fmt.Println(n.value)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Println("nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
type node struct{
|
||||||
|
value int
|
||||||
|
left *node
|
||||||
|
right *node
|
||||||
|
}
|
||||||
|
func insertNode(root, n *node) *node {
|
||||||
|
if root == nil {
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
if root.value > n.value {
|
||||||
|
root.left = insertNode(root.left, n)
|
||||||
|
return root
|
||||||
|
}
|
||||||
|
root.right = insertNode(root.right, n)
|
||||||
|
return root
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *node) String() string {
|
||||||
|
if n == nil { return "nil" }
|
||||||
|
return fmt.Sprintf("%v (%v %v)", n.value, n.left, n.right)
|
||||||
|
}
|
||||||
|
|
||||||
|
func lsa(tree *node, target [2]int) *node {
|
||||||
|
if tree == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if target[0]>tree.value {
|
||||||
|
return lsa(tree.right, target)
|
||||||
|
}
|
||||||
|
|
||||||
|
if target[1]<tree.value {
|
||||||
|
return lsa(tree.left, target)
|
||||||
|
}
|
||||||
|
|
||||||
|
return tree
|
||||||
|
}
|
80
hacker-rank/counting-sort/main.go
Normal file
80
hacker-rank/counting-sort/main.go
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Complete the 'countingSort' function below.
|
||||||
|
*
|
||||||
|
* The function is expected to return an INTEGER_ARRAY.
|
||||||
|
* The function accepts INTEGER_ARRAY arr as parameter.
|
||||||
|
*/
|
||||||
|
|
||||||
|
func countingSort(arr []int32) []int32 {
|
||||||
|
freq := make([]int32, 100)
|
||||||
|
for _, i := range arr {
|
||||||
|
freq[i]++
|
||||||
|
}
|
||||||
|
return freq
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
reader := bufio.NewReaderSize(os.Stdin, 16 * 1024 * 1024)
|
||||||
|
|
||||||
|
stdout, err := os.Create(os.Getenv("OUTPUT_PATH"))
|
||||||
|
checkError(err)
|
||||||
|
|
||||||
|
defer stdout.Close()
|
||||||
|
|
||||||
|
writer := bufio.NewWriterSize(stdout, 16 * 1024 * 1024)
|
||||||
|
|
||||||
|
nTemp, err := strconv.ParseInt(strings.TrimSpace(readLine(reader)), 10, 64)
|
||||||
|
checkError(err)
|
||||||
|
n := int32(nTemp)
|
||||||
|
|
||||||
|
arrTemp := strings.Split(strings.TrimSpace(readLine(reader)), " ")
|
||||||
|
|
||||||
|
var arr []int32
|
||||||
|
|
||||||
|
for i := 0; i < int(n); i++ {
|
||||||
|
arrItemTemp, err := strconv.ParseInt(arrTemp[i], 10, 64)
|
||||||
|
checkError(err)
|
||||||
|
arrItem := int32(arrItemTemp)
|
||||||
|
arr = append(arr, arrItem)
|
||||||
|
}
|
||||||
|
|
||||||
|
result := countingSort(arr)
|
||||||
|
|
||||||
|
for i, resultItem := range result {
|
||||||
|
fmt.Fprintf(writer, "%d", resultItem)
|
||||||
|
|
||||||
|
if i != len(result) - 1 {
|
||||||
|
fmt.Fprintf(writer, " ")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Fprintf(writer, "\n")
|
||||||
|
|
||||||
|
writer.Flush()
|
||||||
|
}
|
||||||
|
|
||||||
|
func readLine(reader *bufio.Reader) string {
|
||||||
|
str, _, err := reader.ReadLine()
|
||||||
|
if err == io.EOF {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
return strings.TrimRight(string(str), "\r\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkError(err error) {
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
84
hacker-rank/diagonal-difference/main.go
Normal file
84
hacker-rank/diagonal-difference/main.go
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Complete the 'diagonalDifference' function below.
|
||||||
|
*
|
||||||
|
* The function is expected to return an INTEGER.
|
||||||
|
* The function accepts 2D_INTEGER_ARRAY arr as parameter.
|
||||||
|
*/
|
||||||
|
|
||||||
|
func diagonalDifference(arr [][]int32) int32 {
|
||||||
|
var sum int32
|
||||||
|
for i, row := range arr {
|
||||||
|
sum += row[i] - row[len(row)-i-1]
|
||||||
|
}
|
||||||
|
if sum < 0 {
|
||||||
|
sum *= -1
|
||||||
|
}
|
||||||
|
|
||||||
|
return sum
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
reader := bufio.NewReaderSize(os.Stdin, 16 * 1024 * 1024)
|
||||||
|
|
||||||
|
stdout, err := os.Create(os.Getenv("OUTPUT_PATH"))
|
||||||
|
checkError(err)
|
||||||
|
|
||||||
|
defer stdout.Close()
|
||||||
|
|
||||||
|
writer := bufio.NewWriterSize(stdout, 16 * 1024 * 1024)
|
||||||
|
|
||||||
|
nTemp, err := strconv.ParseInt(strings.TrimSpace(readLine(reader)), 10, 64)
|
||||||
|
checkError(err)
|
||||||
|
n := int32(nTemp)
|
||||||
|
|
||||||
|
var arr [][]int32
|
||||||
|
for i := 0; i < int(n); i++ {
|
||||||
|
arrRowTemp := strings.Split(strings.TrimRight(readLine(reader)," \t\r\n"), " ")
|
||||||
|
|
||||||
|
var arrRow []int32
|
||||||
|
for _, arrRowItem := range arrRowTemp {
|
||||||
|
arrItemTemp, err := strconv.ParseInt(arrRowItem, 10, 64)
|
||||||
|
checkError(err)
|
||||||
|
arrItem := int32(arrItemTemp)
|
||||||
|
arrRow = append(arrRow, arrItem)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(arrRow) != int(n) {
|
||||||
|
panic("Bad input")
|
||||||
|
}
|
||||||
|
|
||||||
|
arr = append(arr, arrRow)
|
||||||
|
}
|
||||||
|
|
||||||
|
result := diagonalDifference(arr)
|
||||||
|
|
||||||
|
fmt.Fprintf(writer, "%d\n", result)
|
||||||
|
|
||||||
|
writer.Flush()
|
||||||
|
}
|
||||||
|
|
||||||
|
func readLine(reader *bufio.Reader) string {
|
||||||
|
str, _, err := reader.ReadLine()
|
||||||
|
if err == io.EOF {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
return strings.TrimRight(string(str), "\r\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkError(err error) {
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
64
hacker-rank/flipping-bits/main.go
Normal file
64
hacker-rank/flipping-bits/main.go
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Complete the 'flippingBits' function below.
|
||||||
|
*
|
||||||
|
* The function is expected to return a LONG_INTEGER.
|
||||||
|
* The function accepts LONG_INTEGER n as parameter.
|
||||||
|
*/
|
||||||
|
|
||||||
|
func flippingBits(n int64) int64 {
|
||||||
|
// Write your code here
|
||||||
|
max := int64(^uint32(0))
|
||||||
|
return n ^ max
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
reader := bufio.NewReaderSize(os.Stdin, 16 * 1024 * 1024)
|
||||||
|
|
||||||
|
stdout, err := os.Create(os.Getenv("OUTPUT_PATH"))
|
||||||
|
checkError(err)
|
||||||
|
|
||||||
|
defer stdout.Close()
|
||||||
|
|
||||||
|
writer := bufio.NewWriterSize(stdout, 16 * 1024 * 1024)
|
||||||
|
|
||||||
|
qTemp, err := strconv.ParseInt(strings.TrimSpace(readLine(reader)), 10, 64)
|
||||||
|
checkError(err)
|
||||||
|
q := int32(qTemp)
|
||||||
|
|
||||||
|
for qItr := 0; qItr < int(q); qItr++ {
|
||||||
|
n, err := strconv.ParseInt(strings.TrimSpace(readLine(reader)), 10, 64)
|
||||||
|
checkError(err)
|
||||||
|
|
||||||
|
result := flippingBits(n)
|
||||||
|
|
||||||
|
fmt.Fprintf(writer, "%d\n", result)
|
||||||
|
}
|
||||||
|
|
||||||
|
writer.Flush()
|
||||||
|
}
|
||||||
|
|
||||||
|
func readLine(reader *bufio.Reader) string {
|
||||||
|
str, _, err := reader.ReadLine()
|
||||||
|
if err == io.EOF {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
return strings.TrimRight(string(str), "\r\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkError(err error) {
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
77
hacker-rank/lonely-integer/main.go
Normal file
77
hacker-rank/lonely-integer/main.go
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Complete the 'lonelyinteger' function below.
|
||||||
|
*
|
||||||
|
* The function is expected to return an INTEGER.
|
||||||
|
* The function accepts INTEGER_ARRAY a as parameter.
|
||||||
|
*/
|
||||||
|
|
||||||
|
func lonelyinteger(a []int32) int32 {
|
||||||
|
m := make(map[int32]int8, len(a)/2+1)
|
||||||
|
for _, i := range a {
|
||||||
|
m[i] = m[i]+1
|
||||||
|
}
|
||||||
|
for k,v := range m {
|
||||||
|
if v == 1 {
|
||||||
|
return k
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
reader := bufio.NewReaderSize(os.Stdin, 16 * 1024 * 1024)
|
||||||
|
|
||||||
|
stdout, err := os.Create(os.Getenv("OUTPUT_PATH"))
|
||||||
|
checkError(err)
|
||||||
|
|
||||||
|
defer stdout.Close()
|
||||||
|
|
||||||
|
writer := bufio.NewWriterSize(stdout, 16 * 1024 * 1024)
|
||||||
|
|
||||||
|
nTemp, err := strconv.ParseInt(strings.TrimSpace(readLine(reader)), 10, 64)
|
||||||
|
checkError(err)
|
||||||
|
n := int32(nTemp)
|
||||||
|
|
||||||
|
aTemp := strings.Split(strings.TrimSpace(readLine(reader)), " ")
|
||||||
|
|
||||||
|
var a []int32
|
||||||
|
|
||||||
|
for i := 0; i < int(n); i++ {
|
||||||
|
aItemTemp, err := strconv.ParseInt(aTemp[i], 10, 64)
|
||||||
|
checkError(err)
|
||||||
|
aItem := int32(aItemTemp)
|
||||||
|
a = append(a, aItem)
|
||||||
|
}
|
||||||
|
|
||||||
|
result := lonelyinteger(a)
|
||||||
|
|
||||||
|
fmt.Fprintf(writer, "%d\n", result)
|
||||||
|
|
||||||
|
writer.Flush()
|
||||||
|
}
|
||||||
|
|
||||||
|
func readLine(reader *bufio.Reader) string {
|
||||||
|
str, _, err := reader.ReadLine()
|
||||||
|
if err == io.EOF {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
return strings.TrimRight(string(str), "\r\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkError(err error) {
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
64
hacker-rank/mini-max-sum/main.go
Normal file
64
hacker-rank/mini-max-sum/main.go
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Complete the 'miniMaxSum' function below.
|
||||||
|
*
|
||||||
|
* The function accepts INTEGER_ARRAY arr as parameter.
|
||||||
|
*/
|
||||||
|
|
||||||
|
func miniMaxSum(arr []int32) {
|
||||||
|
min := arr[0]
|
||||||
|
max := arr[0]
|
||||||
|
sum := int(arr[0])
|
||||||
|
for _, v := range arr[1:] {
|
||||||
|
if min > v {
|
||||||
|
min = v
|
||||||
|
}
|
||||||
|
if max < v {
|
||||||
|
max = v
|
||||||
|
}
|
||||||
|
sum += int(v)
|
||||||
|
}
|
||||||
|
fmt.Print(sum-int(max), sum-int(min))
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
reader := bufio.NewReaderSize(os.Stdin, 16 * 1024 * 1024)
|
||||||
|
|
||||||
|
arrTemp := strings.Split(strings.TrimSpace(readLine(reader)), " ")
|
||||||
|
|
||||||
|
var arr []int32
|
||||||
|
|
||||||
|
for i := 0; i < 5; i++ {
|
||||||
|
arrItemTemp, err := strconv.ParseInt(arrTemp[i], 10, 64)
|
||||||
|
checkError(err)
|
||||||
|
arrItem := int32(arrItemTemp)
|
||||||
|
arr = append(arr, arrItem)
|
||||||
|
}
|
||||||
|
|
||||||
|
miniMaxSum(arr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func readLine(reader *bufio.Reader) string {
|
||||||
|
str, _, err := reader.ReadLine()
|
||||||
|
if err == io.EOF {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
return strings.TrimRight(string(str), "\r\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkError(err error) {
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
94
hacker-rank/no-prefix-set/main.go
Normal file
94
hacker-rank/no-prefix-set/main.go
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Complete the 'noPrefix' function below.
|
||||||
|
*
|
||||||
|
* The function accepts STRING_ARRAY words as parameter.
|
||||||
|
*/
|
||||||
|
|
||||||
|
type trie struct {
|
||||||
|
wordEnd bool
|
||||||
|
child [10]*trie
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *trie) add(word string) {
|
||||||
|
curr := m
|
||||||
|
for _, r := range word {
|
||||||
|
index := r - 'a'
|
||||||
|
if curr.child[index] == nil {
|
||||||
|
curr.child[index] = &trie{}
|
||||||
|
}
|
||||||
|
curr = curr.child[index]
|
||||||
|
}
|
||||||
|
curr.wordEnd = true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *trie) find(word string) bool {
|
||||||
|
curr := m
|
||||||
|
for _, r := range word {
|
||||||
|
index := r - 'a'
|
||||||
|
if curr.child[index] != nil {
|
||||||
|
curr = curr.child[index]
|
||||||
|
|
||||||
|
if curr.wordEnd {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func noPrefix(words []string) {
|
||||||
|
tree := &trie{}
|
||||||
|
|
||||||
|
for _, word := range words {
|
||||||
|
if tree.find(word) {
|
||||||
|
fmt.Print("BAD SET\n", word)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
tree.add(word)
|
||||||
|
}
|
||||||
|
fmt.Println("GOOD SET")
|
||||||
|
}
|
||||||
|
func main() {
|
||||||
|
reader := bufio.NewReaderSize(os.Stdin, 16*1024*1024)
|
||||||
|
|
||||||
|
nTemp, err := strconv.ParseInt(strings.TrimSpace(readLine(reader)), 10, 64)
|
||||||
|
checkError(err)
|
||||||
|
n := int32(nTemp)
|
||||||
|
|
||||||
|
var words []string
|
||||||
|
|
||||||
|
for i := 0; i < int(n); i++ {
|
||||||
|
wordsItem := readLine(reader)
|
||||||
|
words = append(words, wordsItem)
|
||||||
|
}
|
||||||
|
|
||||||
|
noPrefix(words)
|
||||||
|
}
|
||||||
|
|
||||||
|
func readLine(reader *bufio.Reader) string {
|
||||||
|
str, _, err := reader.ReadLine()
|
||||||
|
if err == io.EOF {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
return strings.TrimRight(string(str), "\r\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkError(err error) {
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
69
hacker-rank/pangrams/main.go
Normal file
69
hacker-rank/pangrams/main.go
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Complete the 'pangrams' function below.
|
||||||
|
*
|
||||||
|
* The function is expected to return a STRING.
|
||||||
|
* The function accepts STRING s as parameter.
|
||||||
|
*/
|
||||||
|
|
||||||
|
func pangrams(s string) string {
|
||||||
|
// Write your code here
|
||||||
|
s = strings.ToLower(s)
|
||||||
|
|
||||||
|
m := make(map[rune]struct{}, 26)
|
||||||
|
for _, a := range s {
|
||||||
|
if a >= 'a' && a <= 'z' {
|
||||||
|
fmt.Println(a)
|
||||||
|
m[a] = struct{}{}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Println(len(m))
|
||||||
|
if len(m) == 26 {
|
||||||
|
return "pangram"
|
||||||
|
} else {
|
||||||
|
return "not pangram"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
reader := bufio.NewReaderSize(os.Stdin, 16 * 1024 * 1024)
|
||||||
|
|
||||||
|
stdout, err := os.Create(os.Getenv("OUTPUT_PATH"))
|
||||||
|
checkError(err)
|
||||||
|
|
||||||
|
defer stdout.Close()
|
||||||
|
|
||||||
|
writer := bufio.NewWriterSize(stdout, 16 * 1024 * 1024)
|
||||||
|
|
||||||
|
s := readLine(reader)
|
||||||
|
|
||||||
|
result := pangrams(s)
|
||||||
|
|
||||||
|
fmt.Fprintf(writer, "%s\n", result)
|
||||||
|
|
||||||
|
writer.Flush()
|
||||||
|
}
|
||||||
|
|
||||||
|
func readLine(reader *bufio.Reader) string {
|
||||||
|
str, _, err := reader.ReadLine()
|
||||||
|
if err == io.EOF {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
return strings.TrimRight(string(str), "\r\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkError(err error) {
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
69
hacker-rank/plus-minus/main.go
Normal file
69
hacker-rank/plus-minus/main.go
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Complete the 'plusMinus' function below.
|
||||||
|
*
|
||||||
|
* The function accepts INTEGER_ARRAY arr as parameter.
|
||||||
|
*/
|
||||||
|
|
||||||
|
func plusMinus(arr []int32) {
|
||||||
|
n := float64(len(arr))
|
||||||
|
var pos, neg, zero float64
|
||||||
|
for _, v := range arr {
|
||||||
|
switch {
|
||||||
|
case v == 0:
|
||||||
|
zero++
|
||||||
|
case v > 0:
|
||||||
|
pos++
|
||||||
|
case v < 0:
|
||||||
|
neg++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("%0.6f\n%0.6f\n%0.6f\n", pos/n, neg/n, zero/n)
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
reader := bufio.NewReaderSize(os.Stdin, 16 * 1024 * 1024)
|
||||||
|
|
||||||
|
nTemp, err := strconv.ParseInt(strings.TrimSpace(readLine(reader)), 10, 64)
|
||||||
|
checkError(err)
|
||||||
|
n := int32(nTemp)
|
||||||
|
|
||||||
|
arrTemp := strings.Split(strings.TrimSpace(readLine(reader)), " ")
|
||||||
|
|
||||||
|
var arr []int32
|
||||||
|
|
||||||
|
for i := 0; i < int(n); i++ {
|
||||||
|
arrItemTemp, err := strconv.ParseInt(arrTemp[i], 10, 64)
|
||||||
|
checkError(err)
|
||||||
|
arrItem := int32(arrItemTemp)
|
||||||
|
arr = append(arr, arrItem)
|
||||||
|
}
|
||||||
|
|
||||||
|
plusMinus(arr)
|
||||||
|
}
|
||||||
|
|
||||||
|
func readLine(reader *bufio.Reader) string {
|
||||||
|
str, _, err := reader.ReadLine()
|
||||||
|
if err == io.EOF {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
return strings.TrimRight(string(str), "\r\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkError(err error) {
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
92
hacker-rank/sparse-arrays/main.go
Normal file
92
hacker-rank/sparse-arrays/main.go
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
stringz "strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Complete the 'matchingStrings' function below.
|
||||||
|
*
|
||||||
|
* The function is expected to return an INTEGER_ARRAY.
|
||||||
|
* The function accepts following parameters:
|
||||||
|
* 1. STRING_ARRAY strings
|
||||||
|
* 2. STRING_ARRAY queries
|
||||||
|
*/
|
||||||
|
|
||||||
|
func matchingStrings(strings []string, queries []string) []int32 {
|
||||||
|
// Write your code here
|
||||||
|
res := make([]int32, len(queries))
|
||||||
|
for _, s := range strings {
|
||||||
|
for i, q := range queries {
|
||||||
|
if s == q {
|
||||||
|
res[i]++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
reader := bufio.NewReaderSize(os.Stdin, 16 * 1024 * 1024)
|
||||||
|
|
||||||
|
stdout, err := os.Create(os.Getenv("OUTPUT_PATH"))
|
||||||
|
checkError(err)
|
||||||
|
|
||||||
|
defer stdout.Close()
|
||||||
|
|
||||||
|
writer := bufio.NewWriterSize(stdout, 16 * 1024 * 1024)
|
||||||
|
|
||||||
|
stringsCount, err := strconv.ParseInt(stringz.TrimSpace(readLine(reader)), 10, 64)
|
||||||
|
checkError(err)
|
||||||
|
|
||||||
|
var strings []string
|
||||||
|
|
||||||
|
for i := 0; i < int(stringsCount); i++ {
|
||||||
|
stringsItem := readLine(reader)
|
||||||
|
strings = append(strings, stringsItem)
|
||||||
|
}
|
||||||
|
|
||||||
|
queriesCount, err := strconv.ParseInt(stringz.TrimSpace(readLine(reader)), 10, 64)
|
||||||
|
checkError(err)
|
||||||
|
|
||||||
|
var queries []string
|
||||||
|
|
||||||
|
for i := 0; i < int(queriesCount); i++ {
|
||||||
|
queriesItem := readLine(reader)
|
||||||
|
queries = append(queries, queriesItem)
|
||||||
|
}
|
||||||
|
|
||||||
|
res := matchingStrings(strings, queries)
|
||||||
|
|
||||||
|
for i, resItem := range res {
|
||||||
|
fmt.Fprintf(writer, "%d", resItem)
|
||||||
|
|
||||||
|
if i != len(res) - 1 {
|
||||||
|
fmt.Fprintf(writer, "\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Fprintf(writer, "\n")
|
||||||
|
|
||||||
|
writer.Flush()
|
||||||
|
}
|
||||||
|
|
||||||
|
func readLine(reader *bufio.Reader) string {
|
||||||
|
str, _, err := reader.ReadLine()
|
||||||
|
if err == io.EOF {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
return stringz.TrimRight(string(str), "\r\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkError(err error) {
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
60
hacker-rank/time-conversion/main.go
Normal file
60
hacker-rank/time-conversion/main.go
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Complete the 'timeConversion' function below.
|
||||||
|
*
|
||||||
|
* The function is expected to return a STRING.
|
||||||
|
* The function accepts STRING s as parameter.
|
||||||
|
*/
|
||||||
|
|
||||||
|
func timeConversion(s string) string {
|
||||||
|
dt, err := time.Parse("03:04:05PM", s)
|
||||||
|
if err != nil {
|
||||||
|
println(err.Error())
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return dt.Format("15:04:05")
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
reader := bufio.NewReaderSize(os.Stdin, 16 * 1024 * 1024)
|
||||||
|
|
||||||
|
stdout, err := os.Create(os.Getenv("OUTPUT_PATH"))
|
||||||
|
checkError(err)
|
||||||
|
|
||||||
|
defer stdout.Close()
|
||||||
|
|
||||||
|
writer := bufio.NewWriterSize(stdout, 16 * 1024 * 1024)
|
||||||
|
|
||||||
|
s := readLine(reader)
|
||||||
|
|
||||||
|
result := timeConversion(s)
|
||||||
|
|
||||||
|
fmt.Fprintf(writer, "%s\n", result)
|
||||||
|
|
||||||
|
writer.Flush()
|
||||||
|
}
|
||||||
|
|
||||||
|
func readLine(reader *bufio.Reader) string {
|
||||||
|
str, _, err := reader.ReadLine()
|
||||||
|
if err == io.EOF {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
return strings.TrimRight(string(str), "\r\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkError(err error) {
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
67
hacker-rank/tree-height-of-a-binary-tree/main.go
Normal file
67
hacker-rank/tree-height-of-a-binary-tree/main.go
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
package main
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"bufio"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var n int
|
||||||
|
var tree *node
|
||||||
|
scanner := bufio.NewScanner(os.Stdin)
|
||||||
|
for scanner.Scan() {
|
||||||
|
text := scanner.Text()
|
||||||
|
if n == 0 {
|
||||||
|
n, _ = strconv.Atoi(text)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
for _, s := range strings.Fields(text) {
|
||||||
|
if v, err := strconv.Atoi(s); err == nil {
|
||||||
|
tree = insert(tree, &node{value:v})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Println(height(tree, 0))
|
||||||
|
}
|
||||||
|
|
||||||
|
type node struct{
|
||||||
|
value int
|
||||||
|
left *node
|
||||||
|
right *node
|
||||||
|
}
|
||||||
|
|
||||||
|
func insert(root, n *node) *node {
|
||||||
|
if root == nil {
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
if n.value < root.value {
|
||||||
|
root.left = insert(root.left, n)
|
||||||
|
return root
|
||||||
|
}
|
||||||
|
root.right = insert(root.right, n)
|
||||||
|
return root
|
||||||
|
}
|
||||||
|
|
||||||
|
func height(root *node, currentHeight int) int {
|
||||||
|
if root == nil {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
|
||||||
|
maxHeight := currentHeight
|
||||||
|
|
||||||
|
if root.left != nil {
|
||||||
|
if nh := height(root.left, currentHeight+1); nh > maxHeight {
|
||||||
|
maxHeight = nh
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if root.right != nil {
|
||||||
|
if nh := height(root.right, currentHeight+1); nh > maxHeight {
|
||||||
|
maxHeight = nh
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return maxHeight
|
||||||
|
}
|
52
hacker-rank/tree-preorder-traversal/main.go
Normal file
52
hacker-rank/tree-preorder-traversal/main.go
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
package main
|
||||||
|
import "fmt"
|
||||||
|
import "os"
|
||||||
|
import "bufio"
|
||||||
|
import "strconv"
|
||||||
|
import "strings"
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var length int
|
||||||
|
var tree *node
|
||||||
|
|
||||||
|
scanner := bufio.NewScanner(os.Stdin)
|
||||||
|
for scanner.Scan() {
|
||||||
|
if length == 0 {
|
||||||
|
length, _ = strconv.Atoi(scanner.Text())
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
for i, txt := range strings.Fields(scanner.Text()) {
|
||||||
|
if i >= length { break }
|
||||||
|
if v, err := strconv.Atoi(txt); err == nil {
|
||||||
|
tree = insert(tree, &node{value: v})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println(tree)
|
||||||
|
}
|
||||||
|
|
||||||
|
type node struct {
|
||||||
|
value int
|
||||||
|
left *node
|
||||||
|
right *node
|
||||||
|
}
|
||||||
|
|
||||||
|
func insert(root, n *node) *node {
|
||||||
|
if root == nil {
|
||||||
|
return n
|
||||||
|
}
|
||||||
|
if root.value > n.value {
|
||||||
|
root.left = insert(root.left, n)
|
||||||
|
return root
|
||||||
|
}
|
||||||
|
root.right = insert(root.right, n)
|
||||||
|
return root
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *node) String() string {
|
||||||
|
if n == nil { return "" }
|
||||||
|
return fmt.Sprintf("%v %v%v", n.value, n.left.String(), n.right.String())
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user