V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
whosyours
V2EX  ›  问与答

某知名软件公司机试题,算法+逆算。坑爹

  •  1
     
  •   whosyours · 2019-01-06 15:04:24 +08:00 · 2778 次点击
    这是一个创建于 2183 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上周五面试深圳某知名软件公司,竟然要机试,遇到这个奇葩题,问题 Q1 倒是简单。

    Q2 加分项把我难住了,真想吐槽出面试题的脑子都在想什么...

    偷偷拍照,回家后尝试用伪随机碰撞解题,暂时卡死中.....

    有大神有更快速方法或思路?


    程序描述:

    一副完整纸牌有 52 张(无大小王),4 种不同花色,每种花色 13 张。我们用一个整数 m 表示出所有的 52 种情况,规则是:

    m / 13: =0: 红心,=1: 方块,=2: 梅花,=3: 黑桃

    m % 13: =0:2,=1:3,=2:4 .... =8:10,=9:J,=10:Q,=11: K,=12:A

    比如:m = 15 表示:方块 4 m=38 表示:梅花 A

    Q1:( 基础项 ) -- #这个简单#

    我们希望用程序模拟 1 副扑克牌随机抽取 5 张,发给某人的过程。

    发牌后需要排序:规则是:先按花色,再按点数。花色的大小顺序是:梅花、方块、红心、黑桃。点数的顺序是:2、3、4、…. 10、J、Q、K、A。

    Q2:( 加分项 )

    已知五次连续发牌结果如下:
    1、方块 6、红心 7、黑桃 7、梅花 8、梅花 10
    2、黑桃 9、黑桃 2、红心 10、红心 5、方块 Q
    3、红桃 J、方块 K、黑桃 K、红心 3、黑桃 5
    4、梅花 3、方块 A、黑桃 A、梅花 K、梅花 5
    5、红心 A、红心 9、黑桃 J、黑桃 4、红心 K
    
    请根据以上发牌顺序,尝试逆算分析下一次发牌结果(五张)
    
    第 1 条附言  ·  2019-01-06 21:19:07 +08:00
    sorry, 笔误,示例中的"红桃" == "红心"
    8 条回复    2019-01-07 10:52:19 +08:00
    JamesR
        1
    JamesR  
       2019-01-06 15:37:54 +08:00
    如果 Q2 不是故意为难人,那么就是很简单是从 52 张牌里面减去已经发的,剩下的再用随机数发 5 张出来。
    whosyours
        2
    whosyours  
    OP
       2019-01-06 16:10:29 +08:00
    @JamesR 感谢,不过我感觉不是,否则不会说连续五次发牌结果了,那样的话也太简单了~~ :)
    zk8802
        3
    zk8802  
       2019-01-06 16:49:11 +08:00 via iPhone   ❤️ 1
    部分(非密码学安全的)伪随机数生成器是可以通过产生的伪随机数序列计算出种子的。如果知道使用的语言和伪随机数生成函数的话,可以尝试反推。

    简单的伪随机数生成器往往可以用 SMT 求解器(比如 Z3 )根据输出序列求出种子。
    takato
        4
    takato  
       2019-01-06 19:41:10 +08:00   ❤️ 1
    = =吐槽向:Q2 看着有点累,为啥有“红心”又有"红桃"- -。。

    所以 3-1 是“黑桃”的笔误还是“红心”的笔误= =?
    whosyours
        5
    whosyours  
    OP
       2019-01-06 21:07:45 +08:00
    @takato 感谢,是红心。。。 红桃 == 红心
    whosyours
        6
    whosyours  
    OP
       2019-01-06 21:09:15 +08:00
    @zk8802 感谢,我找找相关资料了解一下
    greed1is9good
        7
    greed1is9good  
       2019-01-06 23:35:55 +08:00 via Android
    @whosyours 是楼主想复杂了,明显就是一副牌连续发了 25 张,让计算接下来要发的 5 张,27 选 5。。。
    whosyours
        8
    whosyours  
    OP
       2019-01-07 10:52:19 +08:00
    @greed1is9good 我怎么感觉不像。。。唉,坐等电话通知,到时候直接问下面试官吧。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2739 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 125ms · UTC 13:48 · PVG 21:48 · LAX 05:48 · JFK 08:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.