Sha256: f1e61d312b1ad249949ca7c9c209a54b2e47c70ac0bbd2e6f1fba9d82fd8ff51

Contents?: true

Size: 623 Bytes

Versions: 66

Compression:

Stored size: 623 Bytes

Contents

package cryptosquare

import (
	"math"
	"strings"
)

func norm(r rune) rune {
	switch {
	case r >= 'a' && r <= 'z' || r >= '0' && r <= '9':
		return r
	case r >= 'A' && r <= 'Z':
		return r + 'a' - 'A'
	}
	return -1
}

func Encode(pt string) string {
	pt = strings.Map(norm, pt)
	numCols := int(math.Ceil(math.Sqrt(float64(len(pt)))))
	padding := numCols*(numCols-1) - len(pt)
	if padding < 0 {
		padding = numCols*numCols - len(pt)
	}
	cols := make([]string, numCols)
	for i, r := range pt {
		cols[i%numCols] += string(r)
	}
	for i := 0; i < padding; i++ {
		cols[numCols-i-1] += " "
	}
	return strings.Join(cols, " ")
}

Version data entries

66 entries across 66 versions & 1 rubygems

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