看着像八卦,数数不是八卦,是29卦
每卦又有29个小弧
所以是29×29个bit
这29×29个bit怎么理解呢?并且从哪一卦开始到哪一卦结束?是先环向层层向里走还是先径向逐卦走?
我想不出来。
我猜测:
可能是这个二进制串可以翻译成某个ASCII字符串,可能这个二进制串是通过Base64编码过的,可能性太多了

问林教主。
林教主说:从圆心沿180度方向向外剪开,剪开之后就得到一个小扇子,这个小扇子其实是一个正方形,这个正方形图片就是一个二维码,拿出手机来一扫就进入一个URL链接,就大功告成了。
问怎么想出来的?
林教主说:二维码4个角处有3个正方形,看到了180度方向有两个正方形,这个八卦本身又像二维码。
问怎么转化成正方形二维码?
林教主说:一张笔一支纸一小时
我说:那还了得

这个可以编程实现。
关键是:根据(第几个扇形,第几个弧)两个变量可以求出来该小弧的颜色。

说起来简单,操作起来还是遇到不少问题:

  • 中间有一个小圆圈,这个小圆圈的半径必须求出来。这个问题可以通过图形化界面,鼠标悬浮一下大约估计一下。
  • 每个小弧的厚度必须求出来,这个当然可以根据第一个问题中小圆圈的半径求出来。
  • 这个图片格式是RGBA格式的,也就是说包含透明色,透明色默认就是白色,而不透明色可能是白色也可能是黑色,每个像素的RGB也不是纯黑纯白,所以需要“纯化一下”,让它变成非黑即白的模式。这是一个预处理的过程。

下面是代码,用PIL图片处理模块和tkinter两个模块

"""
图形化界面确定一些参数:比如中间圆圈的半径
"""
from PIL import Image, ImageTk
import tkinter
import math

window = tkinter.Tk()
img = Image.open("w.png")
sz = img.size[0]

def init():
    # 预处理图片,使之变成纯黑纯白
    def getColor(c):
        # 去除噪声
        if c[3] == 0:
            return 255, 255, 255, 255
        if c[3] == 255:
            if c[0] > 128 and c[1] > 128 and c[2] > 128:
                return 255, 255, 255, 255
        return 0, 0, 0, 255

    for i in range(sz):
        for j in range(sz):
            img.putpixel((i, j), getColor(img.getpixel((i, j))))

init()
image = ImageTk.PhotoImage(img)
canvas = tkinter.Canvas(width=image.width(), height=image.height())
canvas.pack()
canvas.create_image(sz / 2, sz / 2, image=image)

def getBit(x, y):
    c = sz / 2  # 中心坐标
    r = 44  # 中心圆盘半径
    w = (c - r) / 29
    R = r + (x + 0.5) * w
    theta = (math.pi * 2 / 29) * (y + 0.5)
    x, y = c - R * math.cos(theta), c - R * math.sin(theta)
    x, y = int(x), int(y)
    color = img.getpixel((x, y))
    return color[:3]

def hover(e):
    window.title("%d,%d,%s" % (e.x, e.y, str(img.getpixel((e.x, e.y)))))

def go():
    # 获取二维码图片
    ans = Image.new("RGB", (30, 30))
    for i in range(29):
        for j in range(29):
            ans.putpixel((i, j), getBit(i, j))
    ans = ans.resize((290, 290))
    ans.show("haha")

def getParams():
    # 获取参数
    window.bind("<Motion>", hover)
    window.mainloop()

# getParams()
go()

MegCup 2017 极客挑战赛 初赛试题的更多相关文章

  1. 银联高校极客挑战赛 初赛 第一场 B

    自学图论的码队弟弟 试图写非递归求解,然后TLE了一下午==,全程找不到bug,换成递归,一发AC 判断环写得很丑== #include<bits/stdc++.h> using name ...

  2. 银联高校极客挑战赛第一场 A.码队女朋友的王者之路[水题]

    目录 题目地址 题干 代码和解释 题目地址 计蒜客回顾比赛 码队女朋友的王者之路 题干 代码和解释 本题难度不大,但是一开始没有读懂题,以为净胜场次是确定的,没有"最高净胜场次"的 ...

  3. [51NOD]BSG白山极客挑战赛

    比赛链接:http://www.51nod.com/contest/problemList.html#!contestId=21 /* ━━━━━┒ギリギリ♂ eye! ┓┏┓┏┓┃キリキリ♂ min ...

  4. PHP极客水平测试——给创业公司用的远程面试题

    出了份面试题<PHP极客水平测试>,创业公司可以用这个远程笔试啦,先答题,看答案合适了再邀请面试.希望对创业公司有所帮助,欢迎围观提建议哦^_^ 题目会持续更新. 答题地址:http:// ...

  5. [web建站] 极客WEB大前端专家级开发工程师培训视频教程

    极客WEB大前端专家级开发工程师培训视频教程  教程下载地址: http://www.fu83.cn/thread-355-1-1.html 课程目录:1.走进前端工程师的世界HTML51.HTML5 ...

  6. <路径算法>哈密顿路径变种问题(2016华为软件精英挑战赛初赛)

    原创博客,转载请联系博主! 前言:几天前华为的这个软件精英(算法外包)挑战赛初赛刚刚落幕,其实这次是我第二次参加,只不过去年只入围到了64强(32强是复赛线),最后搞到了一个华为的一顶帽子(感谢交大l ...

  7. 极客圈(一)树莓派3B协同Python打造个性化天气闹钟

    人生苦短,我用Python~ 一直想自己折腾些极客的东西出来,供自己使用或者是供他人使用.一则可能对自己的生活是一种帮助,二则是对自己技能的提高,三则显得高大上,一直努力,一直提高,一直Happy!~ ...

  8. "做中学"之“极客时间”课程学习指导

    目录 "做中学"之"极客时间"课程学习指导 所有课程都可以选的课程 Java程序设计 移动平台开发 网络攻防实践 信息安全系统设计基础 信息安全专业导论 极客时 ...

  9. (转)2017年最新企业面试题之shell(一,二)

    2017年最新企业面试题之shell(一) ********************************************** 企业Shell面试题1:批量生成随机字符文件名案例 * *** ...

随机推荐

  1. 使用python爬取东方财富网机构调研数据

    最近有一个需求,需要爬取东方财富网的机构调研数据.数据所在的网页地址为: 机构调研 网页如下所示: 可见数据共有8464页,此处不能直接使用scrapy爬虫进行爬取,因为点击下一页时,浏览器只是发起了 ...

  2. 大话设计模式--委托--IOS

    最近看了一些关于IOS委托的文章,看完之后,感觉不大好. 引文: 委托delegation是一种简单但是功能强大的设计模式,它的功能是程序中一个对象代表另一个对象,或者一个对象与另外一个对象协同工作. ...

  3. 前端开发 Grunt 之 Connect详解

    在前端开发过程中,我们需要在开发过程中,将开发中的站点部署到服务器上,然后,在浏览器中查看实际的效果,在 Grunt 环境下,可以直接使用集成在 Grunt 中的 Connect 插件完成站点服务器的 ...

  4. 2.10. 代码片段:demo方法(Core Data 应用程序实践指南)

    该代码段我觉得没有太多东西 - (void)applicationDidBecomeActive:(UIApplication *)application { [self cdh]; [self de ...

  5. hdu-3790-最短路径问题(dijkstra算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3790 这题cin会超时i 关于解决cin超时的问题 在main函数开头加上 ios::sync_wit ...

  6. js原生设计模式——3简单工厂模式\js面向对象编程实例

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  7. JQuery的$.each(list,function(i,a){} 中 i和a 未定义,a取不到值

    $.each(list,function(i,a){ var status = ""; if(a.status==0) status="未审核"; else i ...

  8. javascript window.confirm确认 取消对话框实现代码小结

    本文章讲述的三种都是基于了javascript confirm提示确认框的做法了,只是在不同的地方写哦,有需要的同学可参考一下   confirm() 方法 confirm() 方法用于显示一个带有指 ...

  9. (五)Hololens Unity 开发之 手势识别

    学习源于官方文档 Gestures in Unity 笔记一部分是直接翻译官方文档,部分各人理解不一致的和一些比较浅显的保留英文原文 (五)Hololens Unity 开发之 手势识别 HoloLe ...

  10. 获取SQL中某一列的类型及精度

    SELECT @type=t.name, @prec=c.prec FROM sysobjects o        JOIN syscolumns c on o.id=c.id        JOI ...