Drucken Sie eine Reihe von uninteressanten Zahlen!

40

So entsteht eine uninteressante Zahl (die ich nur für diese Herausforderung völlig wettgemacht habe):

  1. Nehmen Sie eine positive ganze Zahl N
  2. Erstellen Sie eine neue Zahl O, indem Sie die Ziffern von N am Ende von N hinzufügen
  3. Die letzte uninteressante Zahl ist O * N

Zum Beispiel für N = 12:

  1. O = 1212
  2. O * N = 1212 * 12
  3. Die endgültige Nummer ist 14544

Eingang

Eine positive ganze Zahl N (N> 0) oder das Äquivalent Ihrer Sprache. Sie müssen keine falschen Eingaben abfangen.

Ausgabe

Die entsprechende uninteressante Nummer.

Testfälle

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

Wertung

Kürzester Code in Bytes gewinnt.

Seims
quelle
9
Es muss einen relevanten OEIS-Eintrag geben ...
MKII
1
@ Seims Es war ein Witz, basierend auf dem "uninsteresting" Namen
MKII
7
@ MKII mein schlechtes, ich spreche keinen Witz
Seims
1
Ist es zu viel, die Zahl als String-Argument zu nehmen, das die Regeln ein wenig verbiegt?
Dom Hastings
1
Mach weiter, beuge die Regeln! : P
Seims

Antworten:

38

05AB1E , 3 Bytes

Ы*

Erklärt

Ð    # triplicate input
 «   # conactenate
  *  # multiply

Probieren Sie es online aus

Emigna
quelle
2
Ahh nett! Ninja'd mir von Sekunden: p.
Adnan
2
@Adnan Hehe. Rache für diese Zeit, die du mir
angetan
1
3 Operationen, 3 Bytes, ich glaube nicht, dass Sie es kürzer machen könnten.
Lasse Meyer
2
@busukxuan Yep. Verketten konvertiert die Zahl automatisch in strund *interpretiert die Zeichenfolge als Zahl. Sehr nützlich :)
Emigna
2
@busukxuan Ja, eine Kombination aus Pyth und 05AB1E hätte es in 2 Bytes geschafft :)
Emigna
29

JavaScript (ES6), 10 Byte

_=>(_+_)*_

Muss mit dem Argument als aufgerufen werden String, nicht als Number.

Verwendungszweck:

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

-3 Bytes dank @Quills Vorschlag.

Dom Hastings
quelle
1
Wenn Sie den Parameter als Zeichenfolge übergeben können, können Sie zwei Bytes von dieser Lösung abschneiden:_=>(_+_)*+_
Quill
3
Wie genau funktioniert das? Wenn ich richtig verstehe, verwenden Sie _als ein beliebiges Zeichen für eine Variable? (PS - (_+_)sieht total aus wie ein Hintern)
Charredgrass
@ Charredgrass $würde auch funktionieren
Katze
11
Typ Casting Missbrauch elf
Downgoat
3
Aus Interesse war das Beste, was ich rein rechnerisch tun konnte, 30 Bytes in ES7 n=>(1+10**-~Math.log10(n))*n*n(hat leider -~eine höhere Priorität als **) oder 31 in ES6 n=>-~`1e${-~Math.log10(n)}`*n*n. Selbst Rekursion hat mich 32 Bytes f=(n,m=1)=>n<m?-~m*n*n:f(n,m*10)
Neil
24

Java 8, 29 26 25 21 Bytes

Gott segne Lambda

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

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

user902383
quelle
28
Du musst Java lieben; Selbst mit Lambdas von Java 8 und einer der kürzesten Java-Antworten, die jemals hier auf Codegolf gegeben wurden, ist sie immer noch allen anderen aktuellen Antworten überlegen. xD
Kevin Cruijssen
3
Java ist bae, Lambda ist bae
Seims
3
@ KevinCruijssen Ich habe immer noch eine Hoffnung, eines Tages wird Java den Codegolf-Wettbewerb gewinnen
user902383
1
Nach deiner Bearbeitung hast du @MartinEnder mit seiner Retina-Antwort um 1 Byte übertroffen ! o.Ô
Kevin Cruijssen
1
@ KevinCruijssen, aber immer noch nicht genug, um Python zu gewinnen oder zumindest zu schlagen :(
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
Türknauf
quelle
11 was? Bytes?
Insane
3
@Insane Bytes, wenn Sie es über die Befehlszeile aufrufen, Tastatureingaben, wenn Sie es direkt über vim ausführen. Ich lasse das Gerät normalerweise aus meinen vim-Antworten aus, da es eines von beiden sein kann.
Türklinke
v.tryitonline.net/#code=QxI9EiISIioSIgo&input=MTI Zu schlecht <C-r>ist nicht druckbar.
DJMcMayhem
Ist <C-r>ein Wagenrücklauf?
Captain Man
@CaptainMan Nein, <C-r>ist Kontrolle plus r. Wagenrücklauf ist <cr>.
Türklinke
15

Pyth, 5 4 Bytes

*s+`

Erläuterung:

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

Teste es hier .

busukxuan
quelle
15

Emacs, 17 Bytes

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

Erläuterung

  • (*SPACEfügt (*an Punkt (vor der Zahl) hinzu;
  • C-SPACEC-EM-Y Wähle die Nummer aus und kopiere sie.
  • SPACE fügt ein Leerzeichen am Punkt (nach der Zahl) ein;
  • C-YC-Y fügt die doppelte Zahl am Punkt ein;
  • )fügt )am Ende hinzu;
  • C-J interpretiert die Zeile als LISP-Ausdruck und gibt das Ergebnis aus.

Beispiel

Cursor dargestellt durch eine Pipe ( |)

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

Ergebnis

(* 174 174174)
30306276|
YSC
quelle
3
Hallo und willkommen bei PPCG! Schöner erster Beitrag!
7.
13

C #, 19 23 Bytes

n=>int.Parse(""+n+n)*n;

Ohne Zeichenketten 47 Bytes

n=>{int i=1;while(i<=n)i*=10;return(i+1)*n*n;};
Weston
quelle
4
Dies ist ein Ausschnitt, kein vollständiges Programm oder eine Funktion. Es wäre gültig mit zB (n)=>{int.Parse(""+n+n)*n}2
Katze
@cat besser? brauche ich die nachgestellte ;?
Weston
Ich weiß es nicht. Siehe auch Standardeinstellungen für Code Golf und Tipps zum Golfen in C #
cat
12

Python 2.7, 21 Bytes:

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

Nun, dies muss die kürzeste Python-Antwort sein, die ich je in kürzester Zeit geschrieben habe. Es handelt sich um eine anonyme Lambda-Funktion, die ausgeführt werden kann, indem Sie einen beliebigen Namen vergeben und sie dann wie eine normale Funktion aufrufen print(). Wenn Ihre Eingabe beispielsweise lautet 12und die Funktion benannt wurde H, würde dies so heißen print(H(12)).

Probieren Sie es online! (Ideone)

Beachten Sie, dass dies nur für Werte bis und gleich 9223372036854775807einem höheren Wert funktioniert und repr()ein Lam Ende der Ganzzahl steht. Daher ist 9223372036854775807diese 24-Byte- Version für Werte größer als die folgende:

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

Versuchen Sie dies online! (Ideone)

R. Kap
quelle
Ich finde immer noch Phytons String Operationen magisch ...
Seims
@Seims wie?
Busukxuan
String Multiplikation und Addition. Habe ich nicht so oft gesehen.
Seims
@Seims Ich denke, du beschäftigst dich dann hauptsächlich mit statischen Sprachen?
Busukxuan
@ Busukxuan Rufen Sie mich ein Noob, wenn Sie wollen: ^)
Seims
11

Gelee, 4 Bytes

;DḌ×

Probieren Sie es online aus

Erläuterung

;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
Essari
quelle
1
Es ist ein wirklich fröhliches zwinkerndes Gesicht mit einem Spitzbart! ;DDx
Katze
In welcher Codierung braucht man nur 1 Byte? Normalerweise verwenden wir UTF-8, in dem es 3 dauert (und das × 2 dauert, aber es ist 1 Byte in z. B. ISO8859-1).
11.
@ o11c Jelly verwendet eine eigene Codepage, auf der diese Zeichen jeweils ein Byte lang sind.
ein Spaghetto
10

C 70 68 54 53 52 44

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

Vorherige Version (48 Byte, keine mathematischen Funktionen), 16 Byte dank @LeakyNun, 1 Byte dank @FryAmTheEggman, 4 Byte dank @TobySpeight gespeichert:

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

Rufen Sie f()mit einem Argument die Nummer auf, und sie gibt die entsprechende uninteressante Nummer zurück.

Testprogramm

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

Testergebnisse:

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

Probieren Sie es online!

owacoder
quelle
f(n){int b=1;while(a)b*=10,a/=10;return(n+n*b)*n;}
Undichte Nonne
Dies sollte nicht richtig funktionieren , ohne einschließlich math.h, aber Sie mit ihm in GCC wegkommen, wo log10()und pow()eingebaut sind, und der Compiler lediglich warnt vor „unvereinbar implizite Deklaration von integrierten Funktion“ anstatt davon auszugehen (wie es sein soll) , dass beide kehren zurück int.
Toby Speight
@Leaky - Sie haben nichts in a...
Toby Speight
1
Es ist schön, eine andere Antwort zu sehen, die vollständig in der arithmetischen Welt bleibt (ohne String-Verkettung). :-)
Toby Speight
1
@Toby - Die Verkettung von Zeichenfolgen in C ist nicht mit dem Golfen kompatibel. ;-)
Owacoder
9

Dyalog APL , 7 Bytes

⊢×#⍎⍕,⍕

String-Darstellung

⍕, Zeichenfolgendarstellung voranstellen

#⍎ in Zahl umwandeln (im Root-Namespace)

⊢× multiplizieren Sie mit der ursprünglichen Zahl

Adam
quelle
1
Diese zerstörten TIE-Kämpfer sind lustig!
Luis Mendo
2
@ LuisMendo dyalog.com/blog/2015/12/apl-puns
Adám
1
Die Gabel erwacht :-D
Luis Mendo
Ich bin mir ziemlich sicher, dass diese Bytes in keiner Codierung enthalten sind, da sie nicht buchstabenartig oder sehr häufig sind.
11.
@ o11c Haben Sie den präemptiven Link nach dem Wort "Bytes" durchsucht? meta.codegolf.stackexchange.com/a/9429/43319 .
Adám
9

J, 7 Bytes

*,~&.":

Erläuterung

*,~&.":  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
Meilen
quelle
+1. Ich konnte nicht einmal denken, dass Underdas bei der Verkettung von Zeichenfolgen richtig funktioniert. Was für eine großartige Entdeckung für mich! Danke.
Dan Oak
Leider denke ich, dass dies in Klammern stehen sollte, da es sich um einen Haken handelt, der bei direkter Eingabe nicht funktioniert * ,~ &.": nund auch nicht für die Bildung anderer Verben verwendet werden kann.
Dan Oak
1
@dahnoak Hier bei PPCG müssen wir nur angeben, was für eine Funktion benötigt wird. Das oben Gesagte ist also alles, was erforderlich ist, um eine Funktion in J zu erstellen. Um sie dann mit einer Eingabe als Argument aufzurufen, befindet sie sich entweder in Klammern oder in einer Variablen gespeichert.
Meilen
Ah, ich habe das verstanden.
Dan Oak
9

Retina , 27 20 Bytes

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

Wird bei großen Eingaben etwas langsam, da das Ergebnis vor der letzten Stufe unär dargestellt wird.

Probieren Sie es online! (Die erste Zeile aktiviert eine durch Zeilenvorschub getrennte Testsuite.)

Erläuterung

Ich werde 2als Beispiel eine Eingabe verwenden (da die unären Darstellungen für größere Eingaben etwas unhandlich werden).

Stufe 1: Substitution

^
$_$*: $_

Indem ^wir den Anfang der Zeichenkette mit abgleichen, stellen wir einfach ein paar Dinge voran. $_bezieht sich auf die Eingabezeichenfolge selbst und $*:bedeutet, dass wir so viele Doppelpunkte einfügen. So bekommen wir:

:: 22

Stufe 2: Substitution

:
$_$*:

Jetzt passen wir es immer :wieder durch $_$*:. Natürlich wird diese Zeit $_nicht als Ganzzahl ausgewertet ( :: 22in unserem Beispiel jedoch als Ganzzahl ), sondern es wird $*nur nach der ersten Dezimalstelle in der Zeichenfolge gesucht. Dies ergibt die Eingabe, die mit sich selbst verknüpft ist ( Oin der Challenge-Spezifikation). Wir werden mit N*ODoppelpunkten enden , gefolgt von O:

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

Stufe 3: Spiel

:

Alles, was übrig bleibt, ist das Zählen der :s, um von unär zurück zu dezimal zu konvertieren, was genau das ist, was diese Stufe tut.

Martin Ender
quelle
Oh, so kurz davor, so lang wie Java zu sein. Hat es nur um 2 Bytes übertroffen. +1
R. Kap
@ R.Kap Eigentlich hat Java 8 es nach dem Entfernen von 3 Bytes übertroffen! o.Ô
Kevin Cruijssen
4
Entschuldigung, Java ....
Martin Ender
9

CJam , 8 Bytes

ri_`_+i*

Probieren Sie es 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
Luis Mendo
quelle
2
Ich wollte vorschlagen, nicht sofort wieder in String umzuwandeln, aber der naive Ansatz (dh ich habe noch nie CJam verwendet) ist r__+i\i*, der die gleiche Länge hat.
Nic Hartley
@ QPaysTaxes Ah schön. Mir ist dasselbe aufgefallen wie Ihnen: Warum zuerst in int und dann wieder in string konvertieren? Ich habe auch nie CJam verwendet und die möglichen Operatoren nicht genau genug untersucht , sodass ich auf den ersten Blick keine Lösung finden konnte. Vielen Dank, dass Sie Ihren Ansatz geteilt haben, ohne ihn wieder in einen String umzuwandeln, obwohl er die gleiche Bytelänge hat.
Kevin Cruijssen
Wenn es eine Möglichkeit gäbe , eine Operation den ganzen Stapel in zwei Bytes anzuwenden, wäre es ein Byte kürzer (so etwas wie r__+si*, wo sist „diese Operation anwenden über den Stapel“), aber ich sehe nicht , so etwas
Nic Hartley
8

Gelee, 8 6 Bytes

ŒṘẋ2v×

Probieren Sie es online!

Erläuterung

ŒṘẋ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
user48538
quelle
1
Ich glaube nicht, dass Sie eines von beiden brauchen ³.
Martin Ender
8

Awk, 13 Bytes

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

Setzen Sie die Linie auf 2 von sich selbst multipliziert mit sich selbst

User112638726
quelle
7

Brachylog , 7 Bytes

:?c:?*.

Erläuterung

:?c      Concatenate Input to itself
   :?*.  Output is that concatenation times Input
Tödlich
quelle
7

Python, 42 Bytes

Rein rechnerisch, ohne Fäden!

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

Ideone es!

Undichte Nonne
quelle
7

Matlab / Octave, 20 Bytes

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

Dies ist eine anonyme Funktion, die die Eingabe als Zeichenfolge verwendet.

Beispiel Verwendung:

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

Oder versuchen Sie es online mit ideone .

Erläuterung

Der Code erstellt eine Zeichenfolge, indem er die Eingabezeichenfolge zweimal verkettet, dann das Zeichen *(mit ASCII-Code 42) und dann die Zeichenfolge erneut. Die verkettete Zeichenfolge wird dann ausgewertet.

Luis Mendo
quelle
Was heißt 42das?
Undichte Nonne
4
@LeakyNun Es ist die Antwort auf die ultimative Frage des Lebens, des Universums und alles " . Es ist auch der ASCII-Code für*
Luis Mendo
Ah. Ich habe nach so etwas wie der 42. Funktion gesucht.
Undichte Nonne
Der Code erstellt einfach eine Zeichenfolge, indem er die Eingabezeichenfolge zweimal *und dann die Zeichenfolge erneut verkettet . Die verkettete Zeichenfolge wird dann ausgewertet. Ich werde das in der Antwort
ändern
6

MATL , 6 Bytes

tVthU*

Probieren Sie es online!

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

zsh, 13 Bytes

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

Nimmt Eingaben als Befehlszeilenargument und gibt sie an STDOUT aus.

Dies funktioniert nur in zsh, aber hier ist 15 Bytes in Bash verwendet echostatt <<<:

echo $[$1$1*$1]
Türknauf
quelle
6

Perl, 11 Bytes

$_*=$_ x2

+ die pund lFlags.

(renn mit perl -ple '$_*=$_ x2')

-2 Bytes dank Pipe.

Dada
quelle
Speichern Sie zwei Bytes:$_*=$_ x2
Pipe
Ich glaube nicht, dass Sie brauchen-l
Brad Gilbert b2gills
@ BradGilbertb2gills Ja, ich brauche es, weil ohne es produzieren $_ x2wird, ...\n...\nwas, wenn es als Zahl von Perl konvertiert wird, am ersten endet\n
Dada
Ich habe es sowohl mit Perl 5 als auch mit Perl 6 getestet und nicht bemerkt, dass ich vergessen habe, das zu entfernen 6.
Brad Gilbert b2gills
6

Excel VBA, 35 Bytes

Unter mit der Nummer angerufen, gibt msgbox Antwort zurück

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

Alternatives Excel VBA, 42 Bytes

Die in der Formel angegebene Zahl gibt die Antwort zurück.

Function B(a)
B = (a & a) * a
End Function
tjb1
quelle
Denken Sie an eine MsgBox und ein Sub. Es spart Ihnen 13 Byte, wenn ich richtig zähle
GER_Moki
Ich würde eine Art Eingabefeld benötigen, um den Wert zu erhalten, nein?
tjb1
Versuchen Sie es mit Sub B (a) MsgBox (a & a) * a End Sub
GER_Moki
Das erfordert ein anderes U-Boot, um den Wert zu übertreffen. Ich bin mir nicht sicher, ob das im Golf erlaubt ist.
tjb1
Die Funktion muss auch aufgerufen werden;)
GER_Moki
6

Lua, 20 Bytes

Übernimmt ein Befehlszeilenargument und gibt es über STDOUT aus

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

Und ungolfed wie @LeakyNun im Kommentar gefragt :)

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
Katenkyo
quelle
Das kann eine schöne Demonstration von Typenzwang sein ... wenn Sie die Erklärung hinzufügen.
Undichte Nonne
5

Pyke, 5 4 Bytes

`+b*

Probieren Sie es hier aus!

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

Auch 5 Bytes mit String-Eingaben

+bRb*
+]mbB
Blau
quelle
5

PHP, 25 24 Bytes

Kurze Eröffnungsmarken sind nützlich für überraschend wenige Golfherausforderungen, zum Glück ist dies eine davon. Leider ist die Rangfolge der Operatoren das Gegenteil der Reihenfolge, in der Sie sie ausführen müssen, sodass viele Klammern erforderlich sind.

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

edit: Mir ist aufgefallen, dass ich, da ich eh Klammern verwende, den Verkettungsoperator effektiv überspringen kann, indem ich die Reihenfolge der Operationen ändere.

user55641
quelle
5

Gleichstrom, 11-10 Bytes

ddZAr^1+**

Ich wusste, dass ich irgendwann eine Verwendung für den ZBefehl finden würde!

Die Bedienung ist recht einfach: Zählen Sie die Ziffern, nehmen Sie 10 hoch und addieren Sie eine. Dies ergibt einen Multiplikator, der die Zahl mit sich selbst verkettet. Dann multiplizieren Sie einfach.

I / O verwendet den Stack wie gewohnt für DC.

Volles Programm

Das habe ich für die Tests verwendet:

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

Die zwei zusätzlichen Befehle geben uns Pipeline-E / A.

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

Dank gebührt Sir Biden XVII (1 Byte).

Toby Speight
quelle
Sie können ersetzen Afür 10ein Byte zu speichern. Gut gemacht!
Joe
4

Mumps, 11 Bytes

R I W I_I*I

Dies ist eine der seltenen Golfherausforderungen, bei denen die Besonderheiten von Mumps sehr nützlich sein können. Erstens sind alle Variablen Zeichenfolgen, und alle mathematischen Gleichungen werden streng von links nach rechts ausgewertet (wie in: nicht PEMDAS), sodass 1 + 2 * 4 = 12 in Mumps anstelle von = 9 wie in PEMDAS. Also (kaum) ungolfed:

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

Ein Wort der Vorsicht - da die von mir verwendete Variante von Mumps (InterSystems Ensemble) nicht den Wagenrücklauf für stdin wiedergibt, werden die Eingabe- und Ausgabenummer verkettet angezeigt. Um dies zu korrigieren / die Lesbarkeit zu verbessern, müssen Sie zwei Bytes hinzufügen und ein manuelles CR / LF hinzufügen.

R I W !,I_I*I

Da ich diese Anforderung jedoch nicht in den Regeln der Challenge gesehen habe, bin ich mir ziemlich sicher, dass ich mit dem kürzeren Code gut umgehen kann. Wenn ich mich irre, wenden Sie sich bitte an LART mich und ich werde meine Antwort ändern. :-)

Zmerch
quelle
4

PowerShell, 25 , 18 Byte

Vielen Dank an TessellatingHeckler, der mich daran erinnert hat, wie sehr PS die Pipeline liebt.

Neue 18 Bytes:

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

Alte 25 Bytes:

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

Erläuterung:

# 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

Testen (als boring.ps1 speichern):

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

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

Auf keinen Fall die beste Antwort, aber trotzdem viel Spaß!

ThePoShWolf
quelle
Wenn Sie die Variablen umgekehrt platzieren, wird der String von int * implizit in einen int umgewandelt, und Sie können 5 Byte Casting einsparen. process{$_*"$_$_"}beträgt 18 Bytes und wird von "stdin" (dh der Pipeline) eingegeben, z. B.174|script.ps1
TessellatingHeckler
Hmmm ... Interessanter Punkt. Ich kann sie auch mit derselben Struktur umschalten und das gleiche Ergebnis erzielen:param($a);$a*"$a$a"
ThePoShWolf
Ähm, ich nehme das zurück, meins ist ein Byte länger!
ThePoShWolf
@TessellatingHeckler Vorsicht bei dieser Antwort, da die REPL-Umgebung von PowerShell nicht für die Programm- oder Funktionsvorgabe geeignet ist . So etwas wie param($n)$n*"$n$n"(was Darth ohne hatte ;) ist gleich lang und keine REPL.
AdmBorkBork
@TimmyD warum zählt eine test.ps1Datei, die aus der Pipeline liest, nicht ? Zählt auch ein Bash-Shell-Skript, das aus stdin liest, nicht?
TessellatingHeckler
4

Batch, 27 20 18 Bytes

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

Bearbeiten: 7 Bytes dank @TessellatingHeckler gespeichert. Weitere 2 Bytes dank @ E 2Gᴏʟғᴇʀ gespeichert.

Neil
quelle
set /aAn der Eingabeaufforderung wird das Ergebnis der Zuweisung ausgegeben. -> @cmd/c set/a n=%1%1*%1für 22 Bytes.
TessellatingHeckler
@TessellatingHeckler Warum sich die Mühe machen zuzuweisen, wenn Sie ausgeben?
Neil
@TessellatingHeckler Huh, ich habe diesen Trick schon vor sechs Wochen selbst gemacht, und ich habe ihn bereits vergessen ..
Neil
@cmd/cset/a%1%1*%1für 18.
Erik der Outgolfer
1
@Neil Nein, aber ich habe es getestet (unter Windows 10!) Das cmd/cTeil wird benötigt, da das Batch-Datei-Ausführungs-Tool nicht cmd selbst ist.
Erik der Outgolfer