Imprimez un tas de chiffres sans intérêt!


40

Un nombre inintéressant (que je n'ai pas totalement inventé pour ce défi) est ainsi créé:

  1. Prendre un entier positif N
  2. Créez un nouveau nombre O en ajoutant les chiffres de N à la fin de N
  3. Le dernier numéro inintéressant est O * N

Par exemple pour N = 12:

  1. O = 1212
  2. O * N = 1212 * 12
  3. Le numéro final est 14544

Contribution

Un entier positif N (N> 0) ou l'équivalent de votre langue. Vous n'avez pas à attraper une entrée incorrecte.

Sortie

Le nombre sans intérêt correspondant.

Cas de test

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

Notation

Le code le plus court en octets l'emporte.


9
Il doit y avoir une entrée OEIS pertinente ...
MKII

1
@Seims C'était une blague, basée sur le nom "uninsteresting"
MKII

7
@MKII ma mauvaise, je ne parle pas de blague
Seims

1
Est-ce que prendre le nombre en tant qu’argument de chaîne plie un peu trop les règles?
Dom Hastings

1
Allez-y, respectez les règles! : P
Seims

Réponses:


38

05AB1E , 3 octets

Ы*

A expliqué

Ð    # triplicate input
 «   # conactenate
  *  # multiply

Essayez-le en ligne


2
Ahh, gentil! Ninja m'avait par secondes: p.
Adnan

2
@Adnan Hehe. La vengeance pour ce temps vous me l'avez fait: P
Emigna

1
3 opérations, 3 octets, je ne pense pas que vous pourriez le rendre plus court que cela.
Lasse Meyer

2
@busukxuan Yep. Concaténer convertit automatiquement le nombre stret *interprète la chaîne en tant que nombre. Très utile :)
Emigna

2
@busukxuan Ouais, une combinaison de Pyth et 05AB1E aurait pu le faire en 2 octets :)
Emigna

29

JavaScript (ES6), 10 octets

_=>(_+_)*_

Doit être appelé avec l'argument comme un String, pas un Number.

Usage:

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

-3 octets grâce à la suggestion de @Quill .


1
Si vous pouvez transmettre le paramètre sous forme de chaîne, vous pouvez supprimer deux octets de cette solution:_=>(_+_)*+_
Quill

3
Comment ça marche exactement? Si je comprends bien, utilisez-vous _un caractère arbitraire pour une variable? (PS - (_+_)ressemble totalement à un mégot)
charredgrass

@charredgrass $fonctionnerait également
chat

11
abus de casting de type onze
mardi

3
Par intérêt, le meilleur que je pouvais faire était mathématiquement simple: 30 octets dans ES7 n=>(1+10**-~Math.log10(n))*n*n(tristement -~plus prioritaire que **) ou 31 dans ES6 n=>-~`1e${-~Math.log10(n)}`*n*n. Même la récursion m'a pris 32 octets:f=(n,m=1)=>n<m?-~m*n*n:f(n,m*10)
Neil

24

Java 8, 29 26 25 21 octets

Que Dieu bénisse lambda

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

c-> code long (c + "" + c) * c;


28
Tu dois aimer Java; même avec les lambdas de Java 8 et l’une des réponses les plus courtes en Java jamais rencontrées ici sur codegolf, il est encore surclassé par toutes les autres réponses actuelles. xD
Kevin Cruijssen

3
java is bae, lambda est bae
Seims

3
@KevinCruijssen J'ai encore un espoir, un jour Java gagnera le concours
CodeGolf

1
Après votre modification, vous avez dépassé @MartinEnder avec sa réponse Retina de 1 octet! o.Ô
Kevin Cruijssen

1
@KevinCruijssen mais toujours pas assez pour gagner ou au moins battre 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 quoi? octets?
Insane

3
@Insane Bytes si vous l'appelez à partir de la ligne de commande, appuyez sur les touches si vous le faites directement à partir de vim. J'omets habituellement l'unité de mes réponses vim car il peut s'agir de l'une ou de l'autre.
Poignée de porte


Est-ce <C-r>qu'un retour de voiture?
Captain Man

@CaptainMan Non, <C-r>c'est contrôle plus r. Retour de chariot est <cr>.
Poignée de porte

15

Pyth, 5 4 octets

*s+`

Explication:

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

Testez-le ici .


15

Emacs, 17 octets

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

Explication

  • (*SPACEajoute (*au point (avant le nombre);
  • C-SPACEC-EM-Y Sélectionnez et copiez le numéro.
  • SPACE ajoute un espace au point (après le nombre);
  • C-YC-Y colle deux fois le nombre au point;
  • )ajoute )à la fin;
  • C-J interprète la ligne comme une expression LISP et affiche son résultat.

Exemple

Curseur représenté par un tuyau ( |)

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

Résultat

(* 174 174174)
30306276|

3
Bonjour et bienvenue sur PPCG! Nice premier post!
Rɪᴋᴇʀ


12

Python 2.7, 21 octets:

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

Eh bien, ce doit être la réponse la plus courte que j'ai jamais écrite en Python dans les plus brefs délais. C'est une fonction lambda anonyme qui peut être exécutée en la nommant comme vous le souhaitez, puis en l'appelant comme une fonction normale encapsulée print(). Par exemple, si votre entrée est 12et que la fonction a été nommée H, cela s'appellera comme print(H(12)).

Essayez-le en ligne! (Idéone)

Notez que cela ne fonctionne que pour les valeurs supérieures et égales à 9223372036854775807depuis toute valeur supérieure et repr()met un Là la fin de l'entier. Par conséquent, pour les valeurs supérieures à 9223372036854775807, cette version à 24 octets serait celle qui fonctionne:

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

Essayez ceci en ligne! (Idéone)


Je trouve encore les opérations de Phytons String magiques ...
Seims

@ Seims de quelle manière?
busukxuan

Multiplication et addition de chaînes. Je n'ai pas vu ça souvent.
Seims

@ Seims Je suppose que vous travaillez principalement avec des langages statiques alors?
busukxuan

@busukxuan Appelez-moi un noob si vous voulez: ^)
Seims

11

Gelée, 4 octets

;DḌ×

Essayez-le en ligne

Explication

;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
C'est un visage joyeux avec une barbiche! ;DDx
chat le

Dans quel encodage prend seulement 1 octet? Habituellement, nous utilisons UTF-8, dans lequel il faut 3 (et le × en prend 2, mais il s'agit d'un octet, par exemple, ISO8859-1).
o11c

@ o11c Jelly utilise sa propre page de code personnalisée dans laquelle ces caractères ont un octet chacun.
Un spaghetto

10

C, 70 68 54 53 52 44

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

Version précédente (48 octets, pas de fonctions mathématiques), 16 octets enregistrés grâce à @LeakyNun, 1 octet grâce à @FryAmTheEggman, 4 octets grâce à @TobySpeight:

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

Appelez f()avec un argument, le nombre, et il renvoie le nombre sans intérêt correspondant.

Programme de 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;
}

Résultats de test:

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

Essayez-le en ligne!


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

Cela ne devrait pas fonctionner correctement sans inclure math.h, mais vous vous en tirez avec GCC, où log10()et pow()sont intégrés, et le compilateur met simplement en garde sur "la déclaration implicite incompatible de la fonction intégrée" plutôt que de supposer (comme il se doit) que ils reviennent tous les deux int.
Toby Speight

@ Leaky - vous n'avez rien mis dans a...
Toby Speight

1
Il est agréable de voir une autre réponse qui reste entièrement dans le monde arithmétique (ne pas faire de concaténation de chaînes). :-)
Toby Speight

1
@Toby - La concaténation de chaînes en C est incompatible avec le golf. ;-)
owacoder

9

Dyalog APL , 7 octets

⊢×#⍎⍕,⍕

représentation de chaîne

⍕, préfixe une représentation de chaîne

#⍎ faire en nombre (dans l'espace de noms racine)

⊢× multiplier par le nombre original


1
Ces combattants TIE naufragés sont drôles!
Luis Mendo


1
La fourche se réveille :-D
Luis Mendo

Je suis sûr que ce ne sont pas octets dans tout le codage, car ils ne sont pas ou très courant de type lettre.
o11c

@ o11c Avez-vous vérifié le lien préemptif pour le mot "octets", à savoir. meta.codegolf.stackexchange.com/a/9429/43319 .
Adám

9

J, 7 octets

*,~&.":

Explication

*,~&.":  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 Je ne pouvais même pas penser que cela Underfonctionnait correctement avec la concaténation de chaînes. Quelle belle découverte pour moi! Merci.
Dan Oak

Malheureusement, je pense que cela devrait être entre parenthèses, car c'est un crochet qui ne fonctionne pas s'il est tapé directement * ,~ &.": n, et ne peut pas non plus être utilisé pour former d'autres verbes.
Dan Oak

1
@dahnoak Ici, chez PPCG, il suffit de spécifier ce qui est nécessaire pour une fonction. Le précédent est donc tout ce qui est nécessaire pour créer une fonction en J. Ensuite, pour l'invoquer à l'aide de certaines entrées parenthèses ou stockées dans une variable.
miles

Ah, j'ai ça, ty.
Dan Oak

9

Rétine , 27 à 20 octets

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

Est un peu lent pour les entrées volumineuses, car avant la dernière étape, le résultat est représenté de manière unaire.

Essayez-le en ligne! (La première ligne active une suite de tests séparée par saut de ligne.)

Explication

Je vais utiliser 2comme exemple d'entrée (car les représentations unaires deviennent un peu difficiles à manier pour des entrées plus importantes).

Étape 1: substitution

^
$_$*: $_

En faisant correspondre le début de la chaîne avec, ^nous ajoutons simplement des éléments. $_fait référence à la chaîne d'entrée elle-même et $*:signifie que nous insérons autant de deux points. Nous obtenons donc:

:: 22

Étape 2: substitution

:
$_$*:

Maintenant, nous associons chaque :et remplaçons à nouveau par $_$*:. Bien sûr, cette fois, la valeur $_ne correspond pas à un entier (mais à :: 22notre exemple), elle $*recherche simplement la première décimale de la chaîne. Elle correspond donc à l’entrée concaténée sur elle-même ( Odans la spécification de défi). Nous nous retrouverons avec des N*Opoints, suivis de O:

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

Étape 3: match

:

Il ne reste plus qu'à compter le nombre :de décimales converties, ce qui est exactement ce que cette étape fait.


Ooh, si proche d'être aussi long que Java. Il a été déréglé de 2 octets seulement. +1
R. Kap

@ R.Kap En fait, Java 8 l'a gommé après avoir supprimé 3 octets! o.Ô
Kevin Cruijssen

4
Désolé, Java ....
Martin Ender

9

CJam , 8 octets

ri_`_+i*

Essayez-le en ligne!

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
J'étais sur le point de suggérer de ne pas convertir en in puis immédiatement de nouveau en chaîne, mais l'approche naïve (c'est-à-dire n'ayant jamais utilisé CJam auparavant) l'est r__+i\i*, qui a la même longueur.
La poursuite de Monica le

@QPaysTaxes Ah nice. J'ai remarqué la même chose que vous: pourquoi le convertir d'abord en int, puis de nouveau en chaîne. De plus, je n’ai jamais utilisé CJam et j’ai trop mal regardé tous les opérateurs possibles . J’ai donc été incapable de trouver une solution à première vue. Merci de partager votre approche sans la reconvertir en chaîne, même si la longueur en octets est identique.
Kevin Cruijssen

S'il y avait un moyen d'appliquer une opération à la pile entière sur deux octets, ce serait un octet plus court (quelque chose comme r__+si*, où sest "appliquer cette opération sur la pile"), mais je ne vois rien de tel
Fonds Le procès de Monica

8

Gelée, 8 à 6 octets

ŒṘẋ2v×

Essayez-le en ligne!

Explication

ŒṘẋ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
Je ne pense pas que vous avez besoin l' un de ces ³s.
Martin Ender


7

Brachylog , 7 octets

:?c:?*.

Explication

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

7

Python, 42 octets

Approche arithmétique pure, sans ficelle!

f=lambda n,m=1:m<=n and f(n,m*10)or-~m*n*n

Ideone ça!


7

Matlab / Octave, 20 octets

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

C'est une fonction anonyme qui prend l'entrée sous forme de chaîne.

Exemple d'utilisation:

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

Ou essayez-le en ligne avec ideone .

Explication

Le code construit une chaîne en concaténant la chaîne d'entrée deux fois, puis le caractère *(qui a le code ASCII 42), puis la chaîne à nouveau. La chaîne concaténée est ensuite évaluée.


Qu'est-ce que ça 42veut dire?
Leaky Nun

4
@ LeakyNun C'est la réponse à la question ultime de la vie, de l'univers et de tout " . En outre, il s'agit du code ASCII pour*
Luis Mendo

Ah Je cherchais quelque chose comme la 42ème fonction.
Leaky Nun

Le code construit simplement une chaîne en concaténant la chaîne d'entrée deux fois, puis à *nouveau la chaîne. La chaîne concaténée est ensuite évaluée. Je vais modifier cela dans la réponse
Luis Mendo

6

MATL , 6 octets

tVthU*

Essayez-le en ligne!

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 octets

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

Prend l'entrée en tant qu'argument de ligne de commande et renvoie STDOUT.

Cela ne fonctionne que dans zsh, mais voici 15 octets dans Bash qui utilisent à la echoplace de <<<:

echo $[$1$1*$1]

6

Perl, 11 octets

$_*=$_ x2

+ les drapeaux pet l.

(courir avec perl -ple '$_*=$_ x2')

-2 octets grâce au tuyau.


Économisez deux octets:$_*=$_ x2
pipe le

Je ne pense pas que tu -l
aies

@ BradGilbertb2gills Oui j'en ai besoin, car sans elle, $_ x2ce ...\n...\nqui, une fois converti en nombre par Perl, se termine au premier\n
Dada

Je le testais avec Perl 5 et 6 et je n’ai pas remarqué que j’avais oublié de retirer le 6.
Brad Gilbert b2gills

6

Excel VBA, 35 octets

Sous appelé avec numéro, msgbox renvoie la réponse

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

Alternative Excel VBA, 42 octets

Numéro donné dans la formule, retourne la réponse.

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

Pensez à un MsgBox et à un sous-marin. Cela vous fera économiser 13 octets, si je compte bien
GER_Moki

J'aurais besoin d'une forme de zone de saisie pour obtenir la valeur, non?
tjb1

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

Cela nécessite un autre sous-marin pour passer la valeur, je ne suis pas sûr que cela soit autorisé dans le golf.
tjb1

La fonction doit être appelée aussi;)
GER_Moki

6

Lua, 20 octets

Prend un argument de ligne de commande, et sort par STDOUT

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

Et ungolfed comme @LeakyNun a demandé dans le commentaire :)

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

Cela peut être une belle démonstration de coercition de type ... si vous ajoutez l'explication dans.
Leaky Nun

5

Pyke, 5 à 4 octets

`+b*

Essayez-le ici!

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

Aussi 5 octets avec des entrées de chaîne

+bRb*
+]mbB

5

PHP, 25 24 octets

Les étiquettes à ouverture courte sont utiles pour étonnamment peu de défis de golf, heureusement, c’est l’un d’eux. Malheureusement, la priorité des opérateurs est à l'opposé de l'ordre dans lequel vous devez les effectuer. Il faut donc beaucoup de crochets.

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

edit: Je me suis rendu compte que, de toute façon, en utilisant des crochets, je pouvais effectivement sauter l’opérateur de concaténation en modifiant l’ordre écrit des opérations.


5

dc, 11 10 octets

ddZAr^1+**

Je savais que je finirais par trouver un usage pour la Zcommande!

Le fonctionnement est assez simple: comptez les chiffres, prenez 10 points élevés et ajoutez-en un. Cela donne un multiplicateur qui concatène le nombre avec lui-même. Alors il suffit de multiplier.

I / O utilise la pile, comme d'habitude pour dc.

Programme complet

Voici ce que j'ai utilisé pour les tests:

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

Les deux commandes supplémentaires nous donnent des entrées / sorties de pipeline.

Des 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

Merci à Sir Biden XVII (1 octet).


Vous pouvez remplacer Apour 10sauvegarder un octet. Bien joué!
Joe

4

Oreillons, 11 octets

R I W I_I*I

C’est l’un des rares défis de golf où les particularités des oreillons peuvent être très utiles. Premièrement, toutes les variables sont des chaînes et toutes les équations mathématiques sont strictement évaluées de gauche à droite (comme dans: pas PEMDAS), donc 1 + 2 * 4 = 12 dans Mumps au lieu de = 9 comme le ferait PEMDAS. Donc, à peine ungolfé:

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

Attention: parce que la saveur de Mumps que j'utilise (InterSystems Ensemble) ne fait pas écho au retour chariot de stdin, les numéros d'entrée et de sortie apparaissent concaténés. Pour rectifier cela / améliorer la lisibilité, vous devez ajouter deux octets et ajouter un CR / LF manuel, ainsi:

R I W !,I_I*I

Cependant, comme je ne voyais pas cette exigence dans les règles du challenge, je suis à peu près sûr que je suis doué pour le code plus court. Si je me trompe, n'hésitez pas à LART moi et je modifierai ma réponse. :-)


4

PowerShell, 25 , 18 octets

Merci TessellatingHeckler de m'avoir rappelé à quel point le PS aime le pipeline.

Nouveau 18 octets:

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

Vieux 25 octets:

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

Explication:

# 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

Test (enregistrer sous boring.ps1):

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

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

Ce n'est vraiment pas la réponse gagnante, mais amusant quand même!


Si vous inversez les variables, int * string le convertira implicitement en un entier et vous pourrez économiser 5 octets. process{$_*"$_$_"}est de 18 octets et prend une entrée de "stdin" (c'est-à-dire du pipeline), par exemple174|script.ps1
TessellatingHeckler

Hmmm ... Point intéressant. Je peux aussi les changer en utilisant ma même structure et obtenir le même résultat:param($a);$a*"$a$a"
ThePoShWolf

Euh, je reprends ça, le mien est un octet de plus!
ThePoShWolf

@TessellatingHeckler Faites attention à cette réponse, car l'environnement REPL de PowerShell ne remplit pas les conditions requises pour le programme ou la fonction par défaut . Quelque chose comme param($n)$n*"$n$n"(ce que Darth avait, sans le ;) a la même longueur et n’est pas un REPL.
AdmBorkBork

@TimmyD pourquoi un test.ps1fichier qui lit à partir du nombre de pipelines ne fonctionne-t-il pas ? Est-ce qu'un script shell bash qui lit stdin ne compte pas non plus?
TessellatingHeckler

4

Lot, 27 20 18 octets

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

Edit: 7 octets enregistrés grâce à @TessellatingHeckler. Sauvegardé 2 octets supplémentaires grâce à @ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ.


set /aà l'invite, le résultat de l'affectation est affiché. -> @cmd/c set/a n=%1%1*%1pour 22 octets.
TessellatingHeckler

@TessellatingHeckler Pourquoi s'embêter si vous exportez?
Neil

@TessellatingHeckler Euh, j'ai déjà fait cette astuce moi-même il y a six semaines, et je l'ai déjà oublié ..
Neil

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

1
@ Neil Non, mais je l'ai testé (sous Windows 10!). Cette cmd/cpièce est nécessaire car l'outil d'exécution du fichier de commandes n'est pas cmd lui-même.
Erik l'Outgolfer
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.