codingame.com: solve bank-robbers

[?]
Nov 29, 2020, 7:02 AM
44BSZW7B45K76U6L6KOTS2G4LAYN73RGTSMNGTLOZXQWKJ6BU2BAC

Dependencies

Change contents

  • file addition: codingame.com (dxwrxwrx-r)
    [1.0]
  • file addition: bank-robbers (dxwrxwrx-r)
    [0.16]
  • file addition: main_test.go (-xw-x--x--)
    [0.32]
    package main
    import (
    "fmt"
    "testing"
    "github.com/stretchr/testify/assert"
    )
    func TestBankRobber(t *testing.T) {
    cases := []struct {
    Robbers int
    Vaults int
    vi []VaultInfo
    Expected int
    }{
    {1, 1, []VaultInfo{{3, 1}}, 250},
    {4, 4, []VaultInfo{{3, 2}, {4, 1}, {7, 6}, {7, 1}}, 5000000},
    {2, 4, []VaultInfo{{3, 1}, {3, 2}, {4, 0}, {4, 0}}, 1125},
    {5, 20, []VaultInfo{{6, 3}, {7, 1}, {4, 4}, {8, 4}, {3, 0}, {4, 3}, {8, 1}, {3, 3}, {5, 5}, {7, 6}, {6, 2}, {5, 3}, {5, 4}, {7, 0}, {7, 0}, {8, 4}, {6, 0}, {6, 5}, {3, 2}, {4, 2}}, 6515625},
    }
    for _, tc := range cases {
    t.Run(fmt.Sprintf("Robbers:%d, Vaults:%d, VaultInfo:%v", tc.Robbers, tc.Vaults, tc.vi), func(t *testing.T) {
    t.Parallel()
    assert.Equal(t, tc.Expected, BankRobber(tc.Robbers, tc.Vaults, tc.vi))
    })
    }
    }
  • file addition: main.go (-xw-x--x--)
    [0.32]
    package main
    import (
    "fmt"
    "math"
    "sort"
    )
    type VaultInfo struct {
    chars int
    nums int
    }
    func main() {
    var R int
    fmt.Scan(&R)
    var V int
    fmt.Scan(&V)
    VI := make([]VaultInfo, V)
    for i := 0; i < V; i++ {
    fmt.Scan(&VI[i].chars, &VI[i].nums)
    }
    fmt.Println(BankRobber(R, V, VI))
    }
    func BankRobber(robbers, vaults int, vi []VaultInfo) int {
    robtime := make([]int, robbers)
    for i := 0; i < vaults; i++ {
    //10 numbers, and 5 vowels
    time := int(math.Pow(10, float64(vi[i].nums)) * math.Pow(5, float64(vi[i].chars-vi[i].nums)))
    robtime[0] += time
    sort.Ints(robtime)
    }
    return robtime[robbers-1]
    }