编程拼图和代码高尔夫

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

15
一只蚂蚁在多维数据集
一只蚂蚁沿着线框立方体的边缘(而不是面)行走。它遇到的每个顶点都有一个叉,两个新的边从中分支出来。蚂蚁选择转向的方式- left或right。这些方向是相对于面向顶点且在立方体外部的蚂蚁而言的。您的目标是根据left/ right选择蚂蚁的顺序,确定蚂蚁是否在开始的位置结束。 例如,如果蚂蚁向左转四次(left left left left),则它将逆时针移动一个正方形,并在开始的位置结束。但是,如果继续left left left left right下去,它将终止于多维数据集的其他位置。同样,如果它走了left right right right left,它将终止于其起始边缘,但朝向相反的顶点,该顶点不算作同一位置。 蚂蚁的路径可能会重复边缘,包括其开始的边缘,但重要的是在整个序列之后它的终止位置。 编写一个命名函数,该函数接受蚂蚁的转弯序列并输出蚂蚁在序列之后是否回到其起始位置。为变量分配一个未命名的函数足以使其成为一个命名函数。 (编辑:如果您的语言无法创建命名函数,则可以通过STDIN /打印或堆栈使用输入和输出来实现该函数。如果无法实现,请使其成为将输入和输出保存在其中的代码段变量。) 输入项 长度为left/ 包含在内的一系列/ right决策,0以31您选择的格式表示。这可能是字母字符串R/ L,数字列表1/ -1或布尔数组。别让它们成为方法名称或对您的代码有用的字符串。 如果与以下测试用例不同,请以您的格式发布测试用例。 输出量 True/ False,0/ 1或您所用语言的类似物。 获奖标准 最少的字节数获胜。请记住,您需要提供一个命名函数。您可以在函数之外使用代码,但是这些字节也可以计数。如果多次调用,您的函数应正确运行。 测试用例 True 情况(每行一个,第二个是空列表): 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 …
33 code-golf 

13
编程二分法(从字面上看)
考虑一个用简单的英语写的问题,该问题的答案包含两个相当准确(但可能很聪明)的单词或短语,可以用单词“和”分隔: 问:硬币的两个面是什么?-答:头和尾 问:什么是最好的旅行方式?答:飞机和喷气背包 问:为什么乌鸦像写字台?答:因为两者都有一个“ b”,两个都不都有“ n” 目标 编写一个程序,该程序在正常运行时会输出这样的问题。 当从第二个字符开始从程序中删除所有其他字符并重新运行结果时,输出应为答案中“ and” 左边的任何内容。 当从第一个字符开始从程序中删除所有其他字符并重新运行结果时,输出应为答案中“ and” 右边的任何内容。 (“和”本身不会输出。) 例 如果程序是 A1B2C3D4E5F6G7H8I9 它的输出是 What are the two sides of a coin? 那么的输出ABCDEFGHI应该为heads和的输出123456789应该为tails。 有关问答的规则 您可以使用我的示例问题,但我鼓励您自己回答。 问题和两个答案部分: 必须全部不同 应该是常用的语法有意义的英语 只能包含可打印的ASCII(十六进制20至7E) 理想情况下,问题应大写并标点(但不一定需要答案)。 问题必须至少包含30个字符,并且熵大于或等于3.5。(输入字符串,点击计算,寻找最后的H(X)。) 两个答案部分(不包括[space]and[space]它们之间的部分)必须至少包含5个字符,且熵大于或等于2。 单词“和”可能出现在任一答案部分。 有关代码的规则 3个代码段均不能: 包含注释或编译器/解释器传统上忽略的任何其他内容(不必担心添加一两个多余的分号,但是如果您认为它是注释,则可能是) 在执行中退出程序 该代码可以包含任何字符,包括Unicode和不可打印的ASCII。 它可能具有奇数或偶数个字符。 输出将输出到stdout或文件或任何看起来合理的文件。没有输入。 计分 由于我不想鼓励打高尔夫球的答案,但我想鼓励更多的聪明的答案,因此得分将介于打高尔夫和普及比赛之间: 分数= (upvotes - …

8
谁才是最重要的?是谁来计算票数[关闭]
场景 您居住在即将举行总统大选的国家。每个选民都有一票,因此有一个牢固树立的两党制。(存在第三方,​​但几乎得不到任何表决)。 最新的民意测验显示,这场比赛陷入了僵局: 49%:阿尔贝托·阿布斯托 49%:豪尔赫·桑格里 2%:各种未成年人 计划要求 您已被政府雇用来编写部分计票软件。在标准输入下,将为您提供一个区域投票的无序列表,每行一张,如下所示: Alberto Arbusto Jorge Sangre Jorge Sangre Alberto Arbusto Jorge Sangre Alberto Arbusto Alberto Arbusto Jorge Sangre Juan Perez Jorge Sangre Alberto Arbusto Alberto Arbusto … 然后,在读取所有投票后,输出每个候选人获得的投票摘要,并按投票数降序排列,如下所示: 492 Jorge Sangre 484 Alberto Arbusto 18 Juan Perez 6 Mickey Mouse 不足部分 您是游击队的黑客,想窃取两个主要候选人之一的选举(您可以选择哪个候选人)。因此,您的程序必须故意打印不正确的投票计数,并且系统偏向您最喜欢的候选人。 当然,您必须这样做,以至于查看代码或输出的人可能无法识别错误的行为。

20
写一个聚喹
聚喹啉既是奎宁又是多色。1您将写一个至少在两种不同语言中有效的藜。这是代码高尔夫球,因此最短的答案(以字节为单位)获胜。 1我弥补了。确切地说,Geobits做到了。显然,他也不是第一个。 规则 仅接受真正的奎因。也就是说,您需要将整个源代码原样打印到STDOUT,而无需: 直接或间接阅读您的源代码。 依靠REPL环境,该环境仅评估并打印您提供给它的每个表达式。 依靠在某些情况下仅能打印出源代码的语言功能。 使用错误消息或STDERR编写全部或部分的藜。(您可以将内容写到STDERR或产生警告/非致命错误,只要STDOUT是有效的Quine,并且错误消息不属于其中即可。) 此外,您的代码必须包含字符串文字。 多语规则 所使用的两种语言必须明显不同。特别是: 它们不能是同一语言的不同版本(例如,Python 2与Python 3)。 它们不能是同一语言的不同方言(例如Pascal与Delphi)。 一种语言可能不是另一种语言的子集(例如C与C ++)。

6
优化电话键盘
人们似乎在不断地热衷于学习乏味的新键盘布局(例如Dvorak或Neo),因为它据说可以提高他们的生产力。我认为切换键盘布局不是一个好主意,因为它可能需要几个月的时间来加快速度,并且最终速度比其他键盘快5%时,如果您需要在不是不是你自己的。 而且,所有这些人都忘记了现代通信中真正的瓶颈在哪里-电话键盘。 这是普通电话键盘的外观: 字母“ r”是按钮7上的第三个字母;因此,如果您要在手机上键入字母“ r”,则需按3次按钮7,对于“ s”,请按4次,对于“ a”,请按一次2。 考虑到这一点,将“ e”放在“ d”之后可能是一个错误的决定-“ e”是英语字母表中最常用的字母,因此,如果将按钮3标记为“ EDF”而不是“ DEF”,则表示可以节省很多击键。 此外,您可能会自己经历过键入两个共享相同按钮的字母是很麻烦的-如果您想写“ TU”,则不能只敲8次三遍,因为那样会导致'V'。因此,通常您会写“ T”,然后按空格键,然后按退格键,然后写“ U”,等于按5次按钮而不是3次。 TL; DR 鉴于以下两个规则: 按下n次按钮即可键入字母,其中n是按钮标签上字母所在的位置 写两个使用相同按钮键入的字母需要再按2个按钮 给定特定的文本,电话键盘需要最少的按键按下次数的布局是什么?您仅应将按钮2-9、1和0保留用于特殊符号。 输入项 您应该通过stdin提供最佳布局的文本。除了小写字母,您不需要处理任何其他事情,并且可以假设输入仅包含小写字母。您也可以假设输入文本相当大,并且每个字母至少在其中一次(如果有帮助的话)。 输出量 我不想在输出上施加太多限制,因为这有时会使某些语言优于其他语言。因此,尽管您的语言显示数组很好,但是也可以用换行符分隔每个标签。 可能有多种最佳布局,您可以打印其中任何一种。这是一个简单的例子: >> echo "jackdawslovemybigsphinxofquartz" | foo.sh ojpt avhz cen skm dyf wbq ixu lgr 奖励积分 -35如果您的算法不是强制所有可能的布局(我在这里查看Haskell的“排列”) -3如果您的代码适合文本消息(140个字符),并且您张贴了将您的代码发送给朋友的图片。 这是我在StackExchange上遇到的第一个挑战。我很高兴听到您是否喜欢它,或对此有任何其他反馈!
33 code-golf 

6
Photomosaics或:更换灯泡需要几个程序员?
我从Stack Overflow顶级用户的头像中整理了2025张头像的拼接图。 (单击图像可查看完整尺寸。) 您的任务是编写一种算法,该算法将使用来自45×45像素网格中的48×48像素化身来创建另一幅图像的精确马赛克。 测试影像 这是测试图像。首先,当然是灯泡! (它们在这里不是完整尺寸。单击图像以完整尺寸查看。一半尺寸的版本可用于The Kiss,Sunday Afternoon ...,Steve Jobs和spheres。) 感谢Wikipedia除了光线追踪领域以外的所有领域。 在全尺寸下,所有这些图片的尺寸都可以被48整除。较大的图片必须是JPEG,以便可以对其进行足够的压缩以进行上传。 计分 这是一次人气竞赛。带有马赛克的提交可以最准确地描绘原始图像,应予以表决。我将在一两周内接受投票最高的答案。 规则 您的光马赛克必须完全由从上面的马赛克中选取并排列成网格的48×48像素不变的化身组成。 您可以在镶嵌图中重复使用头像。(实际上是您必须拥有的较大测试图像。) 显示输出,但请记住测试图像非常大,并且StackExchange仅允许发布最大2MB的图像。因此,压缩图像或将其托管在其他位置,然后在此处放置较小的版本。 要确认获奖者,您必须提供灯泡或球形马赛克的PNG版本。这样一来,我就可以验证它们(请参阅下文),以确保您不会在头像上添加额外的颜色以使马赛克看起来更好。 验证器 该Python脚本可用于检查完成的镶嵌图是否确实使用了未更改的化身。只需设置toValidate和allTiles。对于JPEG或其他有损格式,它不太可能工作,因为它可以逐像素精确地进行比较。 from PIL import Image, ImageChops toValidate = 'test.png' #test.png is the mosaic to validate allTiles = 'avatars.png' #avatars.png is the grid of 2025 48x48 avatars def equal(img1, img2): …

17
Stackoverflow有多少赏金?
任务: 您是一位了不起的程序员和Stackoverflow-answerer,您决定在Stackoverflow上悬赏所有问题。你太好了,以至于你设法在所有问题上都得到了赏识。在等待代表涌入时,您编写了一个程序,该程序找出所有这些赏金中代表的总数。 规则: 运行时 您的程序将在Stack Overflow的功能选项卡中导航。 它将刮除每个赏金的价值, 然后将其加起来并显示总数 它必须从SO上的任何地方(并且只有SO)下载数据,但是我建议使用https://stackoverflow.com/questions?pagesize=50&sort=featured,因为它只有大约10页 这是代码高尔夫球,因此最短的代码获胜
33 code-golf 

3
不熟练的密码散列[关闭]
本着“ 不熟练C竞赛”的精神,我正在发起不熟练C竞赛。该竞赛的目的是直接实现一些代码,同时在其中隐藏一个邪恶的bug。 比赛 您是在美国间谍机构的IT部门工作的秘密俄罗斯痣。您的美国老板刚刚要求您实施密码哈希算法,以用于加密秘密消息。 您的老板希望您实现以下功能: f: String -> byte[16] 它将密码转换为16字节的数量,适合用作AES密钥。您的老板想要一个安全的功能,在这种情况下,这意味着不同的密码字符串应以压倒性的可能性生成不同的结果。例如,返回输入的md5哈希将是的简单实现f。 当然,您在俄罗斯间谍机构中的真正上司会希望您颠覆这一过程。您的任务是实现f使俄罗斯人可以解密使用所返回的密钥加密的所有秘密消息f。 为此,必须实现f以使其仅返回2 ^ 128个可能输出的一小部分。特别是,您f必须最多返回2 ^ 16个不同的结果,以便俄罗斯人可以轻松地用蛮力搜索想要解密的每条加密消息的正确密钥。 但是请记住,间谍活动会判处死刑。为了不被发现,您的函数f必须至少产生2 ^ 8个不同的结果,以便对的几个输出进行粗略的检查f就不可能发现重复的结果。 最重要的是,您引入的限制范围的代码f必须看起来是无意的,而不是故意的。 如果您曾经被拖入法庭,那么对于您是故意还是无意中引入了该错误,一定存在一些合理的疑问。 评判 我和我招募的其他两个人将对参赛作品进行评判(如果您想评判,请给我发电子邮件)。我将为获奖作品提供200点声望奖励。提交的内容必须在5月1日之前上传。 评审将考虑以下标准: 是否f坚持以规范,即,它不会产生2和2之间^ 8 ^ 16个可能的输出。不要以为这是硬性限制,但是如果您超出范围,我们会扣除分数。 该错误貌似是非故意错误的结果吗? f外观的输出是否随机? 您实施的时间越短f越好。 您实施的f越清晰,效果越好。 笔记 您可以使用任何语言来实现您的代码。您正试图将错误隐藏起来,因此不建议使用混淆的代码。 您可能想看看以前的一些欠人手C比赛获胜者,以了解提交优秀作品的原因。 输入字符串将是可打印的ascii(包括32至126)。如果需要,可以假定一个合理的最大长度。

4
图像之战
恭喜@kuroineko获得最佳参赛资格,并从@TheBestOne获得200赏金(出色的体育精神!)。 在对立程序之前,编写一个程序以使图像尽可能多地着色。 简要规则 您的程序将得到一个图像,您的颜色和整数N。 每回合,其他程序都会向您发送像素更新,并要求您进行N次更新。 您可以更新颜色像素旁边的任何白色像素。 添加最多像素的程序将获胜。 详细规则 您的程序将获得一个PNG图像文件名,原色和数字N。数字N是您的程序每转可着色的最大像素数。 例: MyProg arena.png (255,0,0) 30 输入图像将是一个矩形,其边长在20到1000像素之间。它由黑色,白色和彩色像素组成。您的程序可以选择一系列白色像素作为自己的颜色,条件是每个新像素必须至少具有自己颜色的四个相邻像素之一。图像最初将至少具有您的颜色的一个像素。它还可能具有未分配任何程序的颜色像素。不使用Alpha通道。 您的目标是阻止对手并将您的颜色写入尽可能多的像素。 程序每转一圈,将在STDIN上接受1条或更多条消息行,并在STDOUT上写一条由像素坐标组成的行。请记住,将STDOUT分配为无缓冲,或者每转一次刷新STDOUT缓冲区。 每个回合中被叫的玩家顺序将被随机分配。这意味着对手(或您的程序)可能连续2回合。 将向您的程序发送colour (N,N,N) chose X,Y X,Y ... X,Y描述播放器程序所填充像素的信息消息。如果玩家不采取任何行动或没有采取有效行动,则不会向您发送有关该玩家采取行动的消息。您的程序还将收到一条有关您自己接受的动作的消息(如果您已指定至少一个有效的动作)。像素0,0位于图像的左上角。 收到时pick pixels,您的程序将X,Y X,Y ... X,Y最多输出N个像素(允许只包含'\ n'的空字符串)。像素必须按绘制顺序。如果一个像素无效,它将被忽略并且不会出现在玩家报告中。您的程序在启动后有2秒钟的初始化时间,但是每回合只有0.1秒的时间来回答并回答,否则它将错过该回合。0.1秒后发送的像素更新将记录故障。5次故障后,您的程序将被暂停,并且不会发送更新或pick pixels请求。 当评委程序从每个非暂停的播放器程序中收到一个空的或无效的像素选择时,图像将被视为完整图像,并且程序将收到“退出”消息。程序必须在收到“退出”之后终止。 计分 图像完成后,法官将给分数打分。您的得分将是您更新的像素数除以该回合的平均像素捕获数(以百分比表示)。 播放器添加到图像的像素数为A。所有 P播放器添加的像素总数为T。 avg = T/P score = 100*A/avg 发布分数 给出了一个参考对手“ The Blob”。对于每个答案,请为机器人标记名称,语言和相对于参考对手的得分(竞技场1至4的平均值)。您的其中一场战斗的图片或动画也会很好。获胜者是与参考机器人相比得分最高的程序。 如果Blob证明太容易被击败,我可以加一个更强的参考对手进行第二轮比赛。 您可能还想尝试4个或更多播放器程序。您还可以针对其他机器人作为答案发布的机器人进行测试。 法官 …

7
抗锯齿ASCII艺术
背景 ASCII艺术是通过使用ASCII文本形成形状来创建图像的实践。 混叠是由ASCII艺术的大“像素”(即字符大小)产生的效果。图像变得块状且难以看清。抗锯齿功能通过创建渐变并软化ASCII艺术作品的硬边来消除这种影响。 挑战 您面临的挑战是编写尽可能最短的程序,该程序将花费一部分ASCII文字并输出经过抗锯齿的版本。 什么样的抗锯齿? 所有ASCII文字都将由两种类型的符号组成:空格和非空白。对于每个非空白字符,您的程序必须确定它是否处于需要消除锯齿的位置。如果是这样,则需要用正确的字符替换它。如果不是,则字符保持不变。 您如何知道角色是否需要消除锯齿?答案取决于字符上方,下方,左侧和右侧的字符(而不是对角线)。下面是当需要抗混叠的一个图表,其中?和x可以代表任何非空白字符。 x? -> d? ? ? ?x -> ?b ? ? ? ? ?x -> ?F ? ? x? -> Y? x -> ; Note: This character has been changed from _ to ; ? ? ? ? x -> V ?x -> …

9
那位神奇宝贝是谁?
输入:1到151之间的整数N 输出:第N个神奇宝贝。 规则 您可以使用一个数据文件。 您可能不使用任何已经制定的数据解压缩算法。这包括库和其他程序。 您的程序可能无法访问其自身和数据文件以外的文件。 计分 您的分数是代码和数据文件长度的总和。 有用的东西 以下是用分号分隔的前151个宠物小精灵的列表,可帮助您生成数据文件。您的输出应与该行的第N个条目完全匹配: Bulbasaur;Ivysaur;Venusaur;Charmander;Charmeleon;Charizard;Squirtle;Wartortle;Blastoise;Caterpie;Metapod;Butterfree;Weedle;Kakuna;Beedrill;Pidgey;Pidgeotto;Pidgeot;Rattata;Raticate;Spearow;Fearow;Ekans;Arbok;Pikachu;Raichu;Sandshrew;Sandslash;Nidoran (f);Nidorina;Nidoqueen;Nidoran (m);Nidorino;Nidoking;Clefairy;Clefable;Vulpix;Ninetales;Jigglypuff;Wigglytuff;Zubat;Golbat;Oddish;Gloom;Vileplume;Paras;Parasect;Venonat;Venomoth;Diglett;Dugtrio;Meowth;Persian;Psyduck;Golduck;Mankey;Primeape;Growlith;Arcanine;Poliwag;Poliwhirl;Poliwrath;Abra;Kadabra;Alakazam;Machop;Machoke;Machamp;Bellsprout;Weepinbell;Victreebell;Tentacool;Tentacruel;Geodude;Graveler;Golem;Ponyta;Rapidash;Slowpoke;Slowbro;Magnemite;Magneton;Farfetch'd;Doduo;Dodrio;Seel;Dewgong;Grimer;Muk;Shellder;Cloyster;Gastly;Haunter;Gengar;Onix;Drowsee;Hypno;Krabby;Kingler;Voltorb;Electrode;Exeggute;Exeggutor;Cubone;Marowak;Hitmonlee;Hitmonchan;Lickitung;Koffing;Weezing;Rhyhorn;Rhydon;Chansey;Tangela;Kangaskhan;Horsea;Seadra;Goldeen;Seaking;Staryu;Starmie;Mr. Mime;Scyther;Jynx;Electabuzz;Magmar;Pinsir;Tauros;Magikarp;Gyarados;Lapras;Ditto;Eevee;Vaporeon;Jolteon;Flareon;Porygon;Omanyte;Omastar;Kabuto;Kabutops;Aerodactyl;Snorlax;Articuno;Zapdos;Moltres;Dratini;Dragonair;Dragonite;Mewtwo;Mew

30
公共变量有什么问题?
代码机器人 我讨厌私有和保护变量。我只想访问任何东西! 如果您像我一样,那么这个挑战就是给您的! 编写一个与其他机器人协调工作的机器人,使其他机器人按您的意愿工作。您是一名程序员,并且您知道应该如何工作。您的工作是将尽可能多的其他漫游器转换为您的方式。 代码 您将有24行代码来编写您的机器人。每回合,每个漫游器将顺序执行1行。 每个漫游器A通过都存储5个变量E。 A并且B供个人使用,C存储要执行的下一行,D存储当前方向,并且E是一个随机数。变量从0开始,除了除外D,后者将从一个随机值开始。所有变量仅存储0-23。更大或更小的数字将被24调制。 在这篇文章中,我将使用对手作为您面临的相邻机器人 每行必须包含以下5个命令之一: Flag什么也没做。除了这是你赢的方式 Move将您的漫游器移向Dth方向。如果机器人已经占据了空间,则不会发生任何移动 Copy Var1 Var2 将Var1的内容复制到Var2 If Condition Line1 Line2 如果Condition为true,则执行Line1,否则执行Line2 Block Var1 阻止对变量的下一次写入 变量可以如下使用: #Var将使用该变量作为行号。如果A为17,Copy #8 #A则将第8行的内容复制到第17行。 *Var将使用对手的变量。 Copy 5 *C将对手的C变量设置为5 Var+Var将两个变量相加。 Copy D+1 D会将机器人向右旋转 当D用作指示时,[North, East, South, West][D%4]将被使用 这些修饰符可以链接在一起:Copy *#*C #9将对手将执行的下一行复制到第9行的自己的代码中。 **D是指对手的对手D变量。 条件的评估如下: 如果Var: 如果Var A通过C,则如果Var非零,它将返回true,否则返回false。 如果Var是D,则如果在此D方向上有机器人,则它将返回true ,否则返回false …

22
带出句子的内在美洲驼
您的目标是像 Pie is good. I just ate a bunch of pies early this morning. Actually, it was closer to the afternoon. Mornings are good. 并创建一个字符串索引数组,其中组成单词“ Llama”的字母出现(顺序一个)。例如,让我显示用尖号指向的字母以显示索引: Pie is good. I just ate a bunch of pies early this morning. Actually, it was closer to the afternoon. Mornings are good. ^ …
33 code-golf 

18
代码罗马化
挑战在于使任何罗马数字成为您选择的语言的有效代码。 他们应该不会出现串的内部或任何类似,但工作就像任何其他记号,文字如(阿拉伯语)数字,字符或字符串; 或变量/方法/功能标识符等 例如,在Java中,以下代码必须像i初始化为那样编译并运行42: int i = XLII; 数字的实际解析是次要的,因此您可以根据需要使用库,但这是一场人气竞赛,因此鼓励创造力。 如果存在这种情况,则不能使用任何实际使用罗马数字的语言。 祝好运。

30
是圣诞节吗?
挑战 鉴于圣诞节是: 十二月 第十二个月 第25天 每年,确定今天的日期,以及今天是否是圣诞节。如果是圣诞节,则必须打印"It's Christmas"。如果不是圣诞节,则必须以某种方式等到圣诞节后再打印"It's Christmas"。 例 从这个堆栈溢出问题 import time while time.strftime("%b, %d", time.localtime()) != "Dec, 25": time.sleep(60) print "It's Christmas" 包含115个字符的Python 规则 规则如下: 假设计算机的时钟总是正确的。 您的代码必须能够随时启动。 您的代码必须"It's Christmas"在圣诞节打印。 循环当然不是必需的,但是一旦开始,您的代码就应该在打印之前停止。 最短的代码胜出。
33 code-golf  date 

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.