编程拼图和代码高尔夫

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

8
输出大小超过Graham数的最短终止程序
编写满足以下要求的最短程序(长度以字节为单位): 没有输入 输出到标准输出 执行最终终止 输出字节总数超过Graham的数量 假设程序运行到能够访问无限资源的理想计算机1上的“正常”终止,并且在必要时修改了通用编程语言(无需更改语法)以允许这样做。基于这些假设,我们可以称其为Gedanken实验。 首先,这是一个73字节的Ruby程序,该程序在快速增长的层次结构中计算fω+ 1(99): f=proc{|k,n|k>0?n.times{n=f[k-1,n]}:n+=1;n};n=99;n.times{n=f[n,n]};puts n 1编辑:更准确地说,假设我们采用现有系统并对其进行修改,以使其对存储大小没有上限(但始终是有限的)。在指令的执行,时间不应该被修改,但该机被认为是因为它会对它的工作寿命没有上限理想。

11
查找最大素数,其长度,总和与素数为素数
数字113是第一个素数,其长度3为素数,数字和5 = 1 + 1 + 3为素数,数字乘积3 = 1 * 1 * 3为素数。 具有这三个属性的素数将称为至尊素数。质数11117和1111151是其他示例。 目标 编写一个程序,可以在一台像样的现代个人计算机上在不到一个小时的时间内找到最大的最大质数(例如此处的首选规范)。 您不应该简单地给我们提供最高的质数。您需要使用有效的代码向我们展示您的搜索过程。您可以基于您或其他人的解决方案,但请务必给予他们好评。我们通常是想在一个小时内找到可在普通计算机上实现的最大最高质数。 计分 找到最大的首要胜利的提交。如果事实证明存在无限多个最高素数,则第一个提交的最高素数获胜。 (如果您可以从数学上证明有无数个至尊素数,我会仅仅因为这个而给您200个赏金代表。:)) 细节 您可以使用任何来源生成素数(例如,互联网)。 您可以使用概率素数测试方法。 一切都在基数10中。 零和一不视为质数。 包含0的素数具有0如此明显的数字产品,它们不可能是至高无上的。 为了使页面更整洁,请使用以下格式添加大(100位数以上)最高质数: {[number of 1's before the prime digit]}[prime digit]{[number of 1's after the prime digit]} 因此1111151可以表示为{5}5{1}。

30
确定所有十进制数字是否唯一
关于Stack Overflow的已删除问题有时可以使高尔夫球变得更好。 编写一个以非负整数作为输入的函数,如果该数字以10为基的所有数字都是唯一的,则返回true。例: 48778584 -> false 17308459 -> true 字符数仅包含功能。 如果选择用C或C ++回答:没有宏,没有未定义的行为;实现定义的行为和编译器警告都可以。

16
输出a句的可执行句[关闭]
难题: 编写一个简短的三行程序,其中: 朗读时每行有5/7/5个音节 运行时输出一个句。 具有正确结构但非haiku输出的程序示例为(Python): >>> for x in range(3): ... print "EXTERMINATE HUMANS" ... # I am a Dalek. ... EXTERMINATE HUMANS EXTERMINATE HUMANS EXTERMINATE HUMANS (此评论有点不合时宜。) 朗读为: 对于范围三中的x 打印出人类! 我是达莱克 任何语言都是可以接受的。为了大声阅读,!@#$%^&*()_+可以接受诸如Waka Waka Bang Splat之类的符号,也可以忽略它们,也可以大声发音。(我肯定会有一个Perl条目,例如!***(!:, )(*@@@#, )_(*)!.) 如果代码或输出特别有趣,或特别是zen,则加分。 编辑:如果您的语言需要样板才可以做任何有趣的事情(#include <iostream>?),那么我很乐意忽略样板。 我接受了Paul Richter的Common Lisp ku句,理由是它使我笑了五分钟。 尊敬地提及Timwi的创造性规则弯曲(编译器输出?!)和令人难忘的产品线"Static void. I long for …


30
打印字母四次
程序必须打印四次字母:第一次按正常字母顺序,第二次按qwerty键盘顺序,第三次按dvorak键盘顺序,最后按相反的字母顺序打印。输出应类似于以下内容: abcdefghijklmnopqrstuvwxyz qwertyuiopasdfghjklzxcvbnm pyfgcrlaoeuidhtnsqjkxbmwvz zyxwvutsrqponmlkjihgfedcba 输出不区分大小写,您可以在任意位置添加或省略换行符或空格。 要点:程序必须少于104个字符,换句话说,必须小于字母的长度乘以四。 我将用最短的代码接受答案,除非我看到一些令我印象深刻的真正聪明或有趣的东西。 编辑:我将在2011年4月27日星期三接受最短答案。 EDIT2:赢家是(照常)以64个字符组成的Golfscript!第二名,仅落后3个字符,在Golfscript中也有67个字符,其次是Bash,排名第 32 位。 但我想提及其他一些内容,例如这个,根据您的定义,仅使用了52个“字符”,而这个字符是他用自己创建的语言编写的。 当时有几个 人 谁打破了一条不成文的规定,并没有出线,但我会提到他们只是为自己没有盒子的思维方式。

30
PHP高尔夫技巧
您使用PHP打高尔夫球有哪些一般技巧?我正在寻找可以应用于编码高尔夫球问题的想法,这些想法至少在某种程度上特定于PHP(例如,“删除注释”不是答案)。请为每个答案发布一个提示。
37 code-golf  tips  php 

5
i = 3 = 2
受无限系列视频的启发。 介绍 Pi定义为圆周与圆直径之比。但是如何定义一个圆呢?通常,圆被定义为到中心点的距离恒定的点(假设中心位于(0,0))。下一个问题是:我们如何定义距离?以下我们考虑距离的不同概念(由Lp-norms 引起): 给定一个范数(=测量长度的东西),我们可以很容易地构造一个距离(=两点之间的距离),如下所示: dist(A,B) := norm (A-B) 欧几里得范式由下式给出: norm((x,y)) = (x^2 + y^2)^(1/2) 这也称为L2范数。其他Lp范数是通过将2上面公式中的替换为1到无穷大之间的其他值来构造的: norm_p((x,y)) = (|x|^p + |y|^p)^(1/p) 这些不同规范的单位圆具有截然不同的形状: 挑战 给定一个p >= 1,计算Lp圆相对于- Lp范数的周长与直径之比,精度为四个有效数字。 测试用例 我们可以将其用于p,q与1 = 1/p + 1/q我们获得相同的比率Lp和Lq标准比率。此外,由于p = q = 2该比率最小,并且p = 1, q = infinity我们得到的比率为4,因此比率始终在pi和之间4。 p or q ratio 1 infinity 4 2 …

18
丹麦文数到100
使用丹麦的计数方法,以正确的顺序打印0-100之间的所有数字 他们如何计数 像英语一样,他们有专用的0-20、30、40和100单词 他们没有说twenty-one和twenty-two,而是说one and twenty和two and twenty 从50开始,他们说10的倍数为n * 20 50 = half third times twenty = half way to the 3rd multiple of 20 60 = three times twenty 70 = half fourth times twenty 80 = four times twenty 90 = half fifth times twenty 因此,例如55将为five and …

30
随机大写
任务 您的任务是创建一个程序或函数,在给定输入的情况下,将输入文本输出为带有大写字母的随机字母,同时将已经大写的字母保持为大写字母。 小写字母大写的每种组合都应该是可能的。例如,如果输入是abc,应该有输出任何以下组合中的一个非零的概率:abc,Abc,aBc,abC,ABc,AbC,aBC或ABC。 输入值 您的输入是一个字符串,包含任意数量的可打印ASCII字符,例如Hello World。该输入的输出包括HeLLo WoRlD,HElLO WOrld等 计分 这是代码高尔夫,因此每种语言中最短的答案会获胜!

28
这是普罗斯数吗?
一个普罗斯数,弗朗索瓦·普罗斯命名,是可以表示为一个数 N = k * 2^n + 1 其中k是奇数个正整数,n是一个这样的正整数2^n > k。让我们使用一个更具体的例子。取3。3是Proth数,因为它可以写成 (1 * 2^1) + 1 并2^1 > 1感到满意。5也是Proth编号,因为它可以写为 (1 * 2^2) + 1 并2^2 > 1感到满意。但是,7 不是 Proth编号,因为以表格形式写入的唯一方法N = k * 2^n + 1是 (3 * 2^1) + 1 并且2^1 > 3不满意。 您面临的挑战非常简单:给定正整数,您必须编写一个程序或函数,确定该程序或函数是否是Proth数字。您可以采用任何合理的格式输入,如果输出是Proth值,则应输出真实值,如果不是,则应输出错误值。如果您的语言具有“ Proth-number detection”功能,则可以使用它们。 测试IO 以下是前1000个Proth的前46个数字。(A080075) 3, 5, …

7
Python版本清单
Python是当今增长最快的主要编程语言。这是连续第三年最受欢迎的语言,这意味着尚未使用该语言的开发人员表示他们想学习它。[1] Python受欢迎的原因是其许多版本。[需要引用]实际上有116个Python版本,包括两个开发版本。 您的任务是按照您喜欢的顺序和格式,输出/打印所有Python版本的列表。您不得使用任何存储了此信息的内置函数。 您可以自由选择输出格式,但每个版本必须在标准的方式来确定:1.1,2.3.0,2.7.10等。 完整列表2 Python版本的,用逗号分隔如下所示: 1.1, 1.2, 1.3, 1.4, 1.5, 1.5.1, 1.5.2, 1.6, 2.0, 2.0.1, 2.1, 2.1.1, 2.1.2, 2.1.3, 2.2, 2.2.1, 2.2.2, 2.2.3, 2.3, 2.3.1, 2.3.2, 2.3.3, 2.3.4, 2.3.5, 2.4, 2.4.1, 2.4.2, 2.4.3, 2.4.4, 2.5, 2.5.1, 2.5.2, 2.5.3, 2.5.4, 2.6, 2.6.1, 2.6.2, 2.6.3, 2.6.4, 2.6.5, 2.6.6, 2.6.7, 2.6.8, 2.6.9, …

6
COBOL Y2K Redux
在20世纪90年代,COBOL电脑工程师摸索出了一种通过将它们转换为延长六位数的日期字段YYYDDD,其中YYY是year - 1900和DDD是一年中的一天[001 to 366]。此方案可以将最长日期延长到2899-12-31。 在2898年,工程师们开始恐慌,因为他们已有900年历史的代码库将要失败。从2898年开始,他们只是使用自己的时间机器将一个单独的Codeinator发送到1998年,并使用了该算法,并实现了尽可能广泛地实现它的任务: 请使用一种方案PPQQRR,在这种情况下,如果它是1900年代01 ≤ QQ ≤ 12的标准YYMMDD日期,但如果QQ > 12它代表2000-01-01,则以100为底PP,RR而以87为底QQ - 13。 该方案已远远超过2899年,并且也与标准日期向后兼容,因此不需要修改现有档案。 一些例子: PPQQRR YYYY-MM-DD 000101 1900-01-01 -- minimum conventional date suggested by J. Allen 010101 1901-01-01 -- edge case suggested by J. Allen 681231 1968-12-31 -- as above 991231 1999-12-31 -- maximum conventional date 001300 …

30
连续的1位递增
给定Bits的模式(字符串或数组格式): [0,1,1,1,0,1,1,0,0,0,1,1,1,1,1,1] 任务是用从1开始的升序数字序列替换任意数量的连续1位。 输入值 模式(可以作为字符串或数组接收)示例: 串: 1001011010110101001 数组: [1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1] 输出量 升序数字序列(可以作为字符串或数组返回)示例: 串: 1 0 0 1 0 1 2 0 1 0 1 2 0 1 0 1 0 0 1 数组: …

19
支架扩展!
您面临的挑战是在程序的输入中扩展一些括号,如下所示: 在两个匹配的括号和之间找到一个字符串s,在括号后面加上一个数字n。[] 卸下支架。 重复s次,将其自身替换n次。(如果n为0,只需删除s。) 转到步骤1,直到输入中没有匹配的括号为止。 附加规则和说明: 您将接受输入并通过任何允许的方式提供输出。 在输出中允许尾随换行符。 您只需要在输入中处理可打印的ASCII。 您可以假定所有括号都匹配,即您将永远不会收到输入[]]]]或[[[[]。 您可以假定每个右括号]后面都有一个数字。 测试用例: Input -> Output [Foo[Bar]3]2 -> FooBarBarBarFooBarBarBar [one]1[two]2[three]3 -> onetwotwothreethreethree [three[two[one]1]2]3 -> threetwoonetwoonethreetwoonetwoonethreetwoonetwoone [!@#[$%^[&*(]2]2]2 -> !@#$%^&*(&*($%^&*(&*(!@#$%^&*(&*($%^&*(&*( [[foo bar baz]1]1 -> foo bar baz [only once]12 -> only once2 [only twice]23456789 -> only twiceonly twice3456789 [remove me!]0 -> before [in …

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.