Conselhos para ruby


13

Como diminuir:

p=gets.to_i
a=gets
b=gets.to_i

Se minha entrada for um número inteiro, seguido por uma sequência, seguido por um número inteiro?


4
Bem-vindo ao PPCG!
Martin Ender

Para as pessoas que dirão que isso está fora de tópico, se você quiser argumentar, leia a meta e depois me envie uma mensagem.
Stan Strum 24/10

Respostas:


7

Use ARGV ($ *) e atribuição em massa

(aviso: não conheço Ruby, mas isso funciona no TIO )

p,a,b=$*
p=p.to_i
b=b.to_i

28 26 bytes em vez de 30 (obrigado ao Snack por apontar o truque $ *)


O ARGV também pode ser acessado como $ *, que economiza dois bytes
Snack

4
@Snack Hehe, golfe uma resposta dicas :)
AdmBorkBork

6

Use um lambda

As respostas normalmente são permitidas como funções lambda, com sua entrada / saída sendo os parâmetros / valor de retorno do lambda, para que você possa fazer isso:

->p,a,b{...}

Se você atribuiu isso a uma variável f, ela seria chamada como

f[p,a,b]

Geralmente, é bom assumir os tipos de entradas também, mas, para estar seguro, você pode mencioná-lo na sua resposta.

Meta post relevante sobre métodos aceitáveis ​​de entrada / saída


6

Se você precisar de um programa completo com stdin / stdout io por algum motivo, o mais curto possível é usar o -nsinalizador para encurtar uma chamada gets.to_ipara eval$_:

p=eval$_
a=gets
b=gets.to_i

O -nsinalizador envolve o código while gets ... end, para que o programa faça um loop se mais entrada for fornecida do que o programa consome.

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.