Imprima vários números desinteressantes!


40

Um número desinteressante (que eu totalmente não compensava apenas para esse desafio) é criado assim:

  1. Tome um número inteiro positivo N
  2. Crie um novo número O adicionando os dígitos de N no final de N
  3. O número final desinteressante é O * N

Por exemplo, para N = 12:

  1. O = 1212
  2. O * N = 1212 * 12
  3. O número final é 14544

Entrada

Um número inteiro positivo N (N> 0) ou o equivalente do seu idioma. Você não precisa capturar informações incorretas.

Saída

O número desinteressante correspondente.

Casos de teste

  1 -> 11
  2 -> 44
  3 -> 99
 10 -> 10100
174 -> 30306276

Pontuação

O menor código em bytes vence.


9
Deve haver uma entrada OEIS relevante ...
MKII

11
@Seims Era uma piada, baseada no nome "sem interesse"
MKII

7
@MKII meu mau, eu não falo piada
Seims

11
Tomar o número como argumento de cadeia está dobrando demais as regras?
Dom Hastings

11
Vá em frente, dobre as regras! : P
Seims 07/07

Respostas:


38

05AB1E , 3 bytes

Ы*

Explicado

Ð    # triplicate input
 «   # conactenate
  *  # multiply

Experimente online


2
Ahh que legal! Me mataram por segundos: p.
11306 Adnan

2
@Adnan Hehe. Vingança por aquele tempo que você fez comigo: P
Emigna 07/07

11
3 operações, 3 bytes, eu não acho que você poderia torná-lo mais curto do que isso.
Lasse Meyer

2
@busukxuan Yep. Concatenate converte automaticamente o número stre *interpreta a sequência como um número. Muito útil :)
Emigna 07/07

2
@busukxuan Sim, uma combinação de Pyth e 05AB1E poderia ter feito em 2 bytes :)
Emigna

29

JavaScript (ES6), 10 bytes

_=>(_+_)*_

Precisa ser chamado com o argumento como a String, não a Number.

Uso:

(_=>(_+_)*_)('3')
99

-3 bytes graças à sugestão de @Quill .


11
Se você pode passar o parâmetro como uma string, pode cortar dois bytes desta solução:_=>(_+_)*+_
Quill

3
Como, exatamente, isso funciona? Se bem entendi, você está usando _como caractere arbitrário para uma variável? (PS - (_+_)totalmente parece uma bunda)
charredgrass

@charredgrass $também funcionaria
cat

11
tipo elenco abuso onze
Downgoat 07/07

3
Fora de interesse, o melhor que pude fazer puramente matematicamente foi de 30 bytes no ES7 n=>(1+10**-~Math.log10(n))*n*n(infelizmente, -~têm precedência maior que **) ou 31 no ES6 n=>-~`1e${-~Math.log10(n)}`*n*n. Até a recursão levou 32 bytes:f=(n,m=1)=>n<m?-~m*n*n:f(n,m*10)
Neil

24

Java 8, 29 26 25 21 bytes

Deus abençoe lambda

c->new Long(c+""+c)*c

c-> Código longo (c + "" + c) * c;


28
Você precisa amar Java; mesmo com lambdas do Java 8 e uma das respostas Java mais curtas já encontradas no codegolf, ainda é superada por todas as outras respostas atuais. xD
Kevin Cruijssen 07/07

3
java é bae, lambda é bae
Seims

3
@KevinCruijssen eu ainda tenho uma esperança, um java dia vai ganhar codegolf concurso
user902383

11
Após a sua edição, você superou o @MartinEnder com sua resposta de Retina por 1 byte! o.Ô
Kevin Cruijssen 07/07

11
@KevinCruijssen mas ainda não o suficiente para vencer ou pelo menos python batida :(
user902383

20

vim, 11

C<C-r>=<C-r>"<C-r>"*<C-r>"<cr>

crcrcrcrcr ...

C       change (delete and enter insert mode) until the end of the line
<C-r>=  insert an expression via the special "expression register"
<C-r>"  insert the contents of the default register (what we just C'd)
<C-r>"  ... again
*       multiplied by
<C-r>"  the input (again)
<cr>    insert the result of this expression

11 o que? bytes?
Insane

3
@Insane Bytes se você o chamar na linha de comando, pressione as teclas se você o fizer diretamente no vim. Normalmente, omito a unidade das respostas do vim porque pode ser uma delas.
Maçaneta


É <C-r>um retorno de carro?
Captain Man

@CaptainMan Não, <C-r>é controle mais r. O retorno de carro é <cr>.
Maçaneta

15

Pitão, 5 4 bytes

*s+`

Explicação:

    Q    input
   `     representation, basically str(Q)
  +  Q   add Q to its own string form
 s       parse int
*     Q  multiply by input
         print

Teste aqui .


15

Emacs, 17 bytes

(*SPACEC-SPACEC-EM-YSPACEC-YC-Y)C-J

Explicação

  • (*SPACEadiciona (*no ponto (antes do número);
  • C-SPACEC-EM-Y Selecione e copie o número;
  • SPACE adiciona um caractere de espaço no ponto (após o número);
  • C-YC-Y cola duas vezes o número no ponto;
  • )adiciona )no final;
  • C-J interpreta a linha como uma expressão LISP e imprime seu resultado.

Exemplo

Cursor representado por um pipe ( |)

  • |174
  • (*SPACE (* |174
  • C-SPACEC-EM-Y (* 174|
  • SPACE (* 174 |
  • C-YC-Y (* 174 174174|
  • ) (* 174 174174)|
  • C-J

Resultado

(* 174 174174)
30306276|

3
Olá, e bem-vindo ao PPCG! Bom primeiro post!
Rɪᴋᴇʀ


12

Python 2.7, 21 bytes:

lambda f:int(`f`*2)*f

Bem, essa deve ser a resposta mais curta em Python que eu já escrevi no menor tempo possível. É uma função lambda anônima que pode ser executada nomeando-a como quiser e, em seguida, chamando-a como uma função normal envolvida print(). Por exemplo, se sua entrada é 12e a função foi nomeada H, isso seria chamado como print(H(12)).

Experimente Online! (Ideona)

Observe que isso só funciona para valores acima e iguais a 9223372036854775807qualquer valor mais alto e repr()coloca a Lno final do número inteiro. Portanto, para valores maiores que 9223372036854775807, essa versão de 24 bytes seria a que funciona:

lambda f:int(str(f)*2)*f

Experimente isto online! (Ideona)


Eu ainda acho operações Phytons corda mágica ...
Seims

@Seims de que maneira?
Busukxuan

Multiplicação e adição de strings. Não vi isso com frequência.
Seims

@ Parece que você lida principalmente com linguagens estáticas, então?
Busukxuan

@busukxuan Chame-me um noob se você quiser: ^)
Seims

11

Geléia, 4 bytes

;DḌ×

Experimente online

Explicação

;DḌ×    Main link. argument : N

 D      Decimal; Yield the digits of N
;       Concatenate N and its digits
  Ḍ     Convert to integer; We get O
   ×    Multiply O and N

11
É um rosto realmente feliz, com um cavanhaque! ;DDx
gato

Em qual codificação leva apenas 1 byte? Geralmente usamos UTF-8, no qual são necessários 3 (e o × leva 2, mas são 1 byte, por exemplo, ISO8859-1).
O11c 09/07/19

@ o11c O Jelly usa sua própria página de códigos personalizada, onde esses caracteres têm um byte cada.
a spaghetto

10

C, 70 68 54 53 52 44

f(n){return(pow(10,(int)log10(n)+1)*n+n)*n;}

Versão anterior (48 bytes, sem funções matemáticas), salva 16 bytes graças a @LeakyNun, 1 byte graças a @FryAmTheEggman, 4 bytes graças a @TobySpeight:

f(n,d,i){for(i=d=n;d;d/=10)i*=10;return(i+n)*n;}

Ligue f()com um argumento, o número, e ele retornará o número desinteressante correspondente.

Programa de teste

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    while (*++argv) {
        int n = atoi(*argv);
        printf("%d -> %d\n", n, f(n));
    }
    return 0;
}

Resultado dos testes:

$ ./84712 1 2 3 4 10 174
1 -> 11
2 -> 44
3 -> 99
4 -> 176
10 -> 10100
174 -> 30306276

Experimente online!


f(n){int b=1;while(a)b*=10,a/=10;return(n+n*b)*n;}
Freira vazando 07/07

Isso não deve funcionar corretamente sem incluir math.h, mas você se sai bem no GCC, onde log10()e pow()está embutido, e o compilador simplesmente alerta sobre "declaração implícita incompatível da função incorporada" em vez de assumir (como deveria) que ambos retornam int.
21816 Toby Speight

@Leaky - você não colocar qualquer coisa em a...
Toby Speight

11
É bom ver outra resposta que permanece inteiramente dentro do mundo aritmético (sem fazer concatenação de cordas). :-)
Toby Speight 07/07

11
@Toby - A concatenação de strings em C é incompatível com o golfe. ;-)
owacoder 07/07

9

Dyalog APL , 7 bytes

⊢×#⍎⍕,⍕

representação de string

⍕, preceder representação de cadeia

#⍎ transformar em número (no espaço para nome raiz)

⊢× multiplicar pelo número original


11
Aqueles lutadores de TIE destruídos são engraçados!
Luis Mendo


11
O garfo desperta :-D
Luis Mendo

Tenho certeza de que não são bytes em nenhuma codificação, pois não são parecidos com letras ou são muito comuns.
O11c 09/07/19

@ o11c Você verificou o link de preferência para a palavra "bytes", viz. meta.codegolf.stackexchange.com/a/9429/43319 .
Adám 10/07/16

9

J, 7 bytes

*,~&.":

Explicação

*,~&.":  Input: n
     ":  Format n as a string
 ,~&.    Reflect and join the string to make "nn"
         and parse the string to get a number
*        Multiply that number by n

+1. Eu não conseguia nem pensar que Underestá funcionando corretamente com concatenação de strings. Que grande descoberta para mim! Obrigado.
21416 Dan Oak

Infelizmente, acho que isso deve estar entre parênteses, pois é um gancho que não funciona se digitado diretamente * ,~ &.": ne também não pode ser usado na formação de outros verbos.
21616 Dan Oak

11
@dahnoak Aqui no PPCG, precisamos apenas especificar o que é necessário para uma função e, portanto, tudo o que é necessário para criar uma função em J. Então, para invocá-la usando alguma entrada como argumento, ela estará em parênteses ou armazenados em uma variável.
milhas

Ah, entendi, ty.
Dan Oak

9

Retina , 27 20 bytes

^
$_$*: $_
:
$_$*:
:

Fica um pouco lento para entradas grandes, porque antes da última etapa o resultado é representado em unário.

Experimente online! (A primeira linha ativa um conjunto de testes separado por avanço de linha.)

Explicação

Usarei 2como exemplo de entrada (porque as representações unárias ficam um pouco difíceis para entradas maiores).

Etapa 1: Substituição

^
$_$*: $_

Combinando o início da string com ^, simplesmente acrescentamos algumas coisas. $_refere-se à própria string de entrada e $*:significa que inserimos muitos dois pontos. Então temos:

:: 22

Etapa 2: Substituição

:
$_$*:

Agora, combinamos todas as :vezes substituí-lo por $_$*:. Obviamente, desta vez $_não é avaliado para um número inteiro (mas para o :: 22nosso exemplo), mas $*apenas procura o primeiro decimal na string, portanto isso avalia a entrada concatenada para si mesma ( Ona especificação de desafio). Terminaremos com N*Odois pontos, seguidos por O:

:::::::::::::::::::::::::::::::::::::::::::: 22

Etapa 3: partida

:

Tudo o que resta é contar os :s para converter de unário de volta para decimal, que é exatamente o que esse estágio faz.


Ooh, tão perto de ter tanto tempo quanto Java. Superado por apenas 2 bytes. 1
R. Kap 07/07

@ R.Kap Na verdade, o Java 8 superou o problema depois de remover 3 bytes! o.Ô
Kevin Cruijssen 07/07

4
Desculpe, Java ....
Martin Ender

9

CJam , 8 bytes

ri_`_+i*

Experimente online!

r     e# Read input
i     e# Convert to integer
_     e# Duplicate
`     e# Convert to string
_     e# Duplicate
+     e# Concatenate
i     e# Convert to integer
*     e# Multiply. Implicitly display

2
Eu estava prestes a sugerir não converter imediatamente para string, mas a abordagem ingênua (ou seja, nunca havia usado o CJam antes) r__+i\i*é o mesmo comprimento.
Nic Hartley

@QPaysTaxes Ah nice. Notei a mesma coisa que você: por que primeiro convertê-lo em int e depois voltar a string novamente. Também nunca usei o CJam e realmente não parecia suficientemente próximo de todos os operadores possíveis , por isso não consegui encontrar uma solução à primeira vista. Obrigado por compartilhar sua abordagem sem convertê-la novamente em string, mesmo que tenha o mesmo comprimento de bytes.
Kevin Cruijssen 07/07

Se houvesse uma maneira de aplicar uma operação à pilha inteira em dois bytes, seria um byte mais curto (algo como r__+si*, onde sé "aplicar esta operação sobre a pilha"), mas não vejo nada assim
Nic Hartley

8

Geléia, 8 6 bytes

ŒṘẋ2v×

Experimente online!

Explicação

ŒṘẋ2v× - Main link. Left argument: the number to convert

     × - Multiply
    v  - an evaluation of the left argument
ŒṘ     - converted to string
  ẋ    - multiplied by
   2   - two and the left argument

11
Acho que você não precisa de nenhum desses ³.
Martin Ender


7

Braquilog , 7 bytes

:?c:?*.

Explicação

:?c      Concatenate Input to itself
   :?*.  Output is that concatenation times Input


7

Matlab / Octave, 20 bytes

@(x)eval([x x 42 x])

Esta é uma função anônima que recebe a entrada como uma string.

Exemplo de uso:

>> f = @(x)eval([x x 42 x])
f = 
    @(x)eval([x,x,42,x])
>> f('12')
ans =
       14544

Ou experimente online com ideone .

Explicação

O código cria uma sequência concatenando a sequência de entrada duas vezes, depois o caractere *(que possui o código ASCII 42) e a sequência novamente. A sequência concatenada é então avaliada.


O que 42significa isso ?
Leaky Nun

4
@LeakyNun É a Resposta à Questão Fundamental da Vida, o Universo e Tudo" . Além disso, ele passa a ser o código ASCII para*
Luis Mendo

Ah Eu estava procurando por algo como a 42ª função.
Leaky Nun

O código simplesmente cria uma string concatenando a string de entrada duas vezes e, em seguida *, a string novamente. A sequência concatenada é então avaliada. Vou editar isso para a resposta
Luis Mendo

6

MATL , 6 bytes

tVthU*

Experimente online!

tV     % Input number implicitly. Duplicate and convert to string
th     % Duplicate and concatenate the two equal strings
U      % Convert to number
*      % Multiply

6

zsh, 13 bytes

<<<$[$1$1*$1]

Recebe a entrada como argumento da linha de comando e gera para STDOUT.

Isso funciona apenas no zsh, mas aqui estão 15 bytes no Bash usando em echovez de <<<:

echo $[$1$1*$1]

6

Perl, 11 bytes

$_*=$_ x2

+ as sinalizadores pe l.

(corra com perl -ple '$_*=$_ x2')

-2 bytes graças ao pipe.


Salve dois bytes:$_*=$_ x2
pipe

Eu não acho que você precisa-l
Brad Gilbert b2gills

@ BradGilbertb2gills Sim eu precisar dele, porque sem ele, $_ x2produzirá ...\n...\nque quando convertido como um número de extremidades perl no primeiro\n
Dada

Eu estava testando-o com o Perl 5 e 6 e não percebi que esqueci de remover o 6.
23820 Brad Bradbert b2gills

6

Excel VBA, 35 bytes

Sub chamado com número, msgbox retorna resposta

Sub B(a)
MsgBox (a & a) * a
End Sub

Excel VBA alternativo, 42 bytes

Número indicado na fórmula, retorna resposta.

Function B(a)
B = (a & a) * a
End Function

Pense em um MsgBox e um Sub. Ela vai lhe poupar 13 Byte, se eu contar corretamente
GER_Moki

Eu precisaria de alguma forma de caixa de entrada para obter o valor, não?
Tjb1 07/07

Tente Sub-B (a) MsgBox (a & a) * a End Sub
GER_Moki 07/07

Isso requer outro sub para passar o valor, não tenho certeza se isso é permitido no golfe.
Julio

A função deve ser chamado também;)
GER_Moki

6

Lua, 20 bytes

Recebe um argumento da linha de comando e sai via STDOUT

a=...print((a..a)*a)

E ungolfed como @LeakyNun perguntou no comentário :)

a=...       -- alias for the first argument
print(
     (a..a) -- concatenate a with itself, equivalent to a:rep(2)
     *a)    -- multiply the resulting number by a

Isso pode ser uma boa demonstração do tipo de coerção ... se você adicionar a explicação.
Leaky Nun

5

Pyke, 5 4 bytes

`+b*

Experimente aqui!

`    -    str(input)
 +   -   ^+input  (convert to string implicitly)
  b  -  int(^)
   * - ^*input

Também 5 bytes com entradas de string

+bRb*
+]mbB

5

PHP, 25 24 bytes

Tags de abertura curta são úteis para surpreendentemente poucos desafios no golfe; felizmente, esse é um deles. Infelizmente, a precedência do operador é o oposto da ordem em que você precisa executá-las, de modo que muitos colchetes são necessários.

<?=($a=$argv[1])*"$a$a";

edit: percebi que, como estou usando colchetes de qualquer maneira, posso efetivamente pular o operador de concatenação alterando a ordem por escrito das operações.


5

dc, 11 10 bytes

ddZAr^1+**

Eu sabia que, eventualmente, encontraria um uso para o Zcomando!

A operação é bastante simples - conte os dígitos, pegue 10 aumentados para esse poder e adicione um. Isso fornece um multiplicador que concatena o número consigo mesmo. Então apenas multiplique.

AE / S usa a pilha, como de costume para dc.

Programa completo

Isto é o que eu usei para os testes:

#!/usr/bin/dc
?
ddZAr^1+**
p

Os dois comandos extras nos fornecem E / S de pipeline.

Testes

$ for i in 1 2 3 10 174; do printf '%d -> ' $i; ./84712.dc <<<$i; done
1 -> 11
2 -> 44
3 -> 99
10 -> 10100
174 -> 30306276

Agradecemos a Sir Biden XVII (1 byte).


Você pode substituir Apor 10salvar um byte. Bem feito!
21716 Joe

4

Caxumba, 11 bytes

R I W I_I*I

Este é um daqueles raros desafios de golfe, onde as idiossincrasias de Mumps podem ser muito úteis. Primeiro, todas as variáveis ​​são cadeias de caracteres e todas as equações matemáticas são estritamente avaliadas da esquerda para a direita (como em: não no PEMDAS), então 1 + 2 * 4 = 12 no Mumps em vez de = 9 da maneira que o PEMDAS faria. Então, (mal) não destruído:

R I ;     Read from stdin to variable I
W I_I*I ; Write out I concatenated with I, then multiplied by I.

Atenção: como o sabor do Mumps que estou usando (InterSystems Ensemble) não reflete o retorno de carro para stdin, o número de entrada e saída aparecerá concatenado. Para corrigir isso / aumentar a legibilidade, você precisará adicionar dois bytes e adicionar um CR / LF manual, assim:

R I W !,I_I*I

No entanto, como não vi esse requisito nas regras do desafio, tenho certeza de que sou bom com o código mais curto. Se estiver enganado, sinta-se à vontade para me LART e modificarei minha resposta. :-)


4

PowerShell, 25 , 18 bytes

Obrigado TessellatingHeckler por me lembrar o quanto o PS adora o pipeline.

Novos 18 bytes:

process{$_*"$_$_"}

25 bytes antigos:

param($a);[int]"$a$a"*$a

Explicação:

# new
process{$_*"$_$_"}
process{         } # runs code block once for each passed item
        $_*        # multiple the first parameter
           "$_$_"  # concatenate as a string for ease
                   # in this case, the order does the typecasting for us
# old
param($a);[int]"$a$a"*$a
param($a)                 # assigns the first passed parameter to variable $a
         ;                # line terminator
          [int]           # type cast string "$a$a" to int32
               "$a$a"     # convert $a$a to string for easy concatenation
                     *$a  # multiply by $a

Teste (salve como boring.ps1):

# new
12 | .\boring.ps1
14544
174 | .\boring.ps1
30306276

# old
.\boring.ps1 12
14544
.\boring.ps1 174
30306276

Definitivamente não é a resposta vencedora, mas divertida independentemente!


Se você colocar as variáveis ​​ao contrário, int * string implicitamente converterá a string em int e você poderá salvar 5 bytes de conversão. process{$_*"$_$_"}é de 18 bytes, e recebe a entrada a partir de "entrada padrão" (ou seja, o oleoduto), por exemplo,174|script.ps1
TessellatingHeckler

Hmmm ... ponto interessante. Eu também posso mudá-los usando o meu mesma estrutura e alcançar o mesmo resultado:param($a);$a*"$a$a"
ThePoShWolf

Erro, eu retiro isso, o meu é um byte a mais!
ThePoShWolf

@TessellatingHeckler Cuidado com essa resposta, pois o ambiente REPL do PowerShell não se qualifica para o programa ou função padrão . Algo como param($n)$n*"$n$n"(o que Darth tinha, sem o ;) é do mesmo tamanho e não é um REPL.
AdmBorkBork

@ TimmyD, por que um test.ps1arquivo que lê do pipeline não conta? Um script do shell bash lendo stdin também não conta?
TessellatingHeckler

4

Lote, 27 20 18 bytes

@cmd/cset/a%1%1*%1

Editar: salvou 7 bytes graças a @TessellatingHeckler. Economizou mais 2 bytes graças a @ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ.


set /ano prompt gera o resultado da atribuição. -> @cmd/c set/a n=%1%1*%1para 22 bytes.
TessellatingHeckler 07/07

@TessellatingHeckler Por que se preocupar em atribuir se você está produzindo?
711 Neil

@TessellatingHeckler Huh, eu já fez este truque me há seis semanas, e eu esqueci que já ..
Neil

@cmd/cset/a%1%1*%1para 18.
Erik the Outgolfer

11
@ Neil Não, mas eu testei (no Windows 10!) A cmd/cpeça é necessária porque a ferramenta de execução de arquivos em lote não é cmdela mesma.
Erik the Outgolfer
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.