Tốt Old Suffix Vector


17

Lấy cảm hứng từ một hướng dẫn cũ ...

Các thách thức

Tôi xác định một thứ suffix vector của b như danh sách boolean chiều dài một với b trailing giá trị truthy.

Viết một chương trình hoặc chức năng đó, được đưa ra mộtb bằng bất kỳ phương tiện, trả về một thứ suffix vector của b bằng bất kỳ phương tiện.

Bây giờ điều này có vẻ tầm thường, nhưng đây là một nhược điểm: Điểm của bạn là số byte cộng với năm đầu tiên giải pháp của bạn sẽ có hiệu quả.

Quy tắc

Tất cả các quy tắc tiêu chuẩn được áp dụng, ngoại trừ các ngôn ngữ và phiên bản ngôn ngữ được phát hành sau thử thách này, cũng có thể được sử dụng.

Đầu ra sử dụng bất kỳ biểu diễn nào của các giá trị boolean mà ngôn ngữ của bạn sử dụng, ví dụ 1/ 0, True/ False, TRUE/ FALSE, "True"/ "False", v.v.

Đầu ra sử dụng bất cứ điều gì đại diện của danh sách mà bạn sử dụng ngôn ngữ, ví dụ như 0 0 1, [False,False,True], (FALSE;FALSE;TRUE), {"False","False","True"}vv

Bạn có thể cho rằng mộtb luôn là đúng và rằng họ là một kiểu dữ liệu thích hợp.

Các trường hợp thử nghiệm

Cho a = 7 và b = 3, trả về0 0 0 0 1 1 1

Cho a = 4 và b = 4, trả về[True,True,True,True]

Cho a = 2 và b = 0, trả về(FALSE;FALSE)

Cho a = 0 và b = 0, trả về{}

Ví dụ giải pháp và tính điểm

Tôi có thể muốn gửi giải pháp {⌽⍺↑⍵⍴1}bằng Dyalog APL. Đó sẽ là số cộng của 8. Đây là một hàm động, hoạt động từ phiên bản 8.1 của Dyalog APL, được phát hành vào năm 1998, vì vậy tổng điểm của tôi là năm 2006. Câu trả lời được gửi của tôi sẽ giống như:

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

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

Điểm số thấp nhất chiến thắng!


14
Tôi quan tâm sâu sắc về tính xác minh của các câu trả lời.
Dennis

1
@Dennis Tôi hiểu bạn quan tâm. Tuy nhiên, 1) các câu trả lời sẽ rất đơn giản và do đó có thể được xác minh bằng tay - không yêu cầu hệ thống chạy thực tế và 2) một số người dùng đã liên kết với tài liệu về khiếu nại của họ.
Adám

8
Tôi không chắc chắn "xác minh bằng tay" nhất thiết phải có hiệu quả đối với một số câu trả lời - quá khứ là một nơi xa lạ và đôi khi các phiên bản ban đầu của mọi thứ có thể thiếu những thứ cảm thấy phổ biến hiện nay ...
Sp3000

1
@ Sp3000 Có thể, nhưng dù sao đây cũng chỉ là niềm vui và với 8 câu trả lời và 9 câu hỏi trong 1,5 giờ, tôi nghĩ thử thách này đủ thú vị để chấp nhận rằng ai đó có thể gian lận. Có thể một số nghiên cứu thêm về người chiến thắng cuối cùng ...
Adám

1
@CatsAreFluffy Ý tưởng là chỉ ra rằng bất kỳ định dạng nào là hợp lệ. Tôi nghĩ rằng các trường hợp rất ít và đủ đơn giản để dễ dàng sao chép-dán không phải là một vấn đề.
Adám

Câu trả lời:


7

APL \ 360, 1968 + 3 byte = 1971

⎕⍵⎕

Một nội dung từ hướng dẫn @NBZ được liên kết đến. Tôi không biết tại sao @NBZ nói rằng nó sẽ đạt điểm 1970, vì APL \ 360 không được triển khai cho đến năm 1968 và các APL trước đó như APL \ 1130 không có chức năng vectơ hậu tố (xem trang 208 ở đây ).


8

Viết tắt, 1970 + 38 = 2008

:s tuck +do 0 . loop 0 +do -1 . loop ;

cách sử dụng: 7 3 sin "0 0 0 0 -1 -1 -1"


Bây giờ chúng ta nói chuyện!
Adám

Tại sao -1? filler +
CalculatorFeline

2
Đó là một trong những giá trị 'sự thật' thú vị hơn mà tôi đã thấy gần đây.
dùng3490


Có một lý do chính đáng này được đặt tên svvà không s, hoặc một cái gì khác một byte?
mèo

8

APL, 1968 + 5 = 1973

Xuống tới 5 ký tự:

⌽⎕≥⍳⎕

Phiên bản cũ hơn:

⌽⎕↑⎕⍴1

Vâng, bạn thực sự đã đưa ra câu trả lời, tôi chỉ xóa định nghĩa hàm động và kiểm tra xem cái này có hoạt động vào năm 1968. Để tham khảo ở đây là hướng dẫn:

http://www.softwarepreservation.org/projects/apl/Books/APL360ReferenceManual


Trẻ em, đây được gọi là một người chiến thắng . Xin vui lòng viết nó trong ghi chú của bạn.
Máy

@CatsAreFluffy Chưa. @ Moris Zucca: Cuối cùng, nhưng bạn thực sự có thể chơi một nửa số byte đó. Bạn có thể tìm ra làm thế nào? Ngoài ra, đây là một phiên bản hiện đại hơn và dễ đọc hơn của hướng dẫn.
Adám

7

SAS, 1966 + 45 = 2011

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

Đã đến lúc để tỏa sáng!

SAS không được công bố lần đầu tiên cho đến năm 1972, nhưng bước dữ liệu này chỉ sử dụng các tính năng rất cơ bản mà tôi khá tự tin sẽ có sẵn ngay cả trong các phiên bản tiền phát hành sớm nhất từ ​​năm 1966 trở đi, vì vậy tôi tin rằng nó sẽ hoạt động sau đó. Đầu vào đi sau a=b=, và đầu ra được in vào nhật ký.

Tôi sẽ rất ngạc nhiên nếu bất cứ ai vẫn có IBM System / 360 với phiên bản phù hợp của SAS để thực sự xác minh điều này!



Bây giờ, nếu tôi có tiền mặt cho giấy phép máy tính lớn ...
user3490 11/03/2016

5

Chuột-1979 , 1979 + 19 = 1998

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

Bản dịch của: Forth .

Thông số kỹ thuật thực sự khó hiểu với tôi nhưng tôi nghĩ điều này đúng.


Liên kết bị hỏng ....
Máy

@CatsAreFluffy Đã sửa; Tôi gõ nó từ bộ nhớ.
mèo

Hấp dẫn. Nhưng tôi không nghĩ rằng nó &Tuckđã có sẵn cho đến phiên bản 2002. Và các vòng lặp xuất hiện là vô hạn.
HỎI

4

TI-Basic, 1990 + 21 = 2011

Máy tính TI đầu tiên mà chương trình này hoạt động là TI-81, được giới thiệu vào năm 1990.

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

Chỉnh sửa: nhận thấy rằng tôi phải hỗ trợ một danh sách trống ... mã tăng thêm 4 byte

Các trường hợp thử nghiệm

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

Bạn có thể thêm bình luận về phần nào của nguồn là các byte đơn trong TI-Basic không? Tôi nghĩ rằng bao gồm Prompt và seq (nhưng tôi không chắc về phần còn lại
Sparr

Chúng tôi không xem xét trả lại thông qua Ansmột phương thức đầu ra chấp nhận được, trừ khi nó được in.
lirtosiast

@Sparr Chắc chắn, Promptseq(là một byte mã thông báo và các ký tự khác là một byte mỗi.
Timtech 10/03/2016

@lirtosiast Anslà cách mặc định để trả về giá trị trong sê -ri TI-83 Basic. Ngoài ra, khi một chương trình được chạy, dòng cuối cùng sẽ được in tự động. Vì vậy, bạn có tốt nhất của cả hai thế giới.
Timtech 10/03/2016

2
Nó có phải là Công cụ phân tích? Ai đó nên làm điều đó ...
Máy

4

Toán học 1.0, 1988 + 22 byte = 2010

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

Tôi không chắc liệu nó có hoạt động không, chỉ cần xem qua tài liệu trên 10.3 và tìm kiếm những thứ được giới thiệu vào năm 1988 (1.0)


Chỉ cần về người chiến thắng hiện tại. Nếu chỉ có mã SMP có thể rút ngắn hơn ...
CalculatorFeline

Ngày lưu ý khác, mặc dù một số tài liệu: chức năng thuần túy , /.-> ,Array
Sp3000

4

68k TI-Basic, 1995 + 25 = 2020

Máy tính TI đầu tiên mà chương trình này hoạt động là TI-92, được giới thiệu vào năm 1995.

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

Không giống như dòng TI-83, 68k TI-Basic hỗ trợ danh sách trống.


Làm thế nào là kích thước được tính? Mã thông báo rất khác nhau trên loạt 68k.
lirtosiast

Nhắc và seq là cả hai byte cộng với một cờ một byte cho nhiều đối số. (21 byte)
Timtech 11/03/2016

Lưu ý rằng đây không phải là chương trình cũng không phải là hàm trong ngữ cảnh của máy tính 68k: Promptkhông hợp lệ trong hàm và chương trình không thể trả về giá trị. Vì vậy, điều này phải được nhập vào màn hình chủ. Mặt khác, define f(a,b)=seq(x>a-b,x,1,a)không xác định hàm hợp lệ có thể được cho a và b làm đối số. (Được xác minh trên TI-92 của tôi từ 1995-09-13)
Fox

Tôi sở hữu một số máy tính TI (phiên bản z80 duy nhất là 81), nhưng thường sử dụng TI-92 Plus. Sau khi chạy cái này definevà gọi f(2,1)hoặc tương tự như token hóa nó, kích thước được HĐH báo cáo là 25 byte.
Fox

3

Python 1.0, 1994 + 26 = 2020

Đã lưu 2 byte nhờ DSM.

Lambda được giới thiệu với phiên bản chính đầu tiên, 1.0

lambda a,b:[0]*(a-b)+[1]*b

1
Lambda xác nhận được giới thiệu trong 1.0, danh sách (trình tự) lặp lại trong 0.9.2 . Phiên bản cũ nhất tôi có thể kiểm tra điều này (ngoài 0.9.1) là 1.5.2 , và nó hoạt động tốt ở đó.
Sp3000

@ Sp3000 Oh wow, thật tuyệt vời. Tôi đã cố gắng tìm một số nhật ký thay đổi để xác nhận rằng sự lặp lại trình tự là ngôn ngữ sớm.
Morgan Thrapp 10/03/2016

3

MATL , 2015 + 1 + 4 = 2020

:P<~

Điều này hoạt động kể từ khi phát hành 6.0.0 của ngôn ngữ (nó sử dụng đầu vào ẩn, được giới thiệu trong bản phát hành đó), ngày 31 tháng 12 năm 2015.

Tôi đã thêm vào 1điểm số theo nhận xét @drolex về các địa điểm khác nhau.

Hãy thử trực tuyến!

Giải trình

:    % 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
Một ngày sau, và ...
Adám

2
Sự phản đối! Chúng ta sẽ cần phải có các vị trí cho máy chủ github và người gửi phát hành. Nếu một người ở Tonga và người kia ở Hawaii, số này có thể cần phải tăng lên.
drolex 10/03/2016

@drolex OP nên xác định chính xác ý nghĩa của anh ấy bằng "năm". Trong khi đó, tôi đang thêm 1 vào điểm số của mình
Luis Mendo

@DonMuesli Tôi không có ý đó, chỉ cho thấy những hạn chế tiềm năng của kiểu ghi bàn này
drolex 10/03/2016

@drolex Ồ, tôi nghĩ bạn nghiêm túc đấy. Dù sao tôi cũng đã hỏi OP. Ngày Github có lẽ nên được tính là chính thức
Luis Mendo 10/03/2016

3

J, 1990 + 8 = 1998

|.a{.b#1

Argh. Đã nghiên cứu câu trả lời này và ai đó đã đến APL trước khi tôi có thể hy vọng hiểu ngôn ngữ này. Đây là giải pháp J của tôi thay thế.


2

Prolog, 1972 + 57 = 2029

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

Cách sử dụng: a(7,3,L). sẽ thống nhất Lvới [0,0,0,0,1,1,1].

Tôi thực sự không chắc chắn khi isđược thực hiện bằng ngôn ngữ và tôi nghi ngờ bạn thực sự có thể tìm thấy ngày chính xác. Đó là một tích hợp khá cơ bản mặc dù vậy tôi cho rằng nó đã tồn tại khi ngôn ngữ này xuất hiện lần đầu tiên vào năm 1972 .

Không phải là nó thực sự quan trọng, tôi còn lâu mới chiến thắng với câu trả lời này.


Đây có thể không phải là người chiến thắng, nhưng nó minh họa rõ ràng lợi thế của việc khám phá - ehm - ngôn ngữ trưởng thành ...
Adám

2

SMP , 1983 + 28 byte = 2011

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

Tôi nghĩ rằng tôi đã hiểu đúng ... S: 2.10, trang 48 Ar: 7.1, trang 102 Map: 7.2, trang 106 $1: 7.1, trang 104

Và nếu bạn quen thuộc với Mathicala, không, Arsẽ không hoạt động như vậy . Thích hơn Range+ Select.


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

Ý tôi là(#>x&/.x->#-#2)/@Range[#]&
CalculatorFeline

2

Vim, 1991 + 21 = 2012

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

Đầu vào trông như thế này:

7
3

Và đầu ra trông như thế này:

0000111

Giải trình:

"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'

Quá xấu vi không hỗ trợ đăng ký, bởi vì nó được phát hành vào năm 1976!
DJMcMayhem

Xin giải thích?
Máy


2

Năm 2015, 9 + 9 4 = 2024 2019

Cảm ơn @FryAmTheEggman vì sự giúp đỡ của anh ấy!

gRQE

Hãy thử nó ở đây!

Giải trình

gRQE # Q = số lượng giá trị trung thực kéo dài
        # E = chiều dài của vectơ
 Bản đồ RE # trên phạm vi (E)
g Q # d> = Q

2

> <> , 2009 + 14 + 3 cho -v = 2026

banên được cung cấp trực tiếp trên ngăn xếp với -v, theo thứ tự ngược lại.

Đầu ra không được phân tách không gian như trong các ví dụ, nhưng điều đó dường như không đi ngược lại với bất kỳ quy tắc đã nêu nào. Nó sử dụng 0 và 1 để thể hiện sai và đúng, như được sử dụng bởi ngôn ngữ.

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

Nó không hoạt động với phiên bản hiện tại kể từ ?bây giờ bật giá trị thử nghiệm của nó từ ngăn xếp.

Tôi không tự tin mọi tính năng được triển khai từ ngày 1, -vví dụ có thể được cung cấp sau này dưới dạng hàng hóa. Tôi sẽ cố gắng đảm bảo câu trả lời của tôi là đúng vào cuối tuần này.


1
? đã không bật (một thời gian dài trước đây) như đã nêu trong thử thách quine
CalculatorFeline

Cảm ơn, đó là tin tuyệt vời, tôi sẽ tiết kiệm 1 byte :) Bây giờ tôi sẽ chỉnh sửa, nhưng tôi sẽ phải kiểm tra các tài nguyên được liên kết trên esolang.org, một ngày nào đó trở lại ít nhất là năm 2011.
Aaron


Cảm ơn sự giúp đỡ của bạn, tôi đã không nghĩ sẽ kiểm tra các bản sửa đổi của wiki! Tôi hiện đang làm việc và có lẽ sẽ không thể kiểm tra mọi thứ, nhưng tôi chắc chắn sẽ làm điều đó vào tối nay hoặc ngày mai.
Aaron

Điểm = 2026 bây giờ.
Máy



1

Mathcad, 1998 + 42 = 2040

"byte" được hiểu là số ký tự bàn phím riêng biệt (ví dụ: toán tử 'for' (bao gồm một dòng lập trình) là một ký tự đơn ctl-shft- # hoặc nhấp vào thanh công cụ Lập trình)).

Số byte ở trên giả định rằng các định nghĩa a và b không được tính vào tổng; thêm 4 byte cho các định nghĩa nếu giả định này không hợp lệ.

Phiên bản hàm hiển thị bên dưới thêm 5 byte cho định nghĩa và thêm 3 byte cho mỗi lần sử dụng (giả sử giá trị a và b được nhập trực tiếp).

Vì giải pháp Mathcad của tôi rõ ràng là nên chơi các trò chơi đỏ và không phải là giải đấu, tôi đã thêm một bảng giải pháp. Lưu ý rằng vì Mathcad không có mảng trống, thay vào đó tôi đã sử dụng một chuỗi rỗng (""); Tôi đã sử dụng 0 để chỉ ra nơi tôi chưa tính b> một cặp.

nhập mô tả hình ảnh ở đây


Rất thú vị!
Timtech 11/03/2016

1

PHP, 1995 + 56 byte = 2051

function s($a,$b){while($i++<$a)$v[]=$i>$a-$b;return$v;}
Khung nhìn bùng nổ
function s($a,$b) {
  while ($i++ < $a) $v[] = $i > $a - $b;
  return $v;
}

Uh..có tính điểm tùy chỉnh. nó là ngôn ngữ của năm đầu tiên với số lượng byte .
Máy

Rất tiếc, đúng là bạn! Đang sửa chữa ...
ricdesi 11/03/2016

Đặt giả định có thể không chính xác về điều này hoạt động trong PHP 1. Sẽ xác minh phiên bản sớm.
ricdesi

1

Javascript ES6, 2015 + 46 = 2061

Trả về mảng 0 và 1

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

Javascript ES6, 2015 + 50 = 2065

Trả về một chuỗi 01ký tự

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

Javascript, 1995 + 61 = 2056

Trả về một chuỗi 01ký tự

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

Tạo danh sách b Giá trị đúng và nối nó với danh sách (ab) Giá trị sai.


0

R , 20 byte + 1993 = 2013

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

Hãy thử trực tuyến!

Có thể điều này có thể hoạt động ở S, sẽ giảm điểm đến năm 2008, nhưng tôi chưa thể xác minh nó.


0

Nụ cười 3, 2014 + 25 = 2039

Phiên bản SmileBASIC 3 công khai đầu tiên được ra mắt tại Nhật Bản với ứng dụng SmileBASIC cho Nintendo 3DS vào tháng 11 năm 2014.

In một chuỗi trong đó 0 là sai và 1 là đúng (vì chúng nằm trong chính ngôn ngữ.)

INPUT A,B?"0"*(A-B)+"1"*B
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.