Aufgabe - Der Titel bringt es auf den Punkt: Erhöhe eine ganze Zahl x , um x zu setzen , wo 0<x
.
Beschränkungen:
- Verwenden von Potenzierung
exp()
,ln()
und alle anderen Kräfte bezogene Sprache Einbauten, wiepow()
,x^x
,x**x
ist verboten. - Sie können davon ausgehen, dass die angegebene Ganzzahl den Grenzen der Programmiersprache Ihrer Wahl entspricht.
Testfälle:
Input | Output
---------------
2 | 4
3 | 27
5 | 3125
6 | 46656
10 | 10000000000
Das ist Code-Golf , also gewinnt das kürzeste Programm in Bytes.
code-golf
math
arithmetic
Zottelig
quelle
quelle
0
und dass die erwartete Ausgabe spezifiziert wird (0
oder1
oder beides). Schließlich wäre der Umgang mit negativen ganzen Zahlen eine schöne Ergänzung der Herausforderung.1
für zurückgibt0^0
. AllerdingsFoundation
+ Swift liefert 00
und stattdessen0<x
im Lead-In angegeben. Ich habe auch die Einschränkung entfernt, dass Code keine Fehler auslösen darf. das sollte selbstverständlich sein. Gerne können Sie bei Bedarf einen Rollback durchführen.Antworten:
APL (Dyalog) , 4 Bytes
Für x x wird x als linkes Argument und x als rechtes Argument verwendet.
Probieren Sie alle Fälle online aus!
×/
Produkt von⍴⍨
arg kopiert argUnd hier ist eine, die auch negative ganze Zahlen behandelt:
Versuche alle Fälle!
×/
das Produkt von|
Absolutwert⍴
r epetitions von|
der absolute Wert*
hoch×
das signumDas eingebaute Power-Grundelement ist:
quelle
Python , 25 Bytes
Probieren Sie es online!
quelle
Mathematica, 16 Bytes
Bei dieser Anzahl von Bytes habe ich zwei Lösungen:
Hier
#~Table~#
wird eine Liste vonn
Kopien von erstelltn
. Dann wird derList
Kopf ersetzt,1##&
wodurch alle Argumente miteinander multipliziert werden.Dieser speichert einfach die Eingabe in
n
und dann vervielfacht1
durchn
,n
mal.quelle
#~Product~{#}&
JavaScript (ES6),
33282524 ByteVersuch es
Geschichte
25 Bytes
28 Bytes
33 Bytes
quelle
Pure Bash, 43
Probieren Sie es online aus .
Ich bin mir nicht sicher, ob dies die Regeln zu sehr verbiegt - ich verwende keines der aufgelisteten verbotenen Buildins, aber ich verwende die Basiskonvertierung.
printf 1%0$1d
gibt a1
gefolgt von n0
s aus$[b#a]
ist eine arithmetische Erweiterung, diea
als Basiszahl zu behandeln ist undb
das erforderliche Ergebnis liefert. Leider funktioniert base <2 nicht, daher behandeln die zusätzlichen?:
Bits den Eingang n = 1.Die maximale Eingabe beträgt 15, da in der Bash vorzeichenbehaftete 64-Bit-Ganzzahlen (bis zu 2 31 -1) verwendet werden.
quelle
Alice , 13 Bytes
Probieren Sie es online!
Erläuterung
Dies ist ein Framework für Programme, die Dezimalzahlen lesen und schreiben und vollständig im Kardinalmodus arbeiten (also Programme für die meisten arithmetischen Probleme).
quelle
Standard ML , 42 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Gelee , 3 Bytes
Probieren Sie es online!
Wie?
quelle
F7 88 50
funktioniert wie vorgesehen.Cubix , 19 Bytes
Probieren Sie es online!
Schritt für Schritt
Erweitert sich auf einen Würfel mit Seitenlänge 2
I:1
Nimmt die Eingabe, dupliziert sie und drückt 1. Dies richtet den Stapel mit einem Zähler, Multiplikator und Ergebnis ein.*s;
Multipliziert die TOS, tauscht das Ergebnis mit der vorherigen und entfernt die vorherige.pu
Bring das Gegenstück zum TOS. Wende. Dies war früher ein Spurwechsel, musste aber ein Byte rasieren.|($
Dies wurde durchgeführt, um ein Byte zu speichern. Bei einem Treffer wird die Dekrementierung übersprungen. reflektiert, dekrementiert den Zähler und überspringt den No-Op-Wrapping um den Würfel.!vqW
Testen Sie den Zähler. Wenn dies der Fall ist, überspringen Sie die Umleitung, setzen Sie den Zähler auf BOS und wechseln Sie die Spur zurück auf den Multiplikator. Ansonsten umleiten.|sO@
Dies ist die Endsequenz, die vom Zählertest weitergeleitet wird. Geht an der horizontalen Spiegelung vorbei, tauscht die TOS aus und bringt das Ergebnis zur TOS, Ausgabe und Halt.quelle
R, 22 Bytes
liest
x
aus stdin.generiert eine Liste von
x
Kopien vonx
und berechnet dann das Produkt der Elemente dieser Liste. Wennx=0
, gibt dasrep
zurücknumeric(0)
, was ein numerischer Längenvektor ist0
, aber derprod
von diesem ist 1, also0^0=1
mit dieser Methode, die mit Rs eingebauter Exponentiation konsistent ist, ist das ziemlich ordentlich.Probieren Sie es online!
quelle
x86_64-Maschinensprache für Linux,
14 1110 ByteUm es online auszuprobieren! , kompilieren Sie das folgende C-Programm und führen Sie es aus.
quelle
Ruby,
20 bis18 Bytes-2 Bytes, weil sich die Spezifikation geändert hat und ich kein Exponentenargument mehr benötige.
Probieren Sie es online!
quelle
Gestapelt , 10 Bytes
Probieren Sie es online!
Potenzierung mit zwei Argumenten für dieselbe Größe:
Beides sind Funktionen. Wiederholt eine Funktion, die mit
1
dern
n
Zeit multipliziert wird .quelle
Scala ,
3226 BytesProbieren Sie es online! (Konvertierung zu lang im TIO hinzugefügt, damit es bei n = 10 nicht überläuft.)
quelle
05AB1E , 3 Bytes
Probieren Sie es online! oder Probieren Sie alle Beispiele aus
quelle
.D
. Zum ersten Mal habe ich es benutzt gesehen.Haskell ,
242321 BytesProbieren Sie es online!
quelle
f y=foldr1(*)$y<$[1..y]
ist ein Byte kürzer.product$y<$[1..y]
Japt , 4 Bytes
Probieren Sie es online!
Erläuterung
quelle
x86-Maschinencode (Linux), 18 Byte
Es erwartet eine C-Deklaration wie folgt
extern int XpowX(int)
.Zerlegt
quelle
Brachylog , 6 Bytes
Probieren Sie es online!
Erläuterung
quelle
CJam , 7 Bytes
Probieren Sie es online!
Erläuterung
quelle
Perl 6 , 13 Bytes
$_ xx $_
wird zu einer Liste von$_
Kopien von ausgewertet$_
($_
als Argument für die anonyme Funktion) und[*]
diese Liste dann durch Multiplikation reduziert.quelle
CJam , 6 Bytes
Probieren Sie es online!
quelle
Clojure, 22
:)
quelle
Röda , 17 Bytes
Probieren Sie es online!
Es handelt sich um eine anonyme Funktion, deren Eingabe vom Stream stammt.
Erläuterung:
quelle
dc,
24232622 bytesThis is my first attempt writing a recursive macro in dc. I am sure it is a sub-optimal solution which can be improved a lot.
Try it online!
Edit: Thanks eush77! -4 bytes.
quelle
x=1
.lr
sequences at the end with twod
s at the beginning.x
copies ofx
on the stack (and1
of course), andx
multiplications thereafter. So the ending can just be plaindsFxp
.lr
hier nicht funktionieren würde. Es ist mein erstes Mal, dass ich in einer Stack-basierten Sprache Golf spiele. Es fühlt sich also sehr ungewöhnlich an. Danke für Ihre Hilfe!Batch, 58 Bytes
Funktioniert aufgrund der 32-Bit-Arithmetik nur für einstellige Eingaben.
quelle
Brainf * ck , 148 Bytes
Probieren Sie es online!
Keine eingebauten;)
Wie es funktioniert
Kurz gesagt, dies funktioniert durch Multiplizieren
x
(der Eingabe) mit sich selbstx
. (auch bekannt als iterating iterated addition). Das Nettoergebnis ist x ^ x.I / O
Das Programm nimmt eine einzelne ASCII-Eingabe und verarbeitet sie als ASCII-Index minus 48 . Das Minus 48 dient zum Normalisieren der Eingaben von tatsächlichen Zahlen (
4
wird zu52
->52-48
->4
). Verwenden Sie zur Eingabe einer höheren Zahl als 9 das nächste entsprechende ASCII-Zeichen (:
->58-48
->10
). Das Programm wird auf ähnliche Weise ausgegeben.Test I / O
Since there are no printable ASCII characters after an input of 3, it can only print numbers in theory. Though, you can check all inputs do in fact work on visualizers such as this.
quelle
MATLAB/Octave, 23 bytes
quelle
Python, 32 bytes
Try it online!
quelle
f=
part, so you can shorten your submission to 30 bytes.f=
part does need to be counted, because it's recursive, so it relies upon the function being namedf
in order to work properlyCommon Lisp,
59 4240 bytesTry it online!
quelle