Inspirado em um manual antigo ...
O desafio
Defino a um th sufixo vector de b como a lista booleano de comprimento um com b valores truthy de fuga.
Escrever um programa ou função que, dado um e b , por qualquer meio, retorna a um th sufixo vector de b , por qualquer meio.
Agora, isso pode parecer trivial, mas aqui está o problema: sua pontuação é a contagem de bytes mais o primeiro ano em que sua solução teria funcionado.
Regras
Todas as regras padrão se aplicam, exceto que os idiomas e versões de idiomas lançados após esse desafio também podem ser usados.
Saída usando qualquer representação de valores booleanos que seu usos da linguagem, por exemplo, 1
/ 0
, True
/ False
, TRUE
/ FALSE
, "True"
/ "False"
, etc.
Saída usando qualquer representação de listas que o seu usos da linguagem, por exemplo 0 0 1
, [False,False,True]
, (FALSE;FALSE;TRUE)
, {"False","False","True"}
, etc.
Você pode supor que a ≥ b seja sempre verdadeiro e que eles sejam de um tipo de dados apropriado.
Casos de teste
Dado a = 7 eb = 3, retorne0 0 0 0 1 1 1
Dado a = 4 eb = 4, retorne[True,True,True,True]
Dado a = 2 eb = 0, retorne(FALSE;FALSE)
Dado a = 0 eb = 0, retorne{}
Solução e pontuação de exemplo
Talvez eu queira enviar a solução {⌽⍺↑⍵⍴1}
usando o Dyalog APL. Isso seria um número mínimo de 8. Esta é uma função dinâmica, que funciona a partir da versão 8.1 do Dyalog APL, lançada em 1998, então minha pontuação total é 2006. Minha resposta enviada deve ser semelhante a:
# Dyalog APL 8.1, 1998 + 8 = 2006
{⌽⍺↑⍵⍴1}
Optional explanation...
Recommended: Link to documentation showing when the features you used were released.
Menor pontuação ganha!
fonte
Respostas:
APL \ 360, 1968 + 3 bytes = 1971
Um builtin do tutorial @NBZ vinculado a. Eu não sei por que @NBZ disse que vai marcar 1970 porque APL \ 360 não foi implementado até 1968, e APLs anteriores como APL \ 1130 não têm a função sufixo vetor (ver página 208 do aqui ).
fonte
Quarto, 1970 + 38 = 2008
uso:
7 3 s
imprime "0 0 0 0 -1 -1 -1"fonte
sv
e nãos
, ou algo mais um byte?APL, 1968 + 5 = 1973
Até 5 caracteres:
Versão antiga:
Bem, você já deu a resposta, acabei de remover a definição da função dinâmica e verifiquei se essa funcionava em 1968. Para referência, aqui está o manual:
http://www.softwarepreservation.org/projects/apl/Books/APL360ReferenceManual
fonte
SAS, 1966 + 45 = 2011
Hora do SAS brilhar!
O SAS não foi publicado pela primeira vez até 1972, mas essa etapa de dados usa apenas recursos muito básicos que, estou bastante confiante, estariam disponíveis mesmo nas primeiras versões de pré-lançamento a partir de 1966, por isso acredito que teria funcionado. A entrada é posterior
a=
eb=
, e a saída é impressa no log.Eu ficaria surpreso se alguém ainda tivesse um IBM System / 360 com a versão correta do SAS para realmente verificar isso!
fonte
Mouse-1979 , 1979 + 19 = 1998
Tradução de: Forth .
A especificação é realmente enigmática para mim, mas acho que isso faz a coisa certa.
fonte
&Tuck
estava disponível até a versão de 2002. E os loops parecem ser infinitos.TI-Basic, 1990 + 21 = 2011
A primeira calculadora de TI em que este programa trabalha é a TI-81, lançada em 1990.
Edit: notei que devo suportar uma lista vazia ... aumento do código em 4 bytes
Casos de teste
fonte
Ans
um método de saída aceitável, a menos que seja impresso.Prompt
eseq(
são tokens de um byte e os outros caracteres são um byte cada.Ans
é a maneira padrão de retornar um valor na TI-83 series Basic. Além disso, quando um programa é executado, a última linha é impressa automaticamente. Então você tem o melhor dos dois mundos.Mathematica 1.0, 1988 + 22 bytes = 2010
Não tenho certeza se isso funciona, apenas analisei a documentação na 10.3 e procurei por coisas que diziam Introduzido em 1988 (1.0)
fonte
/.
e->
,Array
68k TI-Basic, 1995 + 25 = 2020
A primeira calculadora de TI em que este programa trabalha é a TI-92, lançada em 1995.
Ao contrário da série TI-83, o 68k TI-Basic suporta a lista vazia.
fonte
Prompt
é inválido em uma função e um programa não pode retornar um valor. Portanto, isso deve ser inserido na tela inicial. Por outro lado,define f(a,b)=seq(x>a-b,x,1,a)
define uma função válida que pode receber dados aeb como argumentos. (Verificado na minha TI-92 de 13/09/1995)define
e chamarf(2,1)
ou semelhante a tokenizá-lo, o tamanho relatado pelo sistema operacional é de 25 bytes.Python 1.0, 1994 + 26 = 2020
Economizou 2 bytes graças ao DSM.
O Lambda foi introduzido com o primeiro grande lançamento, 1.0
fonte
MATL , 2015 + 1 + 4 = 2020
Isso funciona desde o release 6.0.0 do idioma (ele usa entradas implícitas, introduzidas nesse release), com data de 31 de dezembro de 2015.
Eu adicionei
1
para a pontuação de acordo com comentários @drolex on possivelmente diferentes localidades.Experimente online!
Explicação
fonte
J, 1990 + 8 = 1998
Argh. Estava pesquisando esta resposta e alguém chegou à APL antes que eu pudesse entender a linguagem. Aqui está minha solução J.
fonte
Prolog, 1972 + 57 = 2029
Uso:
a(7,3,L).
será unificadoL
com[0,0,0,0,1,1,1]
.Eu realmente não tenho certeza quando
is
foi implementado no idioma e duvido que você possa encontrar a data exata. É um built-in bastante básico, então eu suponho que ele já existia quando o idioma apareceu pela primeira vez em 1972 .Não que isso realmente importe, estou longe de ganhar com esta resposta.
fonte
SMP , 1983 + 28 bytes = 2011
Acho que entendi direito ...
S
: 2.10, página 48Ar
: 7.1, página 102Map
: 7.2, página 106$1
: 7.1, página 104E se você estiver familiarizado com o Mathematica, não,
Ar
não funciona como que . Mais comoRange
+Select
.fonte
(#>x&/.x->#)/@Range[#+#2]&
Em Mathematica(#>x&/.x->#-#2)/@Range[#]&
Vim, 1991 + 21 = 2012
A entrada fica assim:
E a saída é assim:
Explicação:
fonte
B , 1971 + 54 = 2025
Consulte " A Referência do Usuário para B " para o manual deste precursor C sem fonte.
fonte
Pyth, 2015 +
94 =20242019Obrigado a @FryAmTheEggman por sua ajuda!
Experimente aqui!
Explicação
fonte
> <> , 2009 + 14 + 3 para -v = 2026
b
ea
deve ser fornecido diretamente na pilha-v
, na ordem inversa.A saída não é separada por espaço, como nos exemplos, mas isso não parece contrariar nenhuma regra declarada. Ele usa 0 e 1 para representar falso e verdadeiro, conforme usado pelo idioma.
Ele não funciona com a versão atual, pois
?
agora exibe seu valor de teste da pilha.Não tenho certeza de que todos os recursos foram implementados desde o primeiro dia,
-v
por exemplo, poderiam ter sido fornecidos posteriormente como uma mercadoria. Vou tentar garantir que minha resposta esteja correta neste fim de semana.fonte
05AB1E , 2016 + 9 = 2025
Definitivamente, isso pode ser ainda mais importante, mas aqui está um começo: p. Código:
Experimente online! A entrada é dada como b, a .
Também 9 bytes:
0×1I×0ñRS
.fonte
°
exist volta em 2016 btw?)PowerShell v1, 2006 + 28 = 2034
Usa o operador de vírgula para construir as matrizes que estão no PowerShell desde o início.
fonte
Mathcad, 1998 + 42 = 2040
"bytes" são interpretados como número de caracteres distintos do teclado (por exemplo, o operador 'for' (incluindo uma linha de programação) é um único caractere ctl-shft- #, ou um clique na barra de ferramentas de programação)).
A contagem de bytes acima pressupõe que as definições aeb não contam para o total; adicione 4 bytes para definições se essa suposição for inválida.
A versão da função mostrada abaixo adiciona 5 bytes para a definição e mais 3 bytes para cada uso (assumindo que os valores a e b sejam digitados diretamente).
Como minha solução do Mathcad deveria estar claramente mostrando as camisetas vermelhas e não as da concorrência, adicionei uma tabela de soluções. Observe que, como o Mathcad não possui uma matriz vazia, usei uma string vazia (""); Usei 0 para indicar onde não calculei os pares b> a.
fonte
PHP, 1995 + 56 bytes = 2051
Vista expandidafonte
Javascript ES6, 2015 + 46 = 2061
Retorna matriz de 0 e 1
Javascript ES6, 2015 + 50 = 2065
Retorna uma sequência de caracteres
0
e1
Javascript, 1995 + 61 = 2056
Retorna uma sequência de caracteres
0
e1
fonte
k ( kona ), 1993 + 15 = 2008
Cria uma lista de b valores verdadeiros e concatena-a para uma lista de (ab) valores falsos.
fonte
R , 20 bytes + 1993 = 2013
Experimente online!
Possivelmente isso pode funcionar em S, o que reduziria a pontuação para 2008, mas não consegui verificar.
fonte
SmileBASIC 3, 2014 + 25 = 2039
A primeira versão publicamente disponível do SmileBASIC 3 foi lançada no Japão com o aplicativo SmileBASIC para Nintendo 3DS em novembro de 2014.
Imprime uma sequência em que 0 é falso e 1 é verdadeiro (como estão no próprio idioma).
fonte