分享

一道囚徒问题

 编程教室 2021-03-18

前两天看到一条新闻:

@王威廉: 很多美国人已经意识到,计算机编程和相关技术以后将会是人类的一项核心技能。图为美国圣昆丁监狱的囚犯积极学习编程技能。

该项目负责人说,从前67%被释放的囚犯都会在3年内二进宫,但是我们编程项目出来的囚犯没有再返回监狱的例子,而且还有不少去做了程序员。

既然犯人们都开始学编程了,咱也不能闲着啊,还是要不断提高自己的姿势水平。

于是,我参考以前看到的某个数学题,胡乱编了道有关囚徒的编程问题:

在某个虚构的监狱里,关押着 n 个囚犯。此监狱偶尔会有 1 个名额的假释机会,但决定名额的方式比较奇葩:

所有囚犯排成一个圈,以某个人为起点从 1 开始报数,依次递增。所有报到奇数的犯人立刻离开,剩下的人继续往下报数。最后剩下的一个犯人获得假释。

那么,站在哪个位置,才能保证一站到底?

想象一下,你现在是一个有台装了 Python 的电脑且会编程的囚犯,如何实现一个函数 lucky(n),让它返回这个幸运数字。

动手试试,我会在本周日给出解答。


    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多