Stampa un mucchio di numeri poco interessanti!


40

Un numero poco interessante (che non ho completamente compensato solo per questa sfida) è creato in questo modo:

  1. Prendi un numero intero positivo N
  2. Crea un nuovo numero O aggiungendo le cifre di N alla fine di N
  3. Il numero finale non interessante è O * N

Ad esempio per N = 12:

  1. O = 1212
  2. O * N = 1212 * 12
  3. Il numero finale è 14544

Ingresso

Un numero intero positivo N (N> 0) o equivalente della tua lingua. Non è necessario acquisire input errati.

Produzione

Il corrispondente numero non interessante.

Casi test

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

punteggio

Vince il codice più breve in byte.


9
Ci deve essere una voce OEIS pertinente ...
MKII

1
@Seims Era uno scherzo, basato sul nome "non interessante"
MKII

7
@MKII mio male, non parlo scherzo
Sembra il

1
Prendere il numero come argomento di stringa sta piegando un po 'troppo le regole?
Dom Hastings,

1
Vai avanti, piega le regole! : P
Sembra il

Risposte:


38

05AB1E , 3 byte

Ы*

spiegato

Ð    # triplicate input
 «   # conactenate
  *  # multiply

Provalo online


2
Ahh, carino! Mi ha ninja per pochi secondi: p.
Adnan,

2
@Adnan Hehe. Vendetta per quel tempo che mi hai fatto: P
Emigna,

1
3 operazioni, 3 byte, non credo che potresti renderlo più breve di così.
Lasse Meyer,

2
@busukxuan Yep. Concatena converte automaticamente il numero in stre *interpreta la stringa come un numero. Molto utile :)
Emigna il

2
@busukxuan Sì, una combinazione di Pyth e 05AB1E avrebbe potuto farlo in 2 byte :)
Emigna,

29

JavaScript (ES6), 10 byte

_=>(_+_)*_

Deve essere chiamato con l'argomento come a String, non a Number.

Uso:

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

-3 byte grazie al suggerimento di @Quill .


1
Se riesci a passare il parametro come stringa, puoi eliminare due byte da questa soluzione:_=>(_+_)*+_
Quill

3
Come funziona esattamente? Se capisco correttamente, stai usando _un carattere arbitrario per una variabile? (PS: (_+_)sembra proprio un calcio)
charredgrass

Anche @charredgrass $avrebbe funzionato
cat

11
tipo casting casting undici
Downgoat

3
Per interesse, il meglio che potevo fare puramente matematicamente era di 30 byte in ES7 n=>(1+10**-~Math.log10(n))*n*n(purtroppo -~hanno una precedenza più alta di **) o 31 in ES6 n=>-~`1e${-~Math.log10(n)}`*n*n. Anche la ricorsione mi ha portato a 32 byte:f=(n,m=1)=>n<m?-~m*n*n:f(n,m*10)
Neil

24

Java 8, 29 26 25 21 byte

Dio benedica lambda

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

c-> Long.decode (c + "" + c) * c;


28
Devi amare Java; anche con lambda di Java 8 e una delle risposte Java più brevi di sempre qui su codegolf, è ancora superato da tutte le altre risposte attuali. xD
Kevin Cruijssen,

3
java is bae, lambda is bae
Sembra il

3
@KevinCruijssen ho ancora una speranza, un giorno java vincerà il concorso
codegolf

1
Dopo la modifica hai superato @MartinEnder con la sua risposta Retina di 1 byte! o.Ô
Kevin Cruijssen,

1
@KevinCruijssen ma non è ancora abbastanza per vincere o almeno battere Python :(
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 cosa? byte?
Insane

3
@Insane Bytes se lo chiami dalla riga di comando, premi i tasti se lo fai direttamente da vim. Di solito ometto l'unità dalle mie risposte vim perché può essere una delle due.
Maniglia della porta


Il <C-r>trasporto è di ritorno?
Captain Man,

@CaptainMan No, <C-r>è control plus r. Il ritorno del trasporto è <cr>.
Maniglia della porta

15

Pyth, 5 4 byte

*s+`

Spiegazione:

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

Provalo qui .


15

Emacs, 17 byte

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

Spiegazione

  • (*SPACEaggiunge (*al punto (prima del numero);
  • C-SPACEC-EM-Y Seleziona e copia il numero;
  • SPACE aggiunge un carattere spazio nel punto (dopo il numero);
  • C-YC-Y incolla due volte il numero nel punto;
  • )aggiunge )alla fine;
  • C-J interpreta la linea come espressione LISP e ne stampa il risultato.

Esempio

Cursore rappresentato da una pipe ( |)

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

Risultato

(* 174 174174)
30306276|

3
Ciao e benvenuto in PPCG! Bel primo post!
Rɪᴋᴇʀ


12

Python 2.7, 21 byte:

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

Bene, questa deve essere la risposta Python più breve che abbia mai scritto nel minor tempo possibile. È una funzione lambda anonima che può essere eseguita nominandola come preferisci e chiamandola come una normale funzione racchiusa print(). Ad esempio, se il tuo input è 12, e la funzione è stata nominata H, questa si chiamerebbe like print(H(12)).

Provalo online! (Ideone)

Si noti che questo funziona solo per valori superiori e uguali a 9223372036854775807da qualsiasi valore più alto e repr()inserisce La alla fine dell'intero. Pertanto, per valori maggiori di 9223372036854775807, questa versione da 24 byte sarebbe quella che funziona:

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

Prova questo online! (Ideone)


Trovo ancora magiche le operazioni di Phytons String ...
Sembra il

@ Sembra in che modo?
busukxuan,

Moltiplicazione e aggiunta di stringhe. Non l'ho visto spesso.
Sembra il

@Seims Immagino che ti occupi principalmente di lingue statiche allora?
Busukxuan,

@busukxuan Chiamami un noob se vuoi: ^)
Sembra

11

Gelatina, 4 byte

;DḌ×

Provalo online

Spiegazione

;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

1
È una faccia ammiccante davvero felice con un pizzetto! ;DDx
gatto

In quale codifica richiede solo 1 byte? Di solito usiamo UTF-8, in cui sono necessari 3 (e × richiede 2, ma è 1 byte ad es. ISO8859-1).
o11c,

@ o11c Jelly utilizza una propria codepage personalizzata in cui questi caratteri hanno un byte ciascuno.
uno spaghetto il

10

C, 70 68 54 53 52 44

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

Versione precedente (48 byte, nessuna funzione matematica), salvata 16 byte grazie a @LeakyNun, 1 byte grazie a @FryAmTheEggman, 4 byte grazie a @TobySpeight:

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

Chiama f()con un argomento, il numero, e restituisce il corrispondente numero non interessante.

Programma di test

#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;
}

Risultati del test:

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

Provalo online!


f(n){int b=1;while(a)b*=10,a/=10;return(n+n*b)*n;}
Leaky Nun,

Questo non dovrebbe funzionare correttamente senza includerlo math.h, ma te ne vai in GCC, dove log10()e pow()sono integrati, e il compilatore avverte semplicemente "dichiarazione implicita incompatibile della funzione incorporata" piuttosto che supporre (come dovrebbe) che entrambi ritornano int.
Toby Speight,

@Leaky - non hai messo nulla in a...
Toby Speight

1
È bello vedere un'altra risposta che rimane interamente all'interno del mondo aritmetico (non facendo concatenazione di stringhe). :-)
Toby Speight

1
@Toby - La concatenazione di stringhe in C non è compatibile con il golf. ;-)
owacoder il

9

Dyalog APL , 7 byte

⊢×#⍎⍕,⍕

rappresentazione di stringhe

⍕, anteporre la rappresentazione di stringa

#⍎ make in number (nello spazio dei nomi di root)

⊢× moltiplicare per il numero originale


1
Quei combattenti TIE distrutti sono divertenti!
Luis Mendo,


1
Il fork si risveglia MrGreen
Luis Mendo il

Sono abbastanza sicuro che questi non siano byte in nessuna codifica, poiché non sono letterali o molto comuni.
o11c,

@ o11c Hai controllato il link preventivo per la parola "byte", vale a dire. meta.codegolf.stackexchange.com/a/9429/43319 .
Adám,

9

J, 7 byte

*,~&.":

Spiegazione

*,~&.":  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. Non riuscivo nemmeno a pensare che Underfunzioni correttamente con la concatenazione di stringhe. Che grande scoperta per me! Grazie.
Dan Oak,

Purtroppo, penso che questo dovrebbe essere tra parentesi, dal momento che è un gancio che non funziona se digitato direttamente * ,~ &.": n, e non può essere utilizzato nemmeno in formazione di altri verbi.
Dan Oak,

1
@dahnoak Qui a PPCG, dobbiamo solo specificare ciò che è necessario per una funzione, e quindi quanto sopra è tutto ciò che è necessario per creare una funzione in J. Quindi, per invocarlo usando un input come argomento, sarà parentesi o memorizzate in una variabile.
miglia,

Ah, ho capito, ty.
Dan Oak,

9

Retina , 27 20 byte

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

Diventa un po 'lento per input di grandi dimensioni, perché prima dell'ultimo stadio il risultato è rappresentato in modo unario.

Provalo online! (La prima riga abilita una suite di test separata da avanzamento riga.)

Spiegazione

Userò 2come input di esempio (perché le rappresentazioni unarie diventano un po 'ingombranti per input più grandi).

Fase 1: sostituzione

^
$_$*: $_

Abbinando l'inizio della stringa con ^semplicemente anteponiamo alcune cose. $_si riferisce alla stringa di input stessa e $*:significa che inseriamo molti punti. Quindi otteniamo:

:: 22

Fase 2: sostituzione

:
$_$*:

Ora abbiniamo ogni :e di nuovo lo sostituiamo con $_$*:. Ovviamente, questa volta $_non viene valutato un numero intero (ma :: 22nel nostro esempio), ma $*cerca solo il primo decimale nella stringa, quindi questo valuta l'input concatenato a se stesso ( Onella specifica della sfida). Finiremo con N*Odue punti, seguiti da O:

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

Fase 3: partita

:

Tutto ciò che rimane è contare le :s per convertire da unario a decimale, che è esattamente ciò che fa questo stadio.


Ooh, così vicino ad essere lungo quanto Java. Superato di soli 2 byte. +1
R. Kap

@ R.Kap In realtà, Java 8 è stato superato dopo aver rimosso 3 byte! o.Ô
Kevin Cruijssen,

4
Siamo spiacenti, Java ....
Martin Ender,

9

CJam , 8 byte

ri_`_+i*

Provalo 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
Stavo per suggerire di non convertirmi in in e poi immediatamente di nuovo in stringa, ma l'approccio ingenuo (cioè non aver mai usato CJam prima) è r__+i\i*, che ha la stessa lunghezza.
Finanzia la causa di Monica il

@QPaysTaxes Ah, bello. Ho notato la tua stessa cosa: perché prima convertirlo in int e poi di nuovo in stringa. Inoltre, non ho mai usato CJam e non sono sembrato abbastanza vicino a tutti i possibili operatori , quindi non sono riuscito a trovare una soluzione a prima vista. Grazie per aver condiviso il tuo approccio senza riconvertirlo in stringa, anche se ha la stessa lunghezza di byte.
Kevin Cruijssen,

Se ci fosse un modo per applicare un'operazione all'intero stack in due byte, sarebbe un byte più breve (qualcosa del tipo r__+si*, dove sè "applica questa operazione sullo stack"), ma non vedo nulla del genere
Fondo La causa di Monica il

8

Gelatina, 8 6 byte

ŒṘẋ2v×

Provalo online!

Spiegazione

ŒṘẋ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

1
Non penso che tu abbia bisogno di nessuno dei due ³.
Martin Ender,

8

Awk, 13 byte

$0=($0$0)*$0

Imposta la linea su 2 di se stessa moltiplicata per se stessa


7

Brachylog , 7 byte

:?c:?*.

Spiegazione

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


7

Matlab / Ottava, 20 byte

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

Questa è una funzione anonima che accetta l'input come stringa.

Esempio di utilizzo:

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

Oppure provalo online con ideone .

Spiegazione

Il codice crea una stringa concatenando due volte la stringa di input, quindi il carattere *(che ha il codice ASCII 42), quindi di nuovo la stringa. La stringa concatenata viene quindi valutata.


Cosa 42significa?
Leaky Nun,

4
@LeakyNun È la risposta all'ultima domanda della vita, dell'universo e di tutto " . Inoltre, sembra essere il codice ASCII per*
Luis Mendo,

Ah. Stavo cercando qualcosa come la 42a funzione.
Leaky Nun,

Il codice crea semplicemente una stringa concatenando due volte la stringa di input *, quindi la stringa di nuovo. La stringa concatenata viene quindi valutata. Lo modificherò nella risposta
Luis Mendo il

6

MATL , 6 byte

tVthU*

Provalo 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 byte

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

Accetta l'input come argomento della riga di comando, genera STDOUT.

This only works in zsh, but here's 15 bytes in Bash using echo instead of <<<:

echo $[$1$1*$1]

6

Perl, 11 bytes

$_*=$_ x2

+ the p and l flags.

(run with perl -ple '$_*=$_ x2')

-2 bytes thanks to pipe.


Save two bytes: $_*=$_ x2
pipe

I don't think you need -l
Brad Gilbert b2gills

@BradGilbertb2gills Yes I need it because without it, $_ x2 will produce ...\n...\n which when converted as a number by perl ends at the first \n
Dada

I was testing it with both Perl 5 and 6, and didn't notice that I forgot to remove the 6.
Brad Gilbert b2gills

6

Excel VBA, 35 Bytes

Sub called with number, msgbox returns answer

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

Alternative Excel VBA, 42 Bytes

Number given in formula, returns answer.

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

Think about a MsgBox and a Sub. It will save you 13 Byte, if I count correctly
GER_Moki

I would need some form of input box to get the value, no?
tjb1

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

That requires another sub to pass the value, I'm not sure that's allowed in golf.
tjb1

The Function must be called too ;)
GER_Moki

6

Lua, 20 Bytes

Takes in a command-line argument, and outputs via STDOUT

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

And ungolfed as @LeakyNun asked in the comment :)

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

That can be a nice demonstration of type coercion... if you add the explanation in.
Leaky Nun

5

Pyke, 5 4 bytes

`+b*

Try it here!

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

Also 5 bytes with string inputs

+bRb*
+]mbB

5

PHP, 25 24 bytes

Short opening tags are useful for surprisingly few golfing challenges, luckily this is one of them. Unfortunately operator precedence is the opposite of the order you need to do them in so lots of brackets are needed.

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

edit: I realised that seeing as how I'm using brackets anyway I can effectively skip the concatenation operator by changing the written order of the operations around.


5

dc, 11 10 bytes

ddZAr^1+**

I knew that eventually I would find a use for the Z command!

Operation is fairly simple - count the digits, take 10 raised to that power and add one. This gives a multiplier that concatenates the number with itself. Then just multiply.

I/O uses the stack, as usual for dc.

Full program

This is what I used for the tests:

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

The two extra commands give us pipeline I/O.

Tests

$ 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

Thanks are due to Sir Biden XVII (1 byte).


You can substitute A for 10 to save a byte. Well done!
Joe

4

Mumps, 11 bytes

R I W I_I*I

This is one of those rare golf challenges where the idiosyncrasies of Mumps can come in very handy. First, all variables are strings, and all math equations are strictly evaluated left-to-right (as in: not PEMDAS), so 1+2*4=12 in Mumps instead of =9 the way PEMDAS would. So, (barely) ungolfed:

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

Word of caution - because the flavour of Mumps that I'm using (InterSystems Ensemble) does not echo the carriage return for stdin, the input and output number will appear concatenated. To rectify that / increase readability, you'd need to add two bytes and add a manual CR/LF, thusly:

R I W !,I_I*I

However, as I didn't see that requirement in the rules of the challenge, I'm pretty sure that I'm good with the shorter code. If I'm mistaken, please feel free to LART me and I'll modify my answer. :-)


4

PowerShell, 25, 18 bytes

Thank you TessellatingHeckler for reminding me how much PS loves the pipeline.

New 18 bytes:

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

Old 25 bytes:

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

Explanation:

# 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

Testing (save as boring.ps1):

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

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

Definitely not the winning answer, but fun regardless!


If you put the variables the other way around, int * string will implicitly cast the string to an int, and you can save 5 bytes of casting. process{$_*"$_$_"} is 18 bytes, and takes input from "stdin" (i.e. the pipeline), e.g. 174|script.ps1
TessellatingHeckler

Hmmm... Interesting point. I can also switch them using my same structure and achieve the same result: param($a);$a*"$a$a"
ThePoShWolf

Err, I take that back, mine is one byte longer!
ThePoShWolf

@TessellatingHeckler Careful with that answer, since PowerShell's REPL environment doesn't qualify for the program or function default. Something like param($n)$n*"$n$n" (what Darth had, without the ;) is the same length and isn't a REPL.
AdmBorkBork

@TimmyD why doesn't a test.ps1 file which reads from the pipeline count? Does a bash shell script reading from stdin not count either?
TessellatingHeckler

4

Batch, 27 20 18 bytes

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

Edit: Saved 7 bytes thanks to @TessellatingHeckler. Saved a further 2 bytes thanks to @EʀɪᴋᴛʜᴇGᴏʟғᴇʀ.


set /a at the prompt outputs the result of the assignment. -> @cmd/c set/a n=%1%1*%1 for 22 bytes.
TessellatingHeckler

@TessellatingHeckler Why bother assigning if you're outputting?
Neil

@TessellatingHeckler Huh, I already did this trick myself six weeks ago, and I've forgotten it already..
Neil

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

1
@Neil Nope, but I tested it (on Windows 10!) The cmd/c part is needed because the batch file executing tool is not cmd itself.
Erik the Outgolfer
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.