golang 在golang bbop

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 在golang bbop相关的知识,希望对你有一定的参考价值。

package la0c

import (
	"math/rand"
	"strconv"
	"strings"
)

const (
	ANSWER   = "ビ,ビ,ッ,ド,レ,ッ,ド,・,オ,ペ,レ,ー,ショ,ン"
	MATERIAL = "ビ,ビ,ド,レ,ド,オ,ペ,レ,ショ"
)

type bbopResult struct {
	Result     string `json:"result"`
	MatchCount int    `json:"match_count"`
}

func TryBBOP(seed string) bbopResult {
	answerArray := strings.Split(ANSWER, ",")
	baseArray := strings.Split(ANSWER, ",")
	materialArray := strings.Split(MATERIAL, ",")
	for i, ans := range answerArray {
		switch ans {
		case "ッ", "・", "ー", "ン":
			continue
		default:
			if i, err := strconv.ParseInt(seed, 10, 64); err == nil {
				rand.Seed(i)
			}
			index := rand.Intn(9)
			baseArray[i] = materialArray[index]
		}
	}
	return bbopResult{
		Result:     strings.Join(baseArray, ""),
		MatchCount: CalcMatchCount(baseArray),
	}
}

func CalcMatchCount(result []string) int {
	answerArray := strings.Split(ANSWER, ",")
	count := 0
	for i, ans := range answerArray {
		switch ans {
		case "ッ", "・", "ー", "ン":
			continue
		default:
			if result[i] == ans {
				count++
			}
		}
	}
	return count
}

golang 在GoLang中测试bcrypt

///usr/bin/env go run "$0" "$@"; exit;

package main

import (
	"fmt"
	"os"

	"golang.org/x/crypto/bcrypt"
)

func main() {
	if len(os.Args) == 1 {
		println("Usage: crypto.go <word to be encrypted>")
		os.Exit(1)
	}
	p := []byte(os.Args[1])
	h, err := bcrypt.GenerateFromPassword(p, 0)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(string(h))

	if err := bcrypt.CompareHashAndPassword(h, p); err != nil {
		fmt.Println(err)
		os.Exit(1)
	}
}

以上是关于golang 在golang bbop的主要内容,如果未能解决你的问题,请参考以下文章

ruby mikutter_bbop_plugin.rb

请教关于在golang中怎么使用进程的问题

golang使用成本高

Golang入门到项目实战 第一个golang应用

Golang 入门

如何在golang使用自定义的包