好的老后缀矢量


17

受到旧手册的启发...

挑战

我定义了一个后缀矢量的b为长度的布尔列表一个b尾随truthy值。

写一个程序或功能,给定一个b通过任何手段,则返回的后缀向量b通过任何手段。

现在看似微不足道,但要注意的是:您的分数是字节数加上解决方案可以使用的最早年份。

规则

所有标准规则均适用,但也可以使用在挑战后发布的语言和语言版本。

使用您的语言使用的布尔值的任何表示形式进行输出,例如1/ 0True/ FalseTRUE/ FALSE"True"/ "False"等。

使用列表,你的语言使用,例如任何代表输出0 0 1[False,False,True](FALSE;FALSE;TRUE){"False","False","True"},等。

你可以假设一个b始终是真实的,他们是合适的数据类型。

测试用例

给定a = 7和b = 3,返回0 0 0 0 1 1 1

给定a = 4和b = 4,返回[True,True,True,True]

给定a = 2和b = 0,返回(FALSE;FALSE)

给定a = 0和b = 0,返回{}

示例解决方案和评分

我可能想{⌽⍺↑⍵⍴1}使用Dyalog APL 提交解决方案。那将是8的字节数。这是一个动态函数,可以在1998年发布的Dyalog APL 8.1版中使用,所以我的总得分是2006。我提交的答案应该类似于:

# Dyalog APL 8.1, 1998 + 8 = 2006
    {⌽⍺↑⍵⍴1}

Optional explanation...
Recommended: Link to documentation showing when the features you used were released.

最低分获胜!


14
我对答案的可验证性深感关注。
丹尼斯

1
@丹尼斯,我了解您的关注。但是,1)答案通常非常简单,因此可以手工验证-不需要实际运行的系统,并且2)一些用户已经链接到其索赔文档。
亚当

8
我不太确定“手工验证”是否一定能解决某些问题-过去是陌生的地方,有时事物的初始版本可能缺少今天感觉很普通的事物……
Sp3000,2016年

1
@ Sp3000也许可以,但这仍然很有趣,在1.5小时内有8个答案和9个投票,我认为这个挑战很有趣,可以接受有人可能会作弊。也许在最后的优胜者一些额外的研究...
亚当

1
@CatsAreFluffy这个想法是要证明任何一种格式都是有效的。我认为案例很少且足够简单,以至于复制粘贴的便利性都不是问题。
亚当

Answers:


7

APL \ 360,1968年+ 3个字节= 1971年

⎕⍵⎕

来自@NBZ 教程的内置链接。我不知道为什么@NBZ表示它将获得1970年的收益,因为APL \ 360直到1968年才实施,而更早的APL(例如APL \ 1130)没有后缀矢量功能(请参见此处的第208页)。



8

APL,1968 + 5 = 1973

最多5个字符:

⌽⎕≥⍳⎕

旧版本:

⌽⎕↑⎕⍴1

好吧,您实际上已经给出了答案,我只是删除了动态函数定义,并检查了该函数是否在1968年起作用。这里是参考手册:

http://www.softwarepreservation.org/projects/apl/Books/APL360参考手册


孩子们,这被称为赢家。请在笔记中写下来。
CalculatorFeline

@CatsAreFluffy还没有。@莫里斯·祖卡(Moris Zucca):最后,但实际上您可以打掉那些字节的一半。你能知道怎么做吗?另外,是该手册的更现代,更易读的版本。
亚当

7

SAS,1966年+ 45 = 2011

data;a=;b=;do i=1to a;c=a-i<b;put c@;end;run; 

是时候让SAS发光了!

SAS直到1972年才首次发布,但是此数据步骤仅使用非常基本的功能,即使在1966年以后的最早预发布版本中,我也很有信心,所以我相信它会在那时起作用。输入之后a=b=,并且输出被打印到日志中。

如果有人仍然拥有带有正确版本的SAS 的IBM System / 360来进行实际验证,我会感到惊讶!



现在,如果我有现金购买大型机SAS许可证 ……
user3490 '16

5

1979鼠标,1979年+ 19 = 1998

??&TUCK (0.a)0(1-.)

翻译:Forth

规范对我来说真的很神秘,但是我认为这做对了。


断开的链接....
CalculatorFeline

@CatsAreFluffy固定; 我是从记忆中输入的。

有趣。但我认为该&Tuck版本要到2002年才可用。而且循环似乎是无限的。
AShelly

4

TI-Basic,1990年+ 21 = 2011年

此程序可使用的第一个TI计算器是1990年推出的TI-81。

Prompt A,B:"{}
seq(I>A-B,I,1,A

编辑:注意到我必须支持一个空列表...增加了4个字节的代码

测试用例

A=?7
B=?3
{0 0 0 0 1 1 1}

A=?4
B=?4
{1 1 1 1}

A=?2
B=?0
{0 0}

A=?0
B=?0
{}   * throws an error but still returns successfully

您能否在TI-Basic中添加注释来说明源的哪些部分是单个字节?我认为其中包括Prompt和seq(但我不确定其余内容
Sparr

Ans除非打印出来,否则我们不考虑通过可接受的输出方法返回。
lirtosiast

@Sparr当然,Prompt并且seq(是一个字节令牌和其它字符是一个字节的每个。
Timtech '16

@lirtosiast Ans是TI-83系列Basic中返回值的默认方法。此外,运行程序时,将自动打印最后一行。因此,您拥有两全其美的优势。
Timtech

2
它是分析引擎吗?有人应该这样做...
CalculatorFeline

4

Mathematica 1.0,1988 + 22字节= 2010

Array[#>m&/.m->#-#2,#]&

我不确定这是否行得通,只是仔细阅读了10.3的文档,并查找了1988年引入的内容(1.0)


目前的赢家而言。如果仅SMP代码会更短...
CalculatorFeline

在另一方面,虽然,一些文档:纯函数/.并且->Array
SP3000

4

68k TI-Basic,1995年+ 25 = 2020年

此程序可使用的第一个TI计算器是1995年推出的TI-92。

define f(a,b)=seq(x>a-b,x,1,a)

与TI-83系列不同,68k TI-Basic支持空白列表。


尺寸如何计算?在68k系列上,令牌化非常不同。
lirtosiast

Prompt和seq都是两个字节,外加一个字节的多个参数标志。(21个字节)
Timtech '16

请注意,在68k计算器的上下文中,这既不是程序也不是函数:在函数中Prompt无效,并且程序无法返回值。因此必须在主屏幕上输入。另一方面,define f(a,b)=seq(x>a-b,x,1,a)确实定义了可以给a和b作为参数的有效函数。(在1995
Fox

我拥有几个TI计算器(唯一的z80版本是81),但通常使用TI-92 Plus。运行此命令define并对其进行调用f(2,1)或类似的标记后,操作系统报告的大小为25个字节。
福克斯


3

MATL,2015 + 1 + 4 = 2020

:P<~

自2015年12月31日发布该语言的6.0.0版本以来(该版本使用隐式输入,该隐含输入已在该版本中引入),此方法有效。

我已经1根据@drolex在可能不同的语言环境中添加的注释添加了分数。

在线尝试!

说明

:    % take first input implicitly. Generate inclusive range from 1 to that
P    % flip that array
<~   % take second input implicitly. True for elements of flipped array that
     % exceed second number. Display implicitly

4
一天后,和...
亚当

2
异议!我们将需要github服务器和发布者的语言环境。如果一个在汤加,另一个在夏威夷,则此计数可能需要增加。
drolex

@drolex OP应该准确地定义“年”的含义。同时,我为我的得分加1
Luis Mendo

@DonMuesli我不是故意的,只是显示这种类型的得分的潜在的局限性
drolex

@drolex哦,我以为你是认真的。无论如何,我已经问过OP。Github日期可能应该算作官方
Luis Mendo

3

J,1990 + 8 = 1998

|.a{.b#1

啊 正在研究此答案,有人在我希望了解该语言之前加入了APL。这是我的J解决方案。


2

序言,1972年+ 57 = 2029年

a(0,_,[]).
a(A,B,[H|L]):-Z is A-1,a(Z,B,L),(Z<B,H=1;H=0).

用法: a(7,3,L).L与结合使用[0,0,0,0,1,1,1]

我真的不太确定何时is使用该语言实现,而且我怀疑您是否可以找到确切的日期。虽然这是一个非常基本的内置函数,所以我认为它在1972年首次出现时就已经存在。

但这并不是真的很重要,我离这个答案还差得远。


这可能不是赢家,但它清楚地说明了探索的优势- EHM -成熟的语言...
亚当

2

SMP,1983 + 28字节= 2011

Map[S[$1>x,x->$1-$2],Ar[$1]]

我想我没错... S:2.10,第48页 Ar:7.1,第102页 Map:7.2,第106页 $1:7.1,第104页

而且,如果您熟悉Mathematica,Ar就不会那样。更喜欢Range+ Select


(#>x&/.x->#)/@Range[#+#2]&在Mathematica
CalculatorFeline

我的意思是(#>x&/.x->#-#2)/@Range[#]&
CalculatorFeline

2

Vim,1991年+ 21 = 2012

"adwj<c-x>"bdw@ai0<esc>v@bhr1

输入看起来像这样:

7
3

输出看起来像这样:

0000111

说明:

"adw                            'Delete a word into register a
    j<c-x>                      'Go down a line, and decrement the next number to occur
          "bdw                  'Delete a word into register b
              @ai0<esc>         'Insert a '0' "a" times
                       v        'Enter visual mode
                        @bh     'Move "b" characters left
                           r1   'Replace the whole selection with the character '1'

太糟糕了,vi不支持寄存器,因为它于1976年发布!
DJMcMayhem

请解释一下?
CalculatorFeline

2

B,1971 + 54 = 2025

s(l,t){while(t<l--)printn(0,8);while(t--)printn(1,8);}

有关此无类型C母体的手册,请参见“ B的用户参考 ”。


2

Pyth,2015年+ 9 4 = 2024 2019

感谢@FryAmTheEggman的帮助!

gRQE

在这里尝试!

说明

gRQE#Q =尾随真实值的数量
        #E =向量的长度
 RE#映射范围(E)
g Q#d> = Q

2

> <>,2009 + 14 + 3对于-v = 2026

ba-v以相反的顺序直接在堆栈上提供。

输出没有像示例中那样用空格分隔,但是这似乎没有违反任何规定的规则。它使用0和1表示该语言所使用的false和true。

:?!;{:0(n1-}1-

It doesn't work with the current version since ? now pops its test value from the stack.

I'm not confident every feature was implemented from day 1, -v for example could have been provided later as a commodity. I'll try to make sure my answer is correct this weekend.


1
? didn't pop (a long time ago) as stated in the quine challenge
CalculatorFeline

Thanks, that's great news, I'll save 1 byte :) I'll edit that now, but I'll have to check the resources linked on esolang.org, some date back to at least 2011.
Aaron


Thanks for your help, I wouldn't have thought to check the wiki's revisions ! I'm currently at work and won't probably be able to check everything yet, but I'll make sure to do it this evening or tomorrow.
Aaron

Score=2026 now.
CalculatorFeline


1

PowerShell v1, 2006 + 28 = 2034

param($a,$b),0*($a-$b)+,1*$b

Uses the comma operator to construct the array(s), which has been in PowerShell since the beginning.


1

Mathcad, 1998 + 42 = 2040

"bytes" are interpreted as number of distinct keyboard characters (eg, 'for' operator (including one programming line) is a single character ctl-shft-#, or a click on the Programming toolbar)).

The above byte count assumes that the a and b definitions don't count towards the total; add 4 bytes for definitions if this assumption is invalid.

The function version shown below adds 5 bytes for the definition and a further 3 bytes for each use (assuming the a and b values are directly typed in).

As my Mathcad solution should clearly be playing off the red tees and not the competition ones, I've added a table of solutions. Note that as Mathcad has no empty array, I've used an empty string ("") instead; I've used 0 to indicate where I haven't calculated the b>a pairs.

enter image description here


Very interesting!
Timtech

1

PHP, 1995 + 56 bytes = 2051

function s($a,$b){while($i++<$a)$v[]=$i>$a-$b;return$v;}
Exploded view
function s($a,$b) {
  while ($i++ < $a) $v[] = $i > $a - $b;
  return $v;
}

Uh..there's custom scoring. It's first year language woks in+byte count.
CalculatorFeline

Whoops, right you are! Fixing...
ricdesi

Making the probably-incorrect assumption of this working in PHP 1. Will verify version soon.
ricdesi

1

Javascript ES6, 2015 + 46 = 2061

Returns array of 0 and 1

(a,b)=>Array(a-b).fill(0).concat(Array(b).fill(1))

Javascript ES6, 2015 + 50 = 2065

Returns a string of 0 and 1 chars

(a,b)=>Array(a-b+1).join(0)+Array(b+1).join(1)

Javascript, 1995 + 61 = 2056

Returns a string of 0 and 1 chars

function(a,b){return Array(a-b+1).join(0)+Array(b+1).join(1)}

1

k (kona), 1993 + 15 = 2008

((a-b)#0b),b#1b

Creates list of b True values, and concatenates it to a list of (a-b) False values.


0

R, 20 bytes + 1993 = 2013

function(a,b)1:a>a-b

Try it online!

Possibly this might work in S, which would drop the score to 2008, but I haven't been able to verify it.


0

SmileBASIC 3, 2014 + 25 = 2039

The first publicly available version of SmileBASIC 3 launched in Japan with the SmileBASIC app for Nintendo 3DS in November 2014.

Prints a string where 0 is false and 1 is true (as they are in the language itself.)

INPUT A,B?"0"*(A-B)+"1"*B
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.