Código próximo ao desafio: Soma de números inteiros


39

Este é um desafio simples: dada uma sequência de números inteiros, encontre a soma de todos os números inteiros nela.

Mas com uma torção. Sua pontuação é a distância de Levenshtein entre seu código e a seguinte frase (O desafio):

Dado um conjunto de números inteiros, encontre a soma de todos os números inteiros.

Você pode assumir que não há novas linhas ou espaços à direita na entrada.

Exemplo de entrada / saída:

Input: 1 5 -6 2 4 5
Output: 11
Input: 1 -2 10
Output: 9

Uma calculadora on-line para a distância de Levenshtein pode ser encontrada aqui: http://planetcalc.com/1721/


4
Não posso deixar de pensar isso
Johne

7
Uau, tanta criatividade caras xD ... tosse comentário abusadores tosse

1
Você acha que isso deveria ter uma sequência com outro desafio, mas o mesmo diretor de distância de Levenshtein? Não tenho certeza se isso é considerado digno de sequela ou não.

1
@NicoA definitivamente! Talvez o único problema seja que essa tarefa foi fácil demais.
Maltysen 23/07/2015

2
@NicoA Se o fizer, tenha muito cuidado ao definir o que não é permitido. Muitos idiomas permitem que as strings brutas flutuem, por exemplo.
Xnor

Respostas:


58

Python, distância 3

#Given a set of integers, find the 
sum#of all integers in it.

Isso fornece a função interna sum, que pode somar um conjunto como sum({3,5,7})==17. As partes restantes são comentadas. Tem distância 3, com 3 edições:

  • Adicione a inicial #
  • Adicionar uma nova linha
  • Substitua o espaço depois sumpor#

3
Outro recurso útil da maravilhosa sintaxe semelhante ao inglês
qwr 23/07/2015

1
Minha única pergunta é como usá-lo uma vez que este não é um programa completo, e (em teoria), você não precisa mesmo em seu código, pois é construído em um
Beta Decay

1
@BetaDecay Isso funciona devido às regras de que funções são permitidas por padrão e que literais de função são permitidas para funções .
Xnor

54

Julia, distância 27 26

Sem comentários!

Given(a)=(Set;of;integer; find; [sum(a),all,integer,in][1])

Isso cria uma função chamada Givenque aceita uma matriz e retorna a soma de seus elementos. Como muitos dos Julia builtins têm nomes relevantes (mas são irrelevantes para o cálculo aqui), podemos apenas listar alguns delimitados com ponto e vírgula. Desde que não sejam a última coisa listada, eles não serão devolvidos. A última parte cria um array contendo a soma e três funções e seleciona o primeiro elemento, a soma.


Nenhum comentário é definitivamente mais dentro do espírito do desafio. Bom trabalho.
Christopher Wirt

@ChristopherWirt Thanks! :)
Alex A.

4
Posso sugerir uma melhoria? Given=(a;set;of=integer; find;th;[sum,of,all,integer, in][])- "Dado", em seguida, ainda funciona da mesma, mas esta tem uma distância de 18
Glen O

22

APL, distância 6 3

Guardou 3 distâncias ...? graças ao Dennis!

+/⍝en a set of integers, find the sum of all integers in it.

Isso soma um dado array ( +/). O restante da frase é adicionado ao final usando um comentário ( ).


1
Você não precisa {e ⍵}. +/já é uma função válida.
Dennis

@ Dennis Awesome, muito obrigado pela sugestão!
Alex A.

10

GolfScript, 5

~{Given a set of integers+ find the sum of all integers in it}*

Este é um programa completo que não usa comentários (mas muitos noops).

Experimente online no Web GolfScript .


9

R, Distância 37 36 34

Sem usar comentários :)

 as.integer ( sum (scan(,integer( ) )))

Observe que há um espaço no começo.


8

Mathematica, distância 17

Given a set of integers find the sum of all integers in it*0+Total@Input[]

Ele não usa comentários ou no-ops, mas declara todas as palavras como variáveis ​​e, em seguida, se livra delas multiplicando por zero.

Ele também tem o benefício de ser a única resposta que realmente leva um conjunto de números inteiros como entrada.

A entrada {1,2,3}fornece a saída 6conforme o esperado.

Infelizmente, a Sumfunção Mathematica não executa a tarefa na pergunta, necessitando, portanto, de um número maior de bytes.


Given a set of integers find the sum of all *0+Total@Input[]distance 14
Leaky Nun

6

Java - 43 41

Eu tentei.

float a_set_of(int[] r){return IntStream.of(r).sum()}//n it.
Given a set of integers, find the sum of all integers in it.

Java: p.


Eu acho que você pode alterar seu argumento na função de a para r para economizar uma distância de edição.
precisa

@ Element118 Boa captura. Também alterei o tipo de retorno enquanto eu fazia o mesmo para alinhar melhor o nome do método.
Anubian Noob

2
você não poderia usar "int a_" como o início do snippet? (um espaço antes do int e 2 depois dele antes do a_
masterX244 15/11

6

RProgN , Distância 2.

Given aset of integers, ;find the sum of all integers in it.

No RProgN, a, set, find e sum são todos comandos. Todo o resto é por padrão ignorado na sintaxe. a empurra o alfabeto para a pilha, o que fará com que a soma falhe. O conjunto nunca possui argumentos suficientes; portanto, sempre falha, com erro. Localizar ou tem o número errado de argumentos ou tenta comparar o alfabeto com a pilha de entrada, o que não funciona.

a e set podem ser "fixos" removendo o espaço entre então, o aset não é uma função, portanto é ignorado. O Find apenas possui um caractere extra inserido no início, fazendo com que ele também não seja reconhecido e ignorado. Somente soma é deixada, o que convenientemente soma o conteúdo da pilha de entrada.

Finalmente, o RProgN pode ganhar alguma coisa!

Experimente Online!


4

CJam, 7 6 5

{:+}e# a set of integers, find the sum of all integers in it.

Essa é uma função anônima que exibe uma matriz da pilha e deixa um número inteiro em troca.

Obrigado a @AboveFire por diminuir a distância em 1.

Experimente online.


4

Matlab, distância 29 28

Given_a_set_of_integers=@(findthe)sum(all(1)*findthe)

Sem usar nenhum comentário :-)

O código está na forma de uma função anônima. Estou assumindo que a entrada é um vetor (matriz 1D) de números.

Exemplo:

>> Given_a_set_of_integers=@(findthe)sum(all(1)*findthe)
Given_a_set_of_integers = 
    @(findthe)sum(all(1)*findthe)

>> Given_a_set_of_integers([1 5 -6 2 4 5])
ans =
    11

3

O , 5

M] + o "Dado um conjunto de números inteiros, encontre a soma de todos os números inteiros nele.

Os números devem estar em hexadecimal e em notação negativa inversa:

  • -6 => 6_
  • -4 => 4_
  • -10 => A_

Experimente online


1
Yay o link funciona!
Maltysen

Nice demo! Mas não é chamá-lo de um exagero de IDE?
Kirbyfan64sos

@ kirbyfan64sos Totalmente, mas quero adicionar mais recursos, como destaque de sintaxe e outros enfeites. Por enquanto, é apenas um intérprete.
fase

Eu acho que um link para a página O esolangs seria mais útil.
mbomb007

@ mbomb007 Mas isso é terrivelmente desatualizado; metade das coisas não funcionam, e isso é apenas um pouco da linguagem documentada.
fase

3

K, 60 5

+/ / Given a set of integers, find the sum of all integers in it.

Suponho que os símbolos NÃO vão bem com a distância Leve, qualquer que seja ...

Hahaha Originalmente, eu não tinha qual era a distância do LeveXXX, então consegui 60. Então, graças a comentários úteis, ela caiu para 5.


Não que você esteja usando símbolos, a distância de Levenshtein é de # adições, exclusões, substituições. para que você tenha 60 exclusões da string original.
Maltysen 23/07/2015

Não são símbolos, é apenas que o seu código é tão curto que o comprimento da frase - o comprimento do seu código = 60. Ouch.

2
Você sabe que pode simplesmente rolar para cima para obter a grafia correta de "Levenshtein", certo? ;)
Alex A.

@AlexA. É mais engraçado assim. :)
kirbyfan64sos

2
Eu não o culpo. Eu tive que verificar a ortografia cerca de 10 vezes antes de copiar e colar.

3

F #, distância 21

let ``Given a set of integers, find the sum of all integers in it`` x = Seq.sum x

É preciso amar a capacidade de usar carrapatos duplos para dar um nome a uma função com espaços.

Uso:

[1;2;3] |> ``Given a set of integers, find the sum of all integers in it`` |> printfn "%i"

6


3

Pip, distância 3

Juntando-se ao clube de respostas triviais no-comments-but-lotes-no-ops golflang ...

Given a set of integers, find the sum of all integers in $+g

Repositório do GitHub para Pip

O código praticamente se documenta; talvez s/in/using/para uma descrição mais precisa. Os números inteiros dados como argumentos da linha de comando são lidos na lista g, que é dobrada aqui na adição e o resultado é impresso automaticamente. Quase todo o resto são apenas variáveis, que não são operacionais.

Fiquei um pouco surpreso no começo que s, ffuncionou sem reclamar, pois fse refere à função principal e não faz sentido tomar o intervalo de um bloco de código. Mas então percebi: o ,operador range, quando recebe um argumento de função, apenas constrói outra função (como muitos operadores no Pip). Então eu acho que s, favalia {Given a set of integers, find the sum of all integers in " ",$+g}. (Que é descartado de qualquer maneira.)

Um ponto final: esse código funciona com a versão atual do Pip, na qual ainda não designei Gnada. Se em alguma versão futura eu criar Gum operador binário ou ternário, seria necessária uma versão à distância-4. Usar em givenvez de Givenfuncionaria bem.


3

Haskell, distância 11

Sem comentários!

const sum"Given a set of integers, find the sum of all integers in it."

Uso:

> const sum"Given a set of integers, find the sum of all integers in it." $ [1..10]
55

3

Cubix , Distância 9

@ivOn a ;et I+ i?tegers, fu;d <he sum of all integers in it.

Experimente online!

Isso envolve o cubo

      @ i v
      O n a
      ; e t
I + i ? t e g e r s , f
u ; d < h e s u m o f a
l l i n t e g e r s i n
      i t .
      . . .
      . . .

O código operacional é

  • I+i Insira um número inteiro, adicione aos TOS e insira um caractere
  • ?Teste o valor do caractere. Redirecione para a esquerda para -1 (final da entrada) ou para a direita para qualquer outra coisa (0 não pode ser inserido)
    • ;O@ pop TOS, soma e saída de saída
    • <;u redirecione, faça o TOS e retorne ao início

2

Pitão - 4

Apenas coloca o código real, sQna frente da string não-oped por um espaço.

sQ "Given a set of integers, find the sum of all integers in it.

Experimente online aqui .


1

PHP4.1, distância 25

Este é bem longo e muito atrasado.

Mas de qualquer maneira, aqui está:

<?=$n_a_set_of_integers_fi=array_sum($f_all_integers_in_i);

Para que isso funcione, você só precisa passar uma série sobre POST / GET / BOLINHO / sessão, usando a chave f_all_integers_in_i.


2
Nenhum comentário corrico yay!
Anubian Noob

1

Pyt , distância 1

Given a set of integers, find the Ʃum of all integers in it.

Todos os caracteres alfanuméricos não são op no Pyt, e a soma de uma lista ocupa apenas um caractere: Ʃ

Experimente online!


0

C ++ 17, distância 44 29

Variadic Genérico Lambda FTW

[](auto...t){return(t+...);}//the sum of all integers in it.

Solução anterior

template<class...t>int s(t...l){return(...+l);}//gers in it.



0

Ly , pontuação 4

&+#Given a set of integers, find the sum of all integers in it.

Observe a nova linha à direita.

Experimente online!

O código é bastante auto-explicativo. &+é o operador de soma de Ly, enquanto #é um comentário. É lamentável que eu tenha que incluir uma nova linha posterior devido ao fato de que encerrar um programa com uma linha de comentário "comentará" a saída implícita de Ly, que na verdade é um bug no intérprete que estou chamando de recurso.


0

dc, 14

?[+z1 <f]d  sf xp#egers, find the sum of all integers in it.

comentários:

?                   # read numbers
 [                  # start macro
  +                 # add up last two things on stack
   z1 <f            # if stack size is more than 1, execute macro at register 'f'
        ]           # end macro
         d          # dupe it
            sf      # saving one copy to register 'f'
               x    # and executing another
                p   # printing result

TIO

ele reclama que a pilha está vazia se você digitar 1 número, mas ainda funciona, e a remoção de 0 salva 2 diff.


0

Excel VBA, Distância: 11

Função de janela imediata VBE anônima que recebe entrada do intervalo [a:a]no objeto ActiveSheet e sai para a janela imediata VBE

?[Sum(a:a)] 'f integers, find the sum of all integers in it.

0

Brain-Flak , 20

(([]){[{}]{}([])}{})ers, find the sum of all integers in it.

Experimente online!

Explicação

Como não há parênteses no texto original, isso se resume a um problema de no Brain-Flak. Mas isso ainda não torna essa resposta trivial, como as respostas no Brain-Flak raramente são.

A primeira intuição de alguém provavelmente seria o seguinte código

({{}})

O que funciona ... a menos que exista um zero na pilha; nesse caso, apenas soma até o zero. Para contornar esse problema, precisamos usar a altura da pilha para verificar se a pilha não está vazia. Isso pode ser configurado assim

([])    #{ Push stack height }
(       #{ Start Push }
{       #{ Loop until zero }
 <{}>   #{ Silently Pop the last height }
 {}     #{ Grab a value from the stack }
 <([])> #{ Silently push the stack height again }
}       #{ End loop }
{}      #{ Remove last stack height }
)       #{ Push the result }

Este funciona, mas há algo errado com isso. Continuamos silenciando os pops e os toques nos loops, mas eles são quase iguais, então deve haver uma maneira de cancelá-los. Se tentarmos

([])({[{}]{}([])}{})

Acabamos por ncada vez. Então, aqui está o truque: já temos uma nlocalização, apenas movemos para empurrar para equilibrar as coisas.

(([]){[{}]{}([])}{})

1
Só queria parabenizá-lo por sua 2^8resposta de ppcg th #
Taylor Scott


0

Gelatina , Distância: 2

Given a set of integers, find the sum of all integers in it.
S

Experimente online!

O Jelly avalia apenas o link principal (a última linha) e comandos explícitos executam outros links (outras linhas).

A última linha tem S , que soma a entrada.

A primeira linha não é executada porque não há referência a ela no link principal.


0

Snap! 4.2.2.9 (+ Ferramentas), sintaxe de scratchblocks3, distância 35

Esta é uma função. integers, find the sum of all inteé a entrada.

for each(et)of(integers, find the sum of all inte
change[s v]by(et
end
report(s

Como isso leva a entrada? A entrada deve ser colada no código? Normalmente, não permitimos esse tipo de entrada, mas exigimos que a entrada seja retirada do STDIN ou, se a sua submissão for uma função, que seja passada como argumento.
Wheat Wizard

Não, é uma função. integers, find the sum of all inteé um argumento, ele simplesmente não se distingue das variáveis ​​regulares na sintaxe scratchblocks3, e é por isso que eu esclareço.
Silas Reel
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.