Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
package main import ( "strconv" "strings" ) type Stack []string // used to create Stacks func (st *Stack) Push(str string) { if str == " " { return } *st = append(*st, str) } // used in actual moving of the data between stacks func (st *Stack) MovePush(str string) { s := []string{str} *st = append(s, *st...) } func (st *Stack) Pop() string { length := len(*st) if length == 0 { return "" } str := (*st)[0] *st = (*st)[1:] return str } func parseInput(d []byte) []string { strs := strings.Split(string(d), "\n") strs = strs[:len(strs)-1] return strs } // helper function to neatly seprate each coloum into // individual strings func createSubArrarys(data []string) (newData [][]string) { newData = make([][]string, len(data)) for i := 0; i < len(data); i++ { for j := 0; j < len(data[i]); j += 4 { newData[i] = append(newData[i], data[i][j:j+3]) } } return } // create arry of integers from instrcution sentences // since all sentences have the same form // it is safe to parse line by line func creatInstArray(d []byte) [][]int { strs := strings.Split(string(d), "\n") ints := make([][]int, len(strs)) for idx, line := range strs { substrs := strings.Split(line, " ") for _, word := range substrs { converted, err := strconv.Atoi(word) if err == nil { ints[idx] = append(ints[idx], converted) } } } return ints } func createStacks(data [][]string) []Stack { stacks := make([]Stack, 9) for _, line := range data { for i := range line { stacks[i].Push(line[i]) } } return stacks } func move(stacks []*Stack, insts []int) { for i := 1; i <= insts[0]; i++ { temp := stacks[insts[1]-1].Pop() stacks[insts[2]-1].MovePush(temp) } } func getTops(stacks []Stack, instructions [][]int) string { ptrStacks := []*Stack{} for i := 0; i < len(stacks); i++ { ptrStacks = append(ptrStacks, &stacks[i]) } builder := strings.Builder{} replacer := strings.NewReplacer("[", "", "]", "") for _, i := range instructions { move(ptrStacks, i) } for _, i := range ptrStacks { builder.WriteString(replacer.Replace(i.Pop())) } return builder.String() }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)