Sie haben kürzlich ein Konto auf einer zwielichtigen Glücksspiel-Website eingerichtet, auf der Sie gegen eine Gebühr von 25 US-Dollar einen zufälligen Betrag zwischen 0 und 50 US-Dollar zurückerhalten. Nachdem Sie zweimal ungefähr 5 Dollar erhalten haben, entscheiden Sie sich, zu beweisen, dass die Website ein Betrug ist. Nachdem Sie auf die externe Firewall mit dem Standardkennwort zugegriffen haben, finden Sie den Weg auf den Datenbankserver und den Speicherort für die Werte für die minimalen und maximalen Beträge. Sie beschließen, 25 '9's als Maximalwert einzustecken, erhalten jedoch eine Fehlermeldung, dass der Maximalwert vom Typ' uint64 'sein muss. Inzwischen stellen Sie jedoch fest, dass einige Zifferntasten nicht richtig in die Remote-Konsole eingegeben wurden. Die Herausforderung erscheint vor Ihnen, als ob Sie auf einer Q + A-Site getippt wären.
Verwenden Sie nur die komfortabel installierten Programme zum Testen und Ausführen Ihrer Sprache, und geben Sie die maximale Größe eines 64-Bit-Ganzzahlwerts ohne Vorzeichen aus. Auf diesem Computer ist jedoch fast alles außer den Programmiertools fehlerhaft, sodass Sie auf die Verwendung der Zahlen 1 verzichten müssen. 2,4,6,8 - Sowohl im Quellcode als auch in den Literalen stellen Sie außerdem fest, dass die Ausführung des Programms für jedes weitere Codestück exponentiell länger zu dauern scheint. Sie sollten es daher kurz halten, wenn Sie dies möchten will vor der Ziehung reich werden!
Die Herausforderung
Schreiben Sie ein Programm, das 18446744073709551615 ausgibt, den Maximalwert einer 64-Bit-Ganzzahl ohne Vorzeichen, entweder als Zahl oder als einzelne Zeichenfolge.
Ihr Quellcode darf keine der Zeichen "1", "2", "4", "6" oder "8" enthalten.
Wenn Ihre Sprache keine 64-Bit-Ganzzahl ohne Vorzeichen oder eine gleichwertige hat, kann die Ausgabe im Zeichenfolgenformat oder auf andere Weise erfolgen, muss jedoch die obige Zahl sein.
Das ist Code-Golf, also gewinnt der kürzeste Code in jeder Sprache!
Antworten:
Bienenwachs , 3 Bytes
Erläuterung:
Probieren Sie es online!
Diese Sprache ist perfekt für diese Herausforderung.
Hier ist ein Auszug aus der Esolang-Seite über Bienenwachs :
Dies ist im Grunde Longs ohne Vorzeichen.
EDIT: Ich erwarte immer noch, dass Dennis mich mit einer 2-Byte-Lösung übertrifft.
quelle
C 26 Bytes
Gibt einen
unsigned long
Wert aus.Erfordert eine Größe von
long
64 Bit.quelle
print~0
.~0l
sollte arbeiten.sizeof(long) * CHAR_BIT == 64
. Eine vernünftige Annahme für Golf, aber es lohnt sich darauf hinzuweisen.CJam (4 Bytes)
Online-Demo
Dies berechnet 16 16 - 1 unter Verwendung von builtin
G
for 16 und des Dekrementierungsoperators(
.quelle
64-Bit-SBCL Common Lisp, 18 Byte
most-positive-word
Das positivste Wort im 64-Bit-Compiler ist 64uint. Es ist etwas.
quelle
Python3 REPL, 12 Bytes
In REPL:
~-(~-3<<9*7)
Außerhalb von REPL:
print~-(~-3<<9*7)
<-> Python2!Hier ist ein weiteres mit 17 Bytes:
~-(~-3<<ord("?"))
.Erläuterung
Nichts super schickes. Hier ist es aufgeschlüsselt:
Der resultierende Ausdruck ist ungefähr (aber nicht ganz)
~-(2<<63)
->(2**64)-1
. Ich benutze den Kaulquappenoperator hier zweimal. Ein Golftipp dazu ist hier .Es gibt auch
sys.maxint
Python2, das verwendet werden kann, aber das werde ich nicht betrachten.repl.it <- Testlink .
quelle
~-(~
Teil die Augen der ersten Katze? Ich kann die zweite Katze nicht gut sehen ...bc,
fünfzehn13 Bytes2 Bytes dank Handarbeit gespart.
Nichts Besonderes, nur (16 ^ 16) -1.
quelle
(a=9+7)^a-3/3
Gleichstrom , 7 Bytes
Ich denke, es ist für stapelbasierte Sprachen erlaubt, die Antwort in der obersten Zelle des Stapels zu belassen, ähnlich einem Rückgabewert für Funktionen. Wenn explizites Drucken erforderlich ist, fügen Sie
p
am Ende des Codes hinzu.Probieren Sie es online!
Es berechnet (2 64 - 1) mit mehreren Tricks:
2
wird als die Anzahl der Ziffern (Z
) angegeben, die in Ganzzahl 10 (A
) gefunden wurden64
ist gegeben als5E
. Standardmäßig verwendet DC 10 als Eingabe-Radix. Trotzdem kann es Zahlen in hexadezimaler Schreibweise akzeptieren, aber sie werden anders konvertiert als erwartet. Beispiel: (5E) Standard = (5E) (Eingaberadix = 10) = (5 * 10 1 ) + (14 (E) * 10 0 ) = 50 + 14 = 641
wird als Tiefe des Stapels angegeben (z
), da damals nur (2 64 ) vorhanden warAlternative Geschichte:
Lösung in dc: computing (16 16 - 1), noch 7 Bytes!
Probieren Sie es online!
quelle
Gelee , 4 Bytes
Probieren Sie es online!
Erläuterung
quelle
05AB1E , 4 Bytes
Erläuterung:
Endlich! Eine Chance, die
05AB1E
eingebauten Funktionen für Zweierpotenzen zu nutzen !Probieren Sie es online!
Eine weitere 4-Byte-Antwort:
Erläuterung:
Probieren Sie es online!
(Wenn sich jemand wundert, ist diese Frage älter als alle anderen 4-Byte-Antworten.)
quelle
64o<
aber ich habe sie noch nicht gefunden. Etwas wie'@Ço<
mit einem kreativen 64-Push ... Wenn Sie es schaffen, 64 mit 1 Byte zu pushen, können Sie 3 bekommen, das ist der Punkt, den ich versuche zu machen.MATLAB / Octave, 5 Bytes
@Sanchises hat eine exzellente MATLAB-Antwort gepostet, dies ist jedoch ein ganz anderer Ansatz, daher werde ich es trotzdem posten:
Gibt in MATLAB
tic
die Anzahl der Millisekunden seit dem Öffnen des Programms zurück. Entscheidend ist, dass der zurückgegebene Wert einuint64
Typ ist. Dadurch müssen Sie keine Zahl inuint64
den Standardtyp von MATLAB übertragendouble
.Jede Zahl, die in MATLAB durch 0 geteilt wird, wird als unendlich betrachtet. Bei Nicht-Gleitkommatypen repräsentiert MATLAB dies als den maximalen ganzzahligen Wert für diesen Typ.
Dies funktioniert auch mit Octave. Je nachdem, welchen Interpreter Sie verwenden, wird möglicherweise auch eine Warnung "Division durch Null" ausgegeben. Sie können den Code hier online ausprobieren, da ich sage, dass Sie eine / 0-Warnung erhalten, die in MATLAB nicht angezeigt wird.
quelle
tic==0
beim Start 😉)bc ,
1816 Bytesquelle
-3/3
bekommen-1
?PHP, 16 Bytes
Dies ähnelt der Antwort von Ven: https://codegolf.stackexchange.com/a/110751/38505
https://repl.it/Frcy/0
quelle
bash
zu:printf %u $[~0]
.~0
ist-1
, das ist ,1111111111111111111111111111111111111111111111111111111111111111
in binär, in 64 Bits, im Vergleich zu11111111111111111111111111111111
in 32-Bit, und die Zahlen sind plataform abhängig.MATLAB / Octave, 22 Bytes
Probieren Sie es online!
eye
wird verwendet, um eine Einheitsmatrix zu erstellen (Matrix mit1
auf der Diagonale, sonst Null). Ohne Argumente wird eine1x1
Einheitsmatrix erstellt, oder mit anderen Worten, nur eine1
. Ein optionales Argument ist der Datentyp ('class' in der MATLAB-Terminologie) der erstellten Matrix. Wir fragen also nach a1
von classuint64
und dividieren es durch Null, was zuInf
MATLAB führt, das abgeschnitten wirdintmax('uint64')
.Der Vektor wird zu
['~rw}?='-9 '']
ausgewertet'uint64'
. Die Verkettung eines leeren Zeichens mit einem Vektor ist 1 Byte kürzer als die Verwendungchar('~rw}?='-9)
.Argumentation für diese Antwort: Die integrierte Funktion
intmax
wertet leider maximal eine 32-Bit-Ganzzahl mit Vorzeichen aus. Die naheliegende nächste Option istuint64()
, die die verbotenen Zeichen enthält. Die Alternative besteht darin, eine Funktion zu verwenden, die eine Zeichenfolge als Datentyp verwendet. Offensichtliche Kandidaten sindintmax
undcast
, aber Alternativen sindzeros
,ones
undeye
.Hinweis: MATLAB wird standardmäßig auf praktisch allen zwielichtigen Glücksspielseiten installiert.
quelle
JavaScript,
39383332 BytesBearbeiten: 5 Bytes dank @Arnauld gespeichert.
quelle
Java 8, 30 Bytes
Online testen
quelle
1846
.BF, 108 Bytes
Wenn jeder Befehl als 3 Bits betrachtet wird, sind dies möglicherweise 41 Bytes.
quelle
+-<>[].,
Retina ,
2827 BytesDank Kritixi Lithos 1 Byte gespart
Probieren Sie es online!
Erläuterung
Ersetzt die nicht vorhandene / leere Eingabe durch diese Zeichenfolge. Diese bestimmte Zeichenfolge wurde durch die "Inverse" dieses Programms generiert. Es kodiert jeweils
a
durchj
als0
durch9
.Dies ist eine
T
Ransliterationsphase. Diel
undd
sind Zeichensätze, die für die Transliteration verwendet werden.l
Stellt das Kleinbuchstaben dar,d
besteht aus allen Ziffern. Also, es kartiertabcdefghij
zurück zu0123456789
.quelle
d
stattdessen verwendetEO
)C ++, 46 Bytes.
Ich mache zum ersten Mal Codegolf, bin aber ziemlich zufrieden mit mir. Nehmen gerne kritik / vorschläge entgegen :)
quelle
Brain-Flak ,
64, 62, 58, 54 BytesProbieren Sie es online!
[Online ausprobieren!]
Vier Bytes gespart dank @Riley!
Erläuterung:
Für den Datensatz habe ich versucht, 32 zu pushen und zu vervierfachen, aber es ist die gleiche Byteanzahl.
quelle
()
s von 64 verwenden, um den 1:((((((())()()()){}){}){}){})
((((((())()()()){}){}){}){}[()]){({}<(({}){}())>[()])}{}
((((((<>)()()()()){}){}){}){}){({}<(({}){}())>[()])}{}
N*2+1
anstatt(N+1)*2-1
?C # 6, 31 Bytes
So ziemlich das gleiche wie Java.
C # 5, 56 Bytes
quelle
Func<ulong>
als kompilieren können :()=>~0UL;
Func<int, ulong>
, um ein Byte zu kompilieren :_=>~0UL;
und ich denke, es wäre immer noch gültig.Viertens (gviertens),
1197 BytesProbieren Sie es online aus
true
ist das gleiche wie-1
.U.
Gibt eine Zahl als vorzeichenlose Ganzzahl aus.Dies funktioniert auf TIO, möglicherweise, weil es eine 64-Bit-Architektur hat? Ich bin mir nicht sicher. Wenn ich
-1 U.
zum Beispiel auf repl.it laufe, erhalte ich 2 ** 32-1. Wenn repl.it Ganzzahlen mit doppelter Länge unterstützt, würde die AusgabeUD.
stattdessen verwendet.quelle
-3 3 / U.
true U.
(was auch gut rhythmisiert)true
, weil ich so gewohnt bin zu verwenden0
und1
. Vielen Dank.Python3 REPL, 11 Bytes
Wie es funktioniert
quelle
PowerShell ,
2914 BytesProbieren Sie es online!
Vielen Dank an @ n0rd, dass Sie im Wesentlichen die Hälfte davon gespielt haben.
Dies nutzt den eingebauten unären
PB
Operator, der im Grunde genommen als "Multiplikation der vorhergehenden Zahl mit1125899906842624
" fungiert (dh wie viele Bytes in einem Pebibyte sind). Das ist , mit der Hex - gekoppelt0xC000
, oder49152
, so49152 pebibytes
. Wir dividieren das durch3
, geben nach18446744073709551616
und subtrahieren3/3
, um den endgültigen Wert zu erhalten.quelle
"0x$(7-3)000PB-9/9"|iex
0xC000PB/3-3/3
PB
wenn man das so benutzt. Vielen Dank!JavaScript (ES6), 50 Byte
quelle
'䠎ᴐIF╏ɧ'
und entfernen-27
x64-Assembly, 7 Byte
Sechskant (zusammengebaut): 4831C048FFC8C3
zerlegt, kommentiert:
XOR RAX,RAX ;Zero the value of 64 bit register RAX DEC RAX ;Decrement the value of RAX RET ;Return this value
RAX ist ein 64-Bit-Register und wird am häufigsten verwendet, um Ganzzahlargumente (z. B. C) zurückzugeben. Durch Verringern von 1 wird der Wert von 0 auf ... 2 ^ 64-1 verschoben, was genau erforderlich ist.
Die assemblierte Binärdatei enthält zwar Einsen, Vierern und Achtern, die Assembly jedoch nicht, aber die assemblierte Datei wird in der Assembly gezählt. Zählt sie also? Au, mein Kopf.
Die Ausgabe ist in diesem Fall auch der Rückgabewert.
quelle
Brain-Flak ,
223193 BytesEnthält +1 für
-A
-30 dank DJMcMayhem
Probieren Sie es online!
Dies hat nur die ASCII-Werte von gepusht und wird als Zeichen gedruckt.
Als Referenz werden 338 Bytes benötigt, um die tatsächliche Zahl mit dem Integer- Metagolfspieler zu generieren .
Probieren Sie es online!
quelle
[]
. Zum Beispiel:((((((((((((((((((((((((()()()){}){}()){}){}())[()()()()])[][]())[[]()()])[]))()()()())[[]()()])[][()])[()()()()])()()()())[(()()()){}()])()()()()))()()())[()])[()()]))()()()())[(()()()){}()])
(Möglicherweise fehlt mir mehr)-A
da Standard - Aufruf bereits enthält-f
, so ist es nur eine off zu tun ,-fA
anstatt[]
nachgedacht, dass ich mir das ansehen werde, wenn ich eine Chance bekomme. Vielen Dank.MATL, 8 Bytes
Dies könnte wahrscheinlich verbessert werden, aber ich bin noch nicht mit Zeichenfolgen und Typen in MATL vertraut.
Probieren Sie es bei matl.suever.net
Erläuterung:
quelle
cast
wurde verwendet, aber es macht Sinn, wenntypecast
verwendet wird. Danke, dass Sie das geklärt haben.Javascript 55 Bytes
Der Code generiert und alarmiert dann die Zeichenfolge 18446744073709551615 mit bitweisen Operationen
590300 >> 5 18446
59530-3 >> 3 7440
7370955
3 * 59 * 73 >> 3 1615
quelle
2588673709551615
für mich ...alert(0xafebff0+'7370955'+(3*59*73>>3))
funktioniert gutSchnell, 8 Bytes
Außenspielplatz / Repl - 15 Bytes
quelle
TI-Basic, 10 Bytes
quelle