3dgen / cppwasm-book

:books: WebAssembly friendly programming with C/C++ -- Emscripten practice
1.35k stars 166 forks source link

抽奖送3本<WebAssembly标准入门>图书 #4

Closed chai2010 closed 5 years ago

chai2010 commented 5 years ago

抽奖链接

https://github.com/3dgen/cppwasm-book/issues/4


<WebAssembly标准入门>相关链接:

几个有意思的例子(基于asm.js):


公平公正的抽奖规则

抽奖规则的设计原则:

收集参与抽奖的人

抽奖的流程

  1. 开始前,大家可以验证规则是否有缺陷,有任何问题都可以讨论
  2. 我在抽奖正式开始时(可以提前参与),会准备一个秘密的字符串作为种子,然后先公布种子字符串的MD5,同时公布截止的规则(可以是ID达到一个数量, 或者是设置一个截止时间里程碑)
  3. 参与抽象的同学回复一个幸运字符串([0-9a-zA-Z-_]等字符组成,1-32个字符),也可以用自己的账号(如果用户如果担心泄密,也可以公布MD5)
  4. 开奖前我公布作为种子的秘密字符串,大家可以验证MD5,以防止我作弊
  5. 开奖前,参与者如果是提供MD5的也需要公布自己的幸运字符串,大家也去验证
  6. 每个ID和秘密的种子字符串各生成一个对应的crc32数字,最后把数字加起来对人数取模就是中奖号
  7. 每个ID作为utf8字符串排序,排序后的位置就是每个ID的抽奖号码
  8. 在开奖后和结果公布之前,会锁定这个issue,之后会再重新打开
  9. 抽完一个之后删除中奖ID,继续上述流程
  10. 任何人可以验证结果

补充点:


抽奖的代码(Go语言实现)

下面是抽奖算法的例子,种子字符串是wasm,2各参与者:

// Copyright 2018 chaishushan@gmail.com. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package main

import (
    "fmt"
    "hash/crc32"
    "sort"
)

func main() {
    luckyStar := MakeLuckyStar("wasm", map[string]string{
        "chai2010": "chai2010",
        "ending":   "ending",
    })

    fmt.Println(luckyStar)
    // output: ending
}

func MakeLuckyStar(seed string, luckyTokens map[string]string) string {
    var (
        crc32Sum   = uint64(crc32.ChecksumIEEE([]byte(seed)))
        sortedKeys = make([]string, 0, len(luckyTokens))
    )

    for id, tok := range luckyTokens {
        crc32Sum += uint64(crc32.ChecksumIEEE([]byte(tok)))
        sortedKeys = append(sortedKeys, id)
    }
    sort.Strings(sortedKeys)

    idx := int(crc32Sum) % len(luckyTokens)
    return sortedKeys[idx]
}

https://play.golang.org/p/mox2zhbde49

zlus commented 5 years ago

zlus

z-jingjie commented 5 years ago

重在参与!谢谢大神为WASM社区贡献作品~ 幸运字符串用GitHub ID就好~

hoperuin commented 5 years ago

gogogo

yxwsbobo commented 5 years ago

1

oracle3 commented 5 years ago

没看懂

elvinn commented 5 years ago

elvinn

joeycold commented 5 years ago

分母+`

duobei commented 5 years ago

+1

qiushuiqs commented 5 years ago

qiushuiqs

un-defined commented 5 years ago

3

chai2010 commented 5 years ago

合法的幸运字符串必须以 [0-9a-zA-Z-_] 等字符组成,长度为1-32个字符。 如果是不合法的幸运码,那么将用ID作为幸运码。

如果是不合法的幸运码,可以重新想一个, 最终以截止时间前最后一次回复为准。

logeable commented 5 years ago

A_A

vfan commented 5 years ago

jscoder

tangtao007 commented 5 years ago

happytoTom

zacklocx commented 5 years ago

zacklocx

Maopy commented 5 years ago

maopy

xbox1994 commented 5 years ago

niupi

niucang commented 5 years ago

niucang

renji001 commented 5 years ago

v587

litianjiao commented 5 years ago

JoJo

gladmo commented 5 years ago

gladmo

lowesyang commented 5 years ago

lowesyang

yohoj commented 5 years ago

yohoj

yangliyl commented 5 years ago

yangliyl

iloeng commented 5 years ago

JustForFun

YL2014 commented 5 years ago

YL2014

Noel1992 commented 5 years ago

happy

mrFranklin commented 5 years ago

20150308

chai2010 commented 5 years ago

种子字符串的 MD5 为: 1674409b850179fab3d35f400054ff79

截止时间为 2018.12.31(根据情况可能提前截止,需要提前1周通知),参与的ID不超过100个。

开奖时我会公布字符串

yunshang commented 5 years ago

alshin

Ir1d commented 5 years ago

ir1dxd

penghua123 commented 5 years ago

goodluck

oracle3 commented 5 years ago

oracle3

itstudying commented 5 years ago

webassembly

loohoo commented 5 years ago

loohoo

googya commented 5 years ago

hoodoo

Mr-Raya commented 5 years ago

lihail

fqd511 commented 5 years ago

511

yj21world commented 5 years ago

yj

hanlike commented 5 years ago

webassembly 😊

yuxineverforever commented 5 years ago

wasmjs

orangemio commented 5 years ago

orange

tinysniper commented 5 years ago

赞!

jeanary commented 5 years ago

谢谢无私贡献,参与抽奖

chai2010 commented 5 years ago

很多同学有点等不及提前下单了,因此我们也希望快点抽奖。 我目前想法是,下周三(2018.12.19)24:00前参与的有效,下周四公布种子字符串开奖(根据之前的规则提前一周通知)。

另外,有些回复中文的直接以id作为幸运码了,还有一个幸运码包含了C++中的加号不在有效字符中。 希望能将+符号也作为有效的字符。

大家如果有异议,在本周提出(直接回issue)。 如果没有异议,就按这个计划执行了。

最终开奖时,会给出完整的Go代码,大家自己运行验证。

gin-c commented 5 years ago

tell

smartepsh commented 5 years ago

py_trade

zhmushan commented 5 years ago

zhmushan

shoukailiang commented 5 years ago

goodliang

Xzeffort commented 5 years ago

cookiesEason