Uma coletânea sobre diversas formas de descobrir se um número é par ou não em Go, II

Definição de um número par

https://pt.wikipedia.org/wiki/Paridade

Parte II, a missão

No primeiro artigo, listei alguns meios de saber se um número é par, que fogem do convencional, e sem qualquer compromisso sério. O objetivo era buscar soluções absurdas.

Essa de hoje, é a campeã, mas eu não achei mais o autor, para dar o devido crédito.

Baseado na escrita do último dígito

Exato! Baseado em como se escreve por extenso o último dígito, decide-se se o número é par. Mas isso já foi feito. Agora, isso será decidido pela última letra da palavra em inglês que designa o número, observem a tabela a seguir:

número par ímpar

zero o

one e

two o

three e

four r

five e

six x

seven n

eight t

nine e

Os números pares terminam com as letras ‘o’, ‘r’, ‘x’ e ’t’. Já os ímpares finalizam com ’e’ ou ’n’, apenas. Obviamente, por questões de “otimização” :), irei montar a condição a partir dos ímpares:

package main

import ( “strconv”

     "github.com/paulohrpinheiro/mytest"

)

func inFull(c byte) string { switch c { case ‘0’: return “zero” case ‘1’: return “one” case ‘2’: return “two” case ‘3’: return “three” case ‘4’: return “four” case ‘5’: return “five” case ‘6’: return “six” case ‘7’: return “serven” case ‘8’: return “eight” case ‘9’: return “nine” default: panic(“wrong value”) } }

func isEven(n int) bool { s := strconv.Itoa(n) l := s[len(s)-1] f := inFull(l) last := f[len(f)-1]

     return last != 'e' && last != 'n'

}

func main() { mytest.Run(1000, isEven) }

Funcionou bonitinho:

Execução sem problemas do programa no terminal

Lembrando que o pacote de testes está no texto anterior.