编程拼图和代码高尔夫

编程益智爱好者和代码高尔夫球手的问答

30
打印所有ASCII字母数字字符而不使用它们
挑战 打印以下字符: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 要注意的是,您不得在代码中使用其中任何一个。 您可以按任意顺序打印它们,带有或不带有开头或结尾的换行符,但不能打印任何其他字符。 规则 您不得使用上述集合中的任何字符 您可以使用其他任何字符 别作弊 禁止标准漏洞 这是代码高尔夫球,最短答案胜出。 澄清说明 如果您的语言使用其他字符集,则不得在该字符集中使用与字母数字字符相对应的代码点。 从函数返回字符串被认为是有效的输出形式。 您可以返回一个char数组。

12
连续投票检测
Stack Exchange自动检测连续投票(当一个用户对另一位用户的许多帖子进行投票或否决时)并将其撤消。在这个挑战中,您将实现一个非常非常简单的“序列投票”检测器。 输入项 输入是代表投票列表的字符串。每个由两个字符组成的组代表一个投票-第一个是投票者,第二个是被投票的用户。例如,以下输入 ababbccd 可被分析为ab ab bc cd,代表a投票的b两次 b投票权的c一次,c投票权的d一次。 输入将仅包含小写字母,并且始终是大于0的偶数长度。您也无法对自己进行投票(因此,no aa或hh)。 输出量 出于此挑战的目的,串行投票被定义为任何给定用户对任何其他用户进行三次或更多次投票。 输出是多少票应为每个用户相反(即,许多票如何在每个用户的互换,没有多少票,他们给了被逆转),格式[user][votes][user2][votes2]...。例如,输入abababab(a上投票b四次)应输出 b4(四票已经从逆转a到b)。 输出可以按照您想要的任何顺序进行,但是如上所述,输入和输出都必须是单个字符串。 测试用例 In Out --------------------------------------------------------------------------- abababcbcbcbcbbababa b7a3 edfdgdhdfgfgfgih g3 jkkjjkkjjkkjljljljmlmlnmnmnm j6k3m3 opqrstuv <none> vwvwwvwv <none> xyxyxyxyxyxyxyzyzyzyxzxzxz y10z3 nanananananananabatman a8 banana <none>
51 code-golf 

18
我的4音符音乐盒可以播放那首歌吗?
我有一个曲柄操作的音乐盒,可以播放四个音符。当我转动曲柄时,它会根据曲柄的位置和转动的方向拔出四根弦之一。当曲柄向北旋转时,此框(其字符串从1到4编号)如下所示: 1 | 2 | O 4 3 从那里,我可以顺时针旋转曲柄以拔出#2弦,然后将曲柄指向东: 1 2 O--- 4 3 或者,我也可以从北方逆时针旋转曲柄以播放#1弦,并以指向西的曲柄结尾: 1 2 ---O 4 3 然后,该框可以在任何给定时间播放两个音符之一:顺时针方向可用的下一个音符或逆时针方向的下一个音符。 挑战 您面临的挑战是编写一个程序或函数,该程序或函数接受非空的音符值字符串(即数字1到4),并确定是否有可能在音乐盒上播放该音符序列。产生真实或错误的结果以指示输入的可播放性或不可播放性。 一些注意事项: 输入不对初始开始位置做任何假设。输入214(从东开始并严格按逆时针方向移动)和234(从北开始并严格按顺时针方向移动)输入均有效。 每次发出音符后,曲柄可在任一方向上自由移动。33333通过在一个字符串上来回移动,可能会产生一系列相同的音符(例如)。该系列赛1221441完全可以玩(从西开始,顺时针移动两步,然后逆时针移动三步,然后顺时针移动两步)。 样品 一些true情况: 1 1234 1221 3333 143332 22234 2234 22214 1221441 41233 一些false情况: 13 (note 3 is never available after note 1) 1224 (after …

20
检测时间旅行
如今,无处不在的计算机-汽车,火车,滑板,甚至是核反应堆。您的软件将在时间旅行设备中运行的可能性只是时间问题。你能应付吗?您至少可以检测到吗? 你的任务: 编写一个循环并不断查询系统时间的程序,以检测时间旅行。 如果时间在两个连续查询之间向前移动一天或更长时间,则为向前时间旅行。在这种情况下,您的程序应打印: TS TS: YYYY? You mean we're in the future? 如果时间在两个连续查询之间向后移动了一定量,则为倒退时间旅行。在这种情况下,您的程序应打印: TS TS: Back in good old YYYY. TS TS是时间旅行前后的时间戳。YYYY是目标年份。 时间戳可以采用任何格式,包括至少4位数字的年,月,日,小时,分钟和秒,以非数字分隔。 局限性: 您必须至少支持19、20和21世纪的日期。 您必须使用发布此挑战之前使用的语言。 您必须在发布此挑战后才发布答案。 您必须使用发布答案之前使用的语言。 您只能在发布答案后对其进行编辑。 您的程序不得输出除所需输出以外的任何输出。偶尔出现“伟大的斯科特!” 被允许。 这是代码高尔夫球。最短的答案将获胜。 相关的电影参考可能会使您的答案太长,但可能会使您感到不满意。
51 code-golf  date 

15
高尔夫挑战赛,麦凯
麦克基先生是南方公园的一个人物,以他所说的一切都加上“ m'kay”而闻名。 编写一个程序或函数,将一串文本转换成Mackey先生会说的话。 麦凯安置 m'kay有一个随机的50%的几率被添加的标点符号后,,.,?和!。如果是这种情况,它将紧跟在其前面并在空格之前的完全相同的标点符号。 例如,在句子中Test, test.,m'kay可以添加两个位置:逗号之后和句点之后,每个位置都有50%的机会。可能的结果是Test, m'kay, test。或Test, test. M'kay.或Test, m'kay, test. M'kay.。 必须始终至少m'kay添加一个。而且,它不能总是在同一位置,m'kay可以添加的每个有效位置必须以相同的概率出现。也就是说,m'kay如果由于随机性而从未添加any ,则不能总是在字符串末尾添加m'kay。如果只有一个m'kay,即使强制存在,它也必须具有相同的出现在每个有效位置的概率。 如果m'kay是后?,.或者!,在m必须大写。 min 的数目m'kay必须在1到3之间统一选择。也就是说m'kay,mm'kay和mmm'kay都是所有可能的选择,每个选择的概率为0.33 ...如果必须将其大写(请参见上述规则),则m必须将其全部大写。 输入,输出 输入是ASCII字符串,其中包含从ASCII Dec 32(空格)到ASCII Dec 126(波浪号)的字符~。输入中没有换行符。您可能假设任何输入将至少包含之一, . ? !。 您可以假设m'kay输入中没有或没有任何变体。 输入可以来自STDIN,函数自变量,命令行或类似的东西。 输出可以通过STDOUT,函数返回或类似的东西进行。 测试用例 输入: Test. 可能的输出: Test. M'kay. 输入: Programming Puzzles & Code Golf Stack Exchange is a question and …
51 code-golf  string 

8
1个字符的拼写错误,从C ++编译生成大多数错误消息
似乎简单地更改C ++文件(尤其是使用模板)会产生错误页面。这场比赛的目的是要了解最大的“价格便宜”,即输出错误最少,对源代码的更改最少(添加1个字符)。 因为其他语言更加理智,所以这将限于C ++和gcc版本4.x。 规则 原始源文件必须使用gcc 4.9.2编译为目标代码,且没有错误。 将一个ASCII字符添加到源代码中以创建拼写错误,从而将文件大小增加1个字节。 编译器使用默认选项运行。必需的选项(如-c和-std=c++11允许),不允许的选项(如)-Wall。 指标是 number of bytes of generated error messages ----------------------------------------------------------------------- (bytes of source code with typo) (length of filename passed to compiler) 答案将通过http://ideone.com/ C ++ 4.9.2 进行验证。 例: 文件名是a.cpp,长度为5个字节。 int foo(); 工作编译 gcc -c a.cpp 损坏的源代码: in t foo(); 编译失败 $ gcc …

24
我的世界镜像
这是加尔文。只需尝试获得20个代表,以便该用户可以在PPCG Minecraft服务器聊天室聊天。 编写一个使用正整数的程序或函数。 如果整数是偶数(2、4、6,...),请打印或返回此确切的ASCII艺术字串: __ __ __ __ ___ /\ /\ | |\ | | / | | /\ | | / \/ \ | | \ | |-- | |--\ /__\ |-- | / \ | | \| |__ \__ | \ / \ | | 如果整数是奇数(1、3、5,...),则打印或返回此确切的ASCII美工字符串: __ __ …

22
为自己保存最后一颗子弹
比赛已经结束。胆小鬼是赢家。您可以在这里观看最后一场比赛。 突然出现僵尸!哦,是的! 在这个山丘之王的挑战中,您必须创建一个机器人来生存僵尸启示录。或至少保持尽可能长的时间。 在游戏开始时,每个条目的50个实例将被随机放置在一个较大的环形游戏区域中-也就是说,它看起来像是正方形,但是环绕。游戏区域的大小将取决于条目数,但是最初将占据6%的正方形。每个参赛者以3发子弹开头。 在每个回合开始时,僵尸将从地面上的任意位置升起,摧毁其上方的所有物体。任何在回合开始时靠近僵尸的玩家都将成为僵尸。 对于每个在世的玩家,他们的代码将被调用。它将接收一个PlayerContext对象,其中包含有关其当前状态及其周围环境的信息。每个玩家可以在任何方向看到8个正方形。 玩家必须选择通过返回a来移动(保持静止仍然是有效的动作)Move,或者通过返回来射击附近的人或僵尸Shoot。您的枪的最大射程为5平方。由于您在枪支射程范围内,因此只要还剩下子弹,就可以射击自己。如果两个玩家互相射击,他们都会死亡。 如果两个玩家试图移动到相同的方块上,他们将失败,并且都将返回到其开始的方块。如果仍然存在冲突,将重复此操作直到没有冲突为止,这可能意味着每个人都回到了起点。 如果玩家死于枪击,他们的尸体将保留并形成永久性屏障。他们携带的任何子弹都留在他们的身上,并且可以被邻近方格中的玩家扫除。如果有多个玩家占领与一个尸体相邻的方块,则子弹将在它们之间共享,但其余部分将丢失。 如果玩家成为僵尸,那么他们的子弹就会丢失。僵尸会不经意地走向最近的在世玩家。 参赛作品的得分取决于其最长寿的选手存活的时间。 参赛作品 可从https://github.com/jamespic/zombies获取控制程序。只需克隆它,然后运行即可mvn compile exec:java。 为了符合条件,条目必须使用JVM语言编写,必须是可移植的并且必须可以在没有特殊设置的情况下从Maven构建。这是为了确保竞争对手不需要安装多个运行时环境来针对竞争对手测试其机器人。 当前,样本条目可用以下语言提供: Java 7-另请参阅更复杂的示例和僵尸代码 斯卡拉2.11.1 Javascript(通过Rhino) Python(通过Jython 2.7 beta 2) Ruby(通过JRuby 1.7.13) Clojure 1.5.1 Frege(有点像Haskell- 这是另一个示例) 如果您想使用未列出的语言进行竞争,可以发表评论以要求使用该语言,我将研究将您选择的语言集成到控制程序中的可能性。或者,如果您不耐烦,则可以向控制程序提交拉取请求。 对于每个条目,只会创建一个实例(按Java的说法)。该Java实例每回合将被多次调用-每个存活的玩家一次。 API package zombie // You implement this. Your entry should be in package `player` interface Player { …

30
确定阵列是否已排序的“创造性”方法
给定一个整数数组,编写一个程序来确定它是否按升序排序。 请记住,这是一个代码拖曳问题。 我正在寻找人们提出的最有趣的方式。 多数投票的答案是成功的。 这个问题的灵感来自候选人在面试中给我的“创造性”解决方案:) “创意”解决方案是这样的: 因为对于排序数组 所有元素左侧的所有元素都必须较小 任何元素右侧的所有元素必须更大 因此,对所有元素运行一个主循环,并通过在主循环中运行两个嵌套循环来检查以上两个条件(一个用于左侧,一个用于右侧) 我感到震惊!!。

30
生成曼德尔布罗特分形[关闭]
您的任务是绘制ascii中设置的mandelbrot。它看起来应该像 复数c在于Mandelbrot集,当序列z(n+1) = z(n)^2 + c,z(0) = 0仍然有限。为了这个挑战,您可以考虑cif的有界序列|z(32)| < 2。 使用您喜欢的语言中的ascii字符并使用尽可能少的字符,在(-2-i)到(1 + i)的复平面上绘制mandelbrot集,最低分辨率为40x30。

30
确定您的语言版本
您面临的挑战是编写一个可以在您的语言的不同版本中使用的多语言。运行时,它将始终输出语言版本。 规则 您的程序应至少在两种语言版本中运行。 程序的输出应仅是版本号。无多余数据。 您的程序可以使用任何您喜欢的方法来确定版本号。但是,输出必须遵循规则2。但是,如果您确定版本号,则输出只能是数字。 您的程序仅需要输出语言的主要版本。例如,在FooBar 12.3.456789-beta中,您的程序仅需要输出12。 如果您的语言在版本号之前或之后放置单词或符号,则无需输出这些单词或符号,只需输出编号。例如,在C89中,您的程序仅需要打印89,而在C ++ 0x中,您的程序仅需要打印0。 如果您选择打印全名或次要版本号,例如C89而不是C99,则只能打印名称。C89 build 32有效,而error in C89 build 32: foo bar无效。 您的程序可能不使用内置的,宏的或自定义的编译器标志来确定语言版本。 计分 您的分数将是代码长度除以其工作版本的数量。分数最低者获胜,祝您好运!

30
北极熊,北极熊,您听到了什么?
儿童读物《北极熊》,《北极熊》,您听到了什么? 有一个非常简单的模式。您可以使用本文来教入门编程概念。 我的儿子很快就对这个想法感到无聊,所以我决定去打高尔夫。 挑战 用您选择的编程语言,编写尽可能小的程序,该程序将打印以下文本。输出应完全匹配,包括大小写,空格和标点符号。 Polar Bear, Polar Bear, what do you hear? I hear a lion roaring in my ear. Lion, Lion, what do you hear? I hear a hippopotamus snorting in my ear. Hippopotamus, Hippopotamus, what do you hear? I hear a flamingo fluting in my ear. Flamingo, …

18
prime
“ prime ant”是一个顽固的动物,它会导航整数并将它们除以整数,直到只剩下质数为止! 最初,我们有一个无限数组A,其中包含所有> = 2的整数: [2,3,4,5,6,.. ] 设p蚂蚁在阵列上的位置。最初,p = 0(数组的索引为0) 每转一圈,蚂蚁就会移动如下: 如果A[p]是素数,则蚂蚁移至下一个位置:p ← p+1 否则,如果A[p]是合数,我们q是规模较小的除数> 1.我们把A[p]通过q,我们添加q到A[p-1]。蚂蚁移至上一个位置:p ← p-1 这是蚂蚁的第一步: 2 3 4 5 6 7 8 9 ... ^ 2 3 4 5 6 7 8 9 ... ^ 2 3 4 5 6 7 8 9 ... ^ …

30
Helloellolloloo Worldorldrldldd
编写一个程序,使用您输入的单词,然后将该单词添加到其本身的后面,减去第一个字母,然后重复执行,直到所有字母消失。例如,cat将变为catatt,并且hello将变为helloellolloloo。 输入 英文字母的26个字母中的任何一个。可能会有多个单词,并用空格分隔,应该将更改应用于每个单词。 输出输入 的单词,每个单词紧跟其后,第一个字母缺失,第二个字母缺失,依此类推,直到没有其他字母可添加为止。 更多示例: ill eel 输出 illlll eelell laser bat 输出 laserasersererr batatt darth vader 输出 dartharthrththh vaderaderdererr 这是代码高尔夫,所以最短的代码获胜。 澄清: 您可以将输入或输出视为列表。您可以使用换行符而不是空格来分隔单词。您可以在输入中添加尾随空格。
50 code-golf  string 

30
说明最小公倍数
给定两个正整数,A和B,示出了它们的最小公倍数通过输出破折号(两行-与长度)LCM(A,B)中的第一行和与垂直条第二线每个Bth的破折号替换每个Ath的破折号后(|)。 这样,每行的结尾将是两位的唯一|行。 例如,如果A = 6且B = 4,则LCM(6,4)= 12,因此: two lines of 12 dashes: ------------ ------------ replace every 6th dash in the first line with a vertical bar: -----|-----| ------------ replace every 4th dash in the second line with a vertical bar: -----|-----| ---|---|---| 因此,最终输出将是 -----|-----| ---|---|---| 输入数字的顺序应与行的顺序相对应。 以字节为单位的最短代码获胜。 测试用例 A …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.