问题标签 [code-golf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
2403 浏览

python - 加入一组产生 Python 迭代器的有序整数

这是一个看似简单的问题:给定一个迭代器列表,这些迭代器按升序产生整数序列,编写一个简洁的生成器,它只产生出现在每个序列中的整数。

昨晚阅读了几篇论文后,我决定用 Python 破解一个完全最小的全文索引器,如图所示(尽管那个版本现在已经很老了)。

我的问题在于该search()函数,它必须遍历每个发布列表并仅生成出现在每个列表上的文档 ID。正如您从上面的链接中看到的那样,我当前的非递归“工作”尝试非常糟糕。

示例

应该产生:

至少有一个优雅的递归函数解决方案,但如果可能的话,我想避免这种情况。但是,涉及嵌套生成器表达式、itertools滥用或任何其他类型的代码高尔夫的解决方案非常受欢迎。:-)

应该可以安排该函数只需要与最小列表中的项目一样多的步骤,而无需将整个整数集吸入内存。将来,这些列表可能会从磁盘读取,并且大于可用 RAM。

在过去的 30 分钟里,我在舌尖有了一个想法,但我无法将其完全融入代码中。请记住,这只是为了好玩!

0 投票
4 回答
2289 浏览

unicode - Twitter 文本压缩挑战

规则

  1. 你的程序必须有两种模式:编码解码
  2. 编码时:

    1. 你的程序必须输入一些人类可读的Latin1文本,大概是英语。
      • 忽略标点符号也没关系。
      • 您只需要担心实际的英语单词,而不是 L337。
      • 任何重音字母都可以转换为简单的 ASCII。
      • 您可以选择处理数字的方式。
      • 123
        • 一二三
        • 一百二十三
        • 123
        • 1 2 3
      • 一百二十三
        • 一二三
        • 一百二十三
        • 123
        • 1 2 3
    2. 您的程序必须输出一条可以表示为的消息

      • 范围内的 140 个代码点U+0000–<code>U+10FFFF

        排除非字符:

        • U+FFFE
        • U+FFFF
        • U+nFFFE,其中–<code>10 十六进制U+nFFFFn1
        • U+FDD0–<code>U+FDEF
        • U+D800–<code>U+DFFF(代理代码点)。

    它可以以您选择的任何合理编码输出;GNUiconv支持的任何编码都将被认为是合理的,您的平台本机编码或语言环境编码可能是一个不错的选择。

  3. 解码时:

    1. 您的程序应将编码模式的输出作为输入。
    2. 文本输出应该是输入文本的近似值。
      • 越接近原文越好。
      • 不需要任何标点符号。
    3. 输出文本应该是人类可读的,同样可能是英语。

      • 可以是 L337,也可以是大声笑。
    4. 除了上面指定的输出之外,解码过程可能无法访问编码过程的任何其他输出;也就是说,您不能将文本上传到某处并输出 URL 以供解码过程下载,或者任何类似的愚蠢行为。
  4. 为了用户界面的一致性,您的程序必须表现如下:
    1. 您的程序必须是可以在具有适当解释器的平台上设置为可执行的脚本,或者是可以编译为可执行文件的程序。
    2. 您的程序必须将encodedecode设置模式作为其第一个参数。
    3. 您的程序必须至少以下列方式之一接受输入:
      • 从标准输入获取输入并在标准输出上产生输出。
        • my-program encode <input.txt >output.utf
        • my-program decode <output.utf >output.txt
      • 从第二个参数命名的文件中获取输入,并在第三个参数命名的文件中产生输出。
        • my-program encode input.txt output.utf
        • my-program decode output.utf output.txt
  5. 对于您的解决方案,请发布:
    1. 您的完整代码和/或在其他地方托管的指向它的链接(如果它很长,或者需要很多文件来编译,或其他)。
    2. 如果代码不是很明显,或者代码很长并且人们会对摘要感兴趣,则说明它是如何工作的。
    3. 示例文本,包含原始文本、压缩后的文本和解码的文本。
    4. 如果您正在建立其他人的想法,请归因于他们。尝试对别人的想法进行提炼是可以的,但你必须归因于他们。

这些规则是Twitter 图像编码挑战规则的变体。

0 投票
2 回答
8948 浏览

python - Python中的十进制对齐格式

应该很容易。

这是我的数组(而是一种生成代表性测试数组的方法):

我想要一个字符串列表,其中 '\n'.join(list_o_strings) 将打印:

我想在左侧右侧放置空格(但没有必要)。

如果这就是小数点后的全部内容,我想要小数点后的零。

我不想要科学记数法。

..而且我不想丢失任何有效数字。(在 353.98000000000002 中,2 不重要)

是的,很高兴想要..

Python 2.5's%g, %fx.x等要么让我迷惑,要么做不到。我还没试过import decimal。我也看不到NumPy这样做(尽管array.__str__andarray.__repr__是十进制对齐的(但有时返回科学)。

哦,速度很重要。我在这里处理大数组。

我目前的解决方法是:

  1. 到 str(a) 并解析 NumPy 的括号
  2. 到 str(e) 数组中的每个元素和 split('.') 然后填充和重建
  3. 到 a.astype('S'+str(i)) 其中 i 是 max(len(str(a))),然后填充

似乎应该有一些现成的解决方案......(但不是必需的)

dtype当是 float64时,最佳建议失败:

0 投票
13 回答
1308 浏览

code-golf - Code Golf:从文本中快速构建关键字列表,包括实例数

我已经用 PHP 为自己制定了这个解决方案,但我很好奇它可以如何以不同的方式完成——甚至更好。我主要感兴趣的两种语言是 PHP 和 Javascript,但我很想看看在今天的任何其他主要语言(主要是 C#、Java 等)中这可以多快完成。

  1. 仅返回出现次数大于 X 的单词
  2. 仅返回长度大于 Y 的单词
  3. 忽略常见的术语,如“and, is, the, etc”
  4. 在处理之前随意去除标点符号(即“John's”变成“John”)
  5. 在集合/数组中返回结果

额外学分

  1. 将引用的陈述放在一起,(即“他们显然‘好得令人难以置信’”)
    其中“好得令人难以置信”将是实际陈述

额外的额外学分

  1. 您的脚本能否根据单词出现的频率确定应该放在一起的单词?这是在事先不知道单词的情况下完成的。例子:
    *“果蝇在医学研究方面是一件了不起的事情。过去对果蝇进行了很多研究,并带来了许多突破。未来,果蝇将继续研究,但我们的方法可能会改变。"*
    显然这里的词是“果蝇”,我们很容易找到。您的 search'n'scrape 脚本也可以确定这一点吗?

原文:http ://sampsonresume.com/labs/c.txt

答案格式

  1. 很高兴看到您的代码结果、输出以及操作持续了多长时间。
0 投票
11 回答
7371 浏览

computer-science - 创建最短的图灵完备解释器

我刚刚尝试创建最小的语言解释器。你想加入并尝试吗?

游戏规则:

  • 您应该指定您正在解释的编程语言。如果它是您发明的一种语言,它应该在评论中附带一个命令列表。
  • 您的代码应该从分配给您的代码和数据变量的示例程序和数据开始。
  • 您的代码应以结果输出结束。最好在每个中间步骤都有调试语句。
  • 您的代码应该可以按照编写的方式运行。
  • 您可以假设数据是 0 和 1(整数、字符串或布尔值,您可以选择)并且输出是单个位。
  • 该语言应该是图灵完备的,因为对于在标准模型上编写的任何算法,例如图灵机、马尔可夫链或您选择的类似算法,如何编写执行后的程序是相当明显(或解释)的由您的解释器执行算法。
  • 代码长度定义为去掉输入部分、输出部分、调试语句和不必要的空格后的代码长度。请将生成的代码及其长度添加到帖子中。
  • 您不能使用使编译器为您执行代码的函数,例如eval()exec()类似的。

这是一个社区 Wiki,这意味着问题和答案都不会从投票中获得声誉积分。但无论如何都要投票!

0 投票
17 回答
23869 浏览

code-golf - 天际线问题​​​

我刚刚在UVA 的 Online Judge上遇到了这个小问题,并认为它可能是一个小代码高尔夫的好候选人。

问题:

你要设计一个程序来帮助建筑师在给定城市建筑物位置的情况下绘制城市的天际线。为了使问题易于处理,所有建筑物都是矩形的,并且它们共享一个共同的底部(它们所在的城市非常平坦)。这座城市也被视为二维的。建筑物由有序三元组(Li, Hi, Ri)指定,其中LiRi分别是建筑物 i 的左坐标和右坐标,Hi是建筑物的高度。

替代文字

在下图中,建筑物在左侧显示为三元组

右侧显示的天际线由以下序列表示:

输出应包含描述天际线的向量,如上例所示。在天际线向量(v1, v2, v3, ... vn)中,使 i 为偶数的vi表示水平线(高度)。使 i 为奇数的vi表示垂直线(x 坐标)。天际线矢量应该代表“路径”,例如,一个从最小 x 坐标开始并水平和垂直穿过定义天际线的所有线的错误。因此,天际线向量中的最后一个条目将是 0。坐标必须用空格分隔。

如果我不计算提供的(测试)建筑物的声明并包括所有空格和制表符,我的解决方案在 Python 中是223个字符长。

这是精简版:

我认为我没有犯任何错误,但如果是这样 - 请随时批评我。

我没有太多的声誉,所以我只需支付 100 美元的赏金 - 我很好奇,如果有人能尝试在不到 .. 80 个字符的时间内解决这个问题。cobbal发布的解决方案有101 个字符长,目前是最好的解决方案。

我想,对于这类问题,80 个字符是一个病态的限制。cobbal,他的 46 个字符的解决方案让我非常惊讶——尽管我必须承认,在我部分理解他所写的内容之前,我花了一些时间阅读他的解释。

0 投票
34 回答
2916 浏览

bytearray - 数组搜索代码挑战

这是我的(代码高尔夫)挑战:获取两个字节数组并确定第二个数组是否是第一个数组的子字符串。如果是,则输出第二个数组的内容出现在第一个数组中的索引。如果在第一个数组中没有找到第二个数组,则输出 -1。

示例输入:{ 63, 101, 245, 215, 0 } { 245, 215 }

预期产出:2

示例输入 2:{ 24, 55, 74, 3, 1 } { 24, 56, 74 }

预期输出 2:-1

编辑:有人指出 bool 是多余的,所以你的函数所要做的就是返回一个表示值索引的 int 或 -1 如果没有找到。

0 投票
16 回答
1126 浏览

text-files - Code Golf 7 月 4 日版:计算出现的前十个单词

鉴于以下总统名单,请在可能的最小程序中计算前十名的字数:

输入文件

bash 97 个字符开始

输出

打破你认为合适的关系!快乐四!

对于那些关心更多关于总统的信息的人,可以在这里找到。

0 投票
6 回答
3008 浏览

c# - 异步调用 void 方法的最简洁方法

我有一个我想异步调用的方法:

我确实可以通过以下方式异步调用它:

有没有人有其他选择?

我觉得三行代码太多了?

0 投票
7 回答
2263 浏览

computer-science - 还记得单行代码挑战吗?

有没有人记得几年前在像 Byte 这样的杂志上,人们竞相生成用一行代码编写的最实用的代码?我记得像 Pole Position 这样的带有滚动文本的游戏,以及分形图形都是以这种方式完成的。

在一个声明中授予 C# 和 Java 等现代语言无穷无尽的数量,有没有人知道现在发生了类似的事情?这也是鼓舞人心和有趣的东西。