Sha256: 8e492ec31252bc085b43cc0fed93c60616456acb3fa1f9e017e3929ca5114856

Contents?: true

Size: 1.1 KB

Versions: 206

Compression:

Stored size: 1.1 KB

Contents

package wordy

import (
	"strconv"
	"strings"
)

func Answer(q string) (a int, ok bool) {
	w := strings.Fields(q)
	if len(w) < 3 { // length check for first two words and last word
		return
	}
	if w[0] != "What" || w[1] != "is" { // first two words required
		return
	}
	w = w[2:]
	last := len(w) - 1
	wl := w[last]
	if wl[len(wl)-1] != '?' { // trailing ? required
		return
	}
	w[last] = wl[:len(wl)-1]
	a, err := strconv.Atoi(w[0]) // first word after preamble must be a number
	if err != nil {
		return
	}
	for i := 1; i < len(w); i++ { // remainder of q must alternate between op, number
		op := w[i]
		i++
		switch op {
		case "multiplied", "divided":
			if i == len(w) || w[i] != "by" { // length check, required word
				return
			}
			i++ // consume
		}
		if i == len(w) { // length check for operand
			return
		}
		x, err := strconv.Atoi(w[i]) // must be a number
		if err != nil {
			return
		}
		switch op { // apply operator
		case "plus":
			a += x
		case "minus":
			a -= x
		case "multiplied":
			a *= x
		case "divided":
			a /= x
		default: // valid operator not found
			return
		}
	}
	return a, true
}

Version data entries

206 entries across 206 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/go/exercises/wordy/example.go
trackler-2.2.1.179 tracks/go/exercises/wordy/example.go
trackler-2.2.1.178 tracks/go/exercises/wordy/example.go
trackler-2.2.1.177 tracks/go/exercises/wordy/example.go
trackler-2.2.1.176 tracks/go/exercises/wordy/example.go
trackler-2.2.1.175 tracks/go/exercises/wordy/example.go
trackler-2.2.1.174 tracks/go/exercises/wordy/example.go
trackler-2.2.1.173 tracks/go/exercises/wordy/example.go
trackler-2.2.1.172 tracks/go/exercises/wordy/example.go
trackler-2.2.1.171 tracks/go/exercises/wordy/example.go
trackler-2.2.1.170 tracks/go/exercises/wordy/example.go
trackler-2.2.1.169 tracks/go/exercises/wordy/example.go
trackler-2.2.1.167 tracks/go/exercises/wordy/example.go
trackler-2.2.1.166 tracks/go/exercises/wordy/example.go
trackler-2.2.1.165 tracks/go/exercises/wordy/example.go
trackler-2.2.1.164 tracks/go/exercises/wordy/example.go
trackler-2.2.1.163 tracks/go/exercises/wordy/example.go
trackler-2.2.1.162 tracks/go/exercises/wordy/example.go
trackler-2.2.1.161 tracks/go/exercises/wordy/example.go
trackler-2.2.1.160 tracks/go/exercises/wordy/example.go