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