编程拼图和代码高尔夫

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

4
旋转ASCII艺术图
在所有ASCII字符中,很容易看出其中某些字符是同一基本字符旋转的组。例如,V > ^ <。这样就可以构造ASCII艺术作品,该艺术作品可以旋转90度的倍数,并且仍然保留ASCII艺术作品。 挑战 您的目标是制作一个程序,该程序接受ASCII艺术作品和度数以将其从STDIN旋转,然后将旋转的ASCII艺术作品打印到STDOUT。 在输入的第一行上,您的程序将收到一个数字N。该数字表示ASCII图的宽度和高度。 然后,您将再收到N行,每行分别正好包含N个字符(此行不计入换行符)。艺术作品的尺寸将始终为正方形,尽管它可能具有空格形式的填充物以使其成为正方形。 然后,您将在最后一行收到另一个数字:90、180或270。这表示应按顺时针方向旋转图片多少度。 注意:输入的图像将仅包含可以旋转正确量的字符。如果输入与这些要求不完全匹配,则不需要特定的行为。 作为输出,您的程序应精确打印N行,每行N个字符,并在每行之后添加换行符。应当旋转图像,以使原稿中的每个字符都被旋转后的版本替换,并已移至图像中的正确位置。 示例(不是很漂亮的ASCII艺术) 输入值 5 <- || | |V +->+ |O <--+ 90 输出量 ^ +-^ | | | | V +-+-- O <- (因为字符不是正方形,所以旋转90和270看起来效果不佳) 输入值 6 + /\ + | \ \| ( \/| \ ) I \ / :) …

3
写一个三阶奎因
这项挑战是“ 高尔夫互惠 ” 的延伸。 使用您选择的三种语言,创建一个三阶Ouroboros程序。 也就是说,用语言A编写程序pA,该程序以语言B输出程序pB。程序pB应该以语言C输出程序pC,该程序又以语言A输出原始程序pA。 A,B和C中的两种语言都不能相同,也不能互为子集或超集。pA,pB或pC可能都不相同。 例如,Haskell程序输出一个Perl程序,该Perl程序输出一个Java程序,该Java程序输出原始的Haskell程序将是有效的。 另一方面,输出C#3程序和C#2程序的C#4程序无效。如果说Perl程序和Ruby程序相同,那么即使是Perl-> Ruby-> Bash组合也将无效。 这是代码高尔夫,所以最短的程序pA获胜。
17 code-golf  quine 

17
显示对一副纸牌进行8次完美洗牌的结果
说明 完美的混洗是将一副纸牌准确地分成两半,并将每堆纸牌交替插入。经过完美洗牌后,必须保留原始底卡和原始顶卡。 经过8次完美的洗牌后,标准的52张卡片组将恢复其原始顺序。 挑战 编写一个程序,显示经过8个连续完美洗牌后的纸牌状态。您可以使用任何人类可读的卡座表示法,只要它能按顺序显示卡座中每张卡的编号和花色即可。它必须显示所有九种状态的所有卡的表示形式。 这就是代码高尔夫,因此最短的解决方案将获胜。 示例输出 这是此示例实现在Javascript中产生的示例输出 AS,AC,AD,AH,2S,2C,2D,2H,3S,3C,3D,3H,4S,4C,4D,4H,5S,5C,5D,5H,6S,6C,6D,6H,7S,7C,7D,7H,8S,8C,8D,8H,9S,9C,9D,9H,10S,10C,10D,10H,JS,JC,JD,JH,QS,QC,QD,QH,KS,KC,KD,KH AS,7D,AC,7H,AD,8S,AH,8C,2S,8D,2C,8H,2D,9S,2H,9C,3S,9D,3C,9H,3D,10S,3H,10C,4S,10D,4C,10H,4D,JS,4H,JC,5S,JD,5C,JH,5D,QS,5H,QC,6S,QD,6C,QH,6D,KS,6H,KC,7S,KD,7C,KH AS,4C,7D,10H,AC,4D,7H,JS,AD,4H,8S,JC,AH,5S,8C,JD,2S,5C,8D,JH,2C,5D,8H,QS,2D,5H,9S,QC,2H,6S,9C,QD,3S,6C,9D,QH,3C,6D,9H,KS,3D,6H,10S,KC,3H,7S,10C,KD,4S,7C,10D,KH AS,9S,4C,QC,7D,2H,10H,6S,AC,9C,4D,QD,7H,3S,JS,6C,AD,9D,4H,QH,8S,3C,JC,6D,AH,9H,5S,KS,8C,3D,JD,6H,2S,10S,5C,KC,8D,3H,JH,7S,2C,10C,5D,KD,8H,4S,QS,7C,2D,10D,5H,KH AS,5S,9S,KS,4C,8C,QC,3D,7D,JD,2H,6H,10H,2S,6S,10S,AC,5C,9C,KC,4D,8D,QD,3H,7H,JH,3S,7S,JS,2C,6C,10C,AD,5D,9D,KD,4H,8H,QH,4S,8S,QS,3C,7C,JC,2D,6D,10D,AH,5H,9H,KH AS,3S,5S,7S,9S,JS,KS,2C,4C,6C,8C,10C,QC,AD,3D,5D,7D,9D,JD,KD,2H,4H,6H,8H,10H,QH,2S,4S,6S,8S,10S,QS,AC,3C,5C,7C,9C,JC,KC,2D,4D,6D,8D,10D,QD,AH,3H,5H,7H,9H,JH,KH AS,2S,3S,4S,5S,6S,7S,8S,9S,10S,JS,QS,KS,AC,2C,3C,4C,5C,6C,7C,8C,9C,10C,JC,QC,KC,AD,2D,3D,4D,5D,6D,7D,8D,9D,10D,JD,QD,KD,AH,2H,3H,4H,5H,6H,7H,8H,9H,10H,JH,QH,KH AS,AD,2S,2D,3S,3D,4S,4D,5S,5D,6S,6D,7S,7D,8S,8D,9S,9D,10S,10D,JS,JD,QS,QD,KS,KD,AC,AH,2C,2H,3C,3H,4C,4H,5C,5H,6C,6H,7C,7H,8C,8H,9C,9H,10C,10H,JC,JH,QC,QH,KC,KH AS,AC,AD,AH,2S,2C,2D,2H,3S,3C,3D,3H,4S,4C,4D,4H,5S,5C,5D,5H,6S,6C,6D,6H,7S,7C,7D,7H,8S,8C,8D,8H,9S,9C,9D,9H,10S,10C,10D,10H,JS,JC,JD,JH,QS,QC,QD,QH,KS,KC,KD,KH

17
编写一个在循环字符转换后有效的程序
可能非常困难,但是我已经看到一些令人惊奇的事情从该站点中出现。 目的是用任何语言编写一个可以执行您想要的任何程序。值得注意的是,在字符的任何循环移位之后,程序都必须有效。 圆形字符移是非常类似于一个循环移位。一些例子让我明白了。 对于程序 int main() { return 0; } 向左移动6个字符将产生: in() { return 0; }int ma 向左移动1个字符将产生: nt main() { return 0; }i 向右移动10个字符将产生: eturn 0; }int main() { r 但是,该程序显然不符合规则。 规则 任何语言 获胜者取决于投票数 对于每次旋转执行相同或完全不同的操作的解决方案,将获得100个虚拟上投票给他们的分数。 更新我认为这已经持续了很长时间。得票最多(包括虚拟投票)的获胜者是马克·拜尔斯。做得好!

1
正则表达式验证正则表达式[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 2年前关闭。 构建一个将接受正则表达式字符串作为输入的正则表达式,并检查其是否有效。基本上,您的正则表达式应该能够验证自己。(任何无效的正则表达式都不应进行验证,因此您不能使用.*。;)) 您的风味必须得到众所周知的实现(Perl,sed,grep,gawk等)的完全支持,并且必须完全支持那些实现所支持的功能。[不用担心律师说话;我只是想消除所有可能导致智能***的漏洞。] 我会对此进行编码,但是我担心它会给那些知道和使用非功能丰富的风味的人带来优势。还是我的担心没有根据?
17 code-challenge  code-golf  code-golf  game  sudoku  code-challenge  math  ai-player  code-challenge  sorting  rosetta-stone  code-challenge  code-challenge  programming-puzzle  code-golf  number  code-golf  maze  code-golf  math  regular-expression  code-golf  sequence  code-golf  graph-theory  code-golf  string  word-puzzle  natural-language  brainfuck  metagolf  optimized-output  fastest-algorithm  code-golf  game-of-life  cellular-automata  code-golf  puzzle-solver  grid  code-golf  combinatorics  binary-tree  popularity-contest  code-challenge  code-golf  ascii-art  kolmogorov-complexity  brainfuck  metagolf  code-golf  c  date  code-golf  word-puzzle  crossword  word-search  code-golf  code-golf  quine  code-golf  string  random 

30
查找非素数
如果您选择接受它,那么您面临的挑战是对一个数字满足以下条件的函数进行编码,该函数将返回true或false(或者是yes和no的某种类似有意义的表示形式): 整数本身是质数或 它的任何一个相邻整数都是素数 例如: 的输入7将返回True。 输入8也会返回True。 输入15会返回False。(14、15或16都不是素数) 输入必须能够正确返回2 ^ 0到2 ^ 20之间的数字,因此无需担心符号问题或整数溢出。

4
单词搜索求解器
给定单词列表和字母网格,找到网格中的所有单词并删除不属于任何单词的任何字母。单词可以是向前,向后,向上,向下或对角线。您可以假设列表中的任何单词都不会出现在网格中的多个位置。 输入将始终是:单词列表,每行1个,后跟空白行,然后是字母网格。 例子 输入值 ADA ALGOL ASSEMBLY BASIC COBOL DELPHI FORTRAN JAVA LABVIEW LOGO PASCAL PERL PHP PYTHON SMALLTALK VISUALC LLJKCABLFCI OROLOBOCOIM GELACSAPRSX LPSTAHWVTAV ANRLXLXQRBI IHPLEDOXAHS KJYAPHPYNOU FABMADANZJA EVISNOHTYPL AAYLBMESSAC WEIVBALOGOM 输出量 LL K FC OR LOBOCOI GELACSAPRS LP T TAV A L RBI IHPLED A S J APHP N …

9
选择自己的冒险
选择自己的冒险书籍是一种互动文学形式,读者必须做出影响故事结果的决定。在故事的某些点上,读者可以选择多个选项,每个选项都会将读者发送到书中的不同页面。 例如,在幻想环境中,人们可能必须在第14页上决定是通过“跳至”第22页冒险进入一个神秘的洞穴,还是通过跳至第8页来探索附近的森林。这些“跳转”可以表示为成对的页码,例如: 14 22 14 8 在大多数情况下,故事的结局很多,但好的结局很少。目的是引导故事走向一个好的结局。 任务: 给定给定书的“跳跃”列表,您的任务是确定一条导致特定结局的路线。由于这相当容易,所以真正的挑战是用尽可能少的字符来完成。 这就是代码高尔夫。 样本输入(其中1是开始,而100是目标): 1 10 10 5 10 13 5 12 5 19 13 15 12 20 15 100 样本输出: 1 10 13 15 100 输入样例: 15 2 1 4 2 12 1 9 3 1 1 15 9 3 12 64 …

8
平方数数字密度
我自己发明的数字的平方数字位数密度(SNDD)是连续数字中发现的平方数字计数与数字长度的比率。例如,169是一个3位数字,包含4个正方形数字-1、9、16、169-,因此正方形数字的数字密度为4/3或1.33。4位数字1444具有6个正方形-1、4、4、4、144、1444-因此比率为6/4或1.5。注意,在前面的示例中,正方形可以重复。另外,不允许441,因为无法在数字1444内连续找到它。 您的任务是编写一个程序,该程序在给定范围A-B(含)范围内搜索平方位数最高的数字。您的程序应遵守以下规范: 输入A,B的范围为1到1,000,000,000(10亿)。例:sndd 50 1000 结果返回SNDD最大的数字。如果是平局,则返回最小的数字。 0不会以任何形式(0、00、000等)算作正方形。以0开头的正方形(如049或0049)也不算。 注意,整数不必一定是平方数。 例子: sndd 14000 15000 Output: 14441 sndd 300 500 Output: 441 奖金:SNDD最大的数字是1到1,000,000,000?您能否证明这是最大的可能性,还是更大范围的更大? 当前分数: 红宝石:142 Windows PowerShell:153 斯卡拉:222 蟒蛇:245 现在已经选择了答案,这是我在JavaScript中的(unolfed)参考实现:http : //jsfiddle.net/ywc25/2/

5
编写儿童车代码[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Code Golf Stack Exchange 的主题。 2年前关闭。 现在是时候炫耀您编写不良代码的能力了。我正在尝试一种新的编程难题,我认为与欠缺C竞赛最相似。主要的区别是这并不那么有害:它只是一些很好的清洁乐趣。难题的目标是将尽可能多的错误打包到一个程序中。这项竞赛的获胜者是每个角色中漏洞最多的程序编写者。 为了避免大量的评论要求澄清,我现在应该定义我认为合格的错误。 首先,错误不是错误。如果是解释器可以将其检测为错误的问题(例如,不匹配的分隔符,格式错误的语法,访问空对象的属性等),或者阻止了程序的执行或继续,则不是一个错误。否则,您可以输入四个字符,解释器可以列出八个语法错误,并且可以声明错误字符比率为2。 其次,该错误一定不能明显是错误的,并且该错误不是复活节彩蛋。这当然是一个主观标准,但我认为对于此类竞赛至关重要。这意味着您不能拥有以明显的方式专门处理代码的条件代码。(阅读:使用图林坑语言,因为没有人会知道其中的区别)。 第三,该错误必须是合理的。就像上面的代码一样,这是主观的,但是该错误必须看起来像是由一个不那么细致的人,或者可能是一个无知的人,或者刚刚犯错的人写的。例如,这包括一字不漏的错误或有效且看起来正确但会导致不良行为的语法(例如,使用方括号而不是括号)。 该错误可能导致程序发生任何形式的不良行为,包括但不限于某些特殊情况下的不良输出,基于看似无关的事物具有不同的行为(例如,输出取决于当前时间是否结束而显示不同) (以奇数或偶数秒为单位),内存泄漏,数据丢失等。 示例问题: 制作一个程序,以其数值的升序显示所有ASCII字符。 示例答案: Brainf ***,5个字符,1个错误,0.2个错误/字符的比率 +[+.] 错误:不显示1的ASCII字符。可以通过更改为来修复.+[.+]。 好的,我想您现在应该已经掌握了,这是您的难题: 解码凯撒密码并按字母顺序对单词排序 通过采用一系列字母并将它们在字母表中移动n个字母来创建凯撒密码。如果一直到字母的开头或结尾,则A在Z之后,Z在A之后。例如: Mannequin Nboofrvjo //Shifted over 1 or -25 Wkxxoaesx //Shifted over 10 -16 Ftggxjnbg //Shifted over -7 or 19 系统将为您提供两个输入(您可以在合理范围内获得输入,但对您而言最方便)。第一个输入是单词,第二个输入是它移过来的值。您的任务是输出已解码的单词,然后按字母顺序对已解码的单词进行输出。 示例(对坏男孩没有冒犯性,这只是一个示例): 首先输入:gtdx wjbfwiji。ljy Gfi hfssty 第二输入:5 …

4
ASCII艺术Bresenham线条图
编写最短的程序,用ASCII艺术画出一条布雷森纳姆线。您的程序应使用两个整数x和y(选择命令行或标准输入),并绘制一个ASCII行,该行从左上方开始,向右移动x,向下移动y。您必须使用_和\字符,并根据Bresenham的算法将其放置在正确的位置。 您可以假设x >= y,因此不需要垂直线段。 请注意,由于您使用的是_字符,因此与之对应的一行y=3可能需要输出4行文本(并且在不必要时可能会发出前导空白行)。 例子: 11 3 _ \___ \___ \_ 11 1 _____ \_____ 5 4 \ \_ \ \ 对于正好是中点的点,您可以选择任一取整: 10 1 ____ \_____ or _____ \____

24
12天的圣诞节歌词
我认为这对每个人来说都是一个有趣的挑战,我很好奇看到人们提出的解决方案。 打印“圣诞节的12天”的歌词 On the first day of Christmas, my true love gave to me, A partridge in a pear tree. On the second day of Christmas, my true love gave to me, Two turtle doves, And a partridge in a pear tree. ... On the twelfth day of Christmas, My …

7
井字游戏词典
一个TicTacToe游戏可以用一个字符串来表示,该字符串表示玩家移动时的位置顺序。 0 1 2 3 4 5 6 7 8 假设X总是先播放。 因此,字符串“ 012345678”表示游戏 XOX 氧代 XOX 请注意,当玩家X标记时,该游戏已经获胜6,这时游戏结束,向授予胜利X。(即,一旦玩家获胜,忽略其余的举动) 您面临的挑战(代码)是打印所有游戏(排序顺序)及其结果。 格式 <movesequence>:<result>\n 例如: 012345678:X 012345687:X 012345768:X ... 表示X第一个玩家获胜,O第二个玩家和D平局。 将有9!(362880)个游戏。 这是一些数据以验证您的结果。 'X' Wins: 212256 'O' Wins: 104544 Draws : 46080 这是一个代码高尔夫,运行时应在一分钟之内。玩得开心! 编辑:删除了多余的详细信息,然后将其打印在上stdout。无需创建文件。

30
将单词中的字母“相加”
我父亲是一位退休的老师,他经常提供拼写和数学测验的组合,学生可以在其中拼写一个单词,然后通过将字母加起来(其中a = 1,b = 2等)来“打分”该单词。 (例如cat = 3 + 1 + 20 = 24)。这使对测验进行评分变得更加容易,因为他只需要检查“分数”而不是拼写错误的单词即可,并且具有一次测试2个技能的额外好处。 他雇用了我的一个朋友来编写一个程序,该程序可以为他打分,因此他可以生成冗长的答案键而不会出错。该问题是受该程序启发的。 要求: 接受任何带有大写和小写字母的单词 返回任何特殊字符的错误,例如空格,连字符,@ ^%#等。 a = 1,b = 2,...和A = 1,B = 2,... 打印单词的分数 (可选)在计分后检查单词是否在字典中,如果不是,则打印警告。 无需导入外部字母->数字字典。您必须自己生成它。 任何语言都是可以接受的。这类似于“ 数字根战 ”,但要简单得多。
17 code-golf  word 

30
IPv4整数转换功能
编写最短函数以将IP地址转换为它的整数表示形式并将其输出为整数。 要将IPv4地址更改为其整数表示形式,需要进行以下计算: 将IP地址分成四个字节。 (Octet1 * 16777216) + (Octet2 * 65536) + (Octet3 * 256) + (Octet4) 样本输入 192.168.1.1 10.10.104.36 8.8.8.8 样本输出 3232235777 168454180 134744072

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.